diff options
author | Xiangliang Yu <yuxiangl@marvell.com> | 2011-05-24 10:38:10 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-07-26 02:39:09 -0400 |
commit | e144f7ef49ec85e9dfdf130f3a9a2372fe5fe39b (patch) | |
tree | 1500ee564c2ca4f230afa548bbb023b91ffd88fb /drivers/scsi/mvsas | |
parent | 84fbd0cea11b80d7b7097343d5262004d42b8a9a (diff) |
[SCSI] mvsas: update comments
Remove obsolete comments and add new comments
Signed-off-by: Xiangliang Yu <yuxiangl@marvell.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/mvsas')
-rw-r--r-- | drivers/scsi/mvsas/mv_64xx.c | 17 | ||||
-rw-r--r-- | drivers/scsi/mvsas/mv_94xx.c | 19 | ||||
-rw-r--r-- | drivers/scsi/mvsas/mv_94xx.h | 24 | ||||
-rw-r--r-- | drivers/scsi/mvsas/mv_chips.h | 2 | ||||
-rw-r--r-- | drivers/scsi/mvsas/mv_defs.h | 2 | ||||
-rw-r--r-- | drivers/scsi/mvsas/mv_init.c | 1 | ||||
-rw-r--r-- | drivers/scsi/mvsas/mv_sas.c | 14 |
7 files changed, 24 insertions, 55 deletions
diff --git a/drivers/scsi/mvsas/mv_64xx.c b/drivers/scsi/mvsas/mv_64xx.c index bc75ba7488d8..dec5f96f47a0 100644 --- a/drivers/scsi/mvsas/mv_64xx.c +++ b/drivers/scsi/mvsas/mv_64xx.c | |||
@@ -33,7 +33,6 @@ static void mvs_64xx_detect_porttype(struct mvs_info *mvi, int i) | |||
33 | u32 reg; | 33 | u32 reg; |
34 | struct mvs_phy *phy = &mvi->phy[i]; | 34 | struct mvs_phy *phy = &mvi->phy[i]; |
35 | 35 | ||
36 | /* TODO check & save device type */ | ||
37 | reg = mr32(MVS_GBL_PORT_TYPE); | 36 | reg = mr32(MVS_GBL_PORT_TYPE); |
38 | phy->phy_type &= ~(PORT_TYPE_SAS | PORT_TYPE_SATA); | 37 | phy->phy_type &= ~(PORT_TYPE_SAS | PORT_TYPE_SATA); |
39 | if (reg & MODE_SAS_SATA & (1 << i)) | 38 | if (reg & MODE_SAS_SATA & (1 << i)) |
@@ -63,7 +62,6 @@ static void __devinit mvs_64xx_phy_hacks(struct mvs_info *mvi) | |||
63 | mvs_phy_hacks(mvi); | 62 | mvs_phy_hacks(mvi); |
64 | 63 | ||
65 | if (!(mvi->flags & MVF_FLAG_SOC)) { | 64 | if (!(mvi->flags & MVF_FLAG_SOC)) { |
66 | /* TEST - for phy decoding error, adjust voltage levels */ | ||
67 | for (i = 0; i < MVS_SOC_PORTS; i++) { | 65 | for (i = 0; i < MVS_SOC_PORTS; i++) { |
68 | mvs_write_port_vsr_addr(mvi, i, VSR_PHY_MODE8); | 66 | mvs_write_port_vsr_addr(mvi, i, VSR_PHY_MODE8); |
69 | mvs_write_port_vsr_data(mvi, i, 0x2F0); | 67 | mvs_write_port_vsr_data(mvi, i, 0x2F0); |
@@ -375,13 +373,7 @@ static int __devinit mvs_64xx_init(struct mvs_info *mvi) | |||
375 | mvs_update_phyinfo(mvi, i, 1); | 373 | mvs_update_phyinfo(mvi, i, 1); |
376 | } | 374 | } |
377 | 375 | ||
378 | /* FIXME: update wide port bitmaps */ | ||
379 | |||
380 | /* little endian for open address and command table, etc. */ | 376 | /* little endian for open address and command table, etc. */ |
381 | /* | ||
382 | * it seems that ( from the spec ) turning on big-endian won't | ||
383 | * do us any good on big-endian machines, need further confirmation | ||
384 | */ | ||
385 | cctl = mr32(MVS_CTL); | 377 | cctl = mr32(MVS_CTL); |
386 | cctl |= CCTL_ENDIAN_CMD; | 378 | cctl |= CCTL_ENDIAN_CMD; |
387 | cctl |= CCTL_ENDIAN_DATA; | 379 | cctl |= CCTL_ENDIAN_DATA; |
@@ -394,8 +386,8 @@ static int __devinit mvs_64xx_init(struct mvs_info *mvi) | |||
394 | tmp |= PCS_CMD_RST; | 386 | tmp |= PCS_CMD_RST; |
395 | tmp &= ~PCS_SELF_CLEAR; | 387 | tmp &= ~PCS_SELF_CLEAR; |
396 | mw32(MVS_PCS, tmp); | 388 | mw32(MVS_PCS, tmp); |
397 | /* interrupt coalescing may cause missing HW interrput in some case, | 389 | /* |
398 | * and the max count is 0x1ff, while our max slot is 0x200, | 390 | * the max count is 0x1ff, while our max slot is 0x200, |
399 | * it will make count 0. | 391 | * it will make count 0. |
400 | */ | 392 | */ |
401 | tmp = 0; | 393 | tmp = 0; |
@@ -632,7 +624,6 @@ static void mvs_64xx_phy_work_around(struct mvs_info *mvi, int i) | |||
632 | { | 624 | { |
633 | u32 tmp; | 625 | u32 tmp; |
634 | struct mvs_phy *phy = &mvi->phy[i]; | 626 | struct mvs_phy *phy = &mvi->phy[i]; |
635 | /* workaround for HW phy decoding error on 1.5g disk drive */ | ||
636 | mvs_write_port_vsr_addr(mvi, i, VSR_PHY_MODE6); | 627 | mvs_write_port_vsr_addr(mvi, i, VSR_PHY_MODE6); |
637 | tmp = mvs_read_port_vsr_data(mvi, i); | 628 | tmp = mvs_read_port_vsr_data(mvi, i); |
638 | if (((phy->phy_status & PHY_NEG_SPP_PHYS_LINK_RATE_MASK) >> | 629 | if (((phy->phy_status & PHY_NEG_SPP_PHYS_LINK_RATE_MASK) >> |
@@ -765,8 +756,8 @@ static void mvs_64xx_tune_interrupt(struct mvs_info *mvi, u32 time) | |||
765 | { | 756 | { |
766 | void __iomem *regs = mvi->regs; | 757 | void __iomem *regs = mvi->regs; |
767 | u32 tmp = 0; | 758 | u32 tmp = 0; |
768 | /* interrupt coalescing may cause missing HW interrput in some case, | 759 | /* |
769 | * and the max count is 0x1ff, while our max slot is 0x200, | 760 | * the max count is 0x1ff, while our max slot is 0x200, |
770 | * it will make count 0. | 761 | * it will make count 0. |
771 | */ | 762 | */ |
772 | if (time == 0) { | 763 | if (time == 0) { |
diff --git a/drivers/scsi/mvsas/mv_94xx.c b/drivers/scsi/mvsas/mv_94xx.c index 1276e494b868..f4a995c29eb1 100644 --- a/drivers/scsi/mvsas/mv_94xx.c +++ b/drivers/scsi/mvsas/mv_94xx.c | |||
@@ -460,13 +460,7 @@ static int __devinit mvs_94xx_init(struct mvs_info *mvi) | |||
460 | mvs_update_phyinfo(mvi, i, 1); | 460 | mvs_update_phyinfo(mvi, i, 1); |
461 | } | 461 | } |
462 | 462 | ||
463 | /* FIXME: update wide port bitmaps */ | ||
464 | |||
465 | /* little endian for open address and command table, etc. */ | 463 | /* little endian for open address and command table, etc. */ |
466 | /* | ||
467 | * it seems that ( from the spec ) turning on big-endian won't | ||
468 | * do us any good on big-endian machines, need further confirmation | ||
469 | */ | ||
470 | cctl = mr32(MVS_CTL); | 464 | cctl = mr32(MVS_CTL); |
471 | cctl |= CCTL_ENDIAN_CMD; | 465 | cctl |= CCTL_ENDIAN_CMD; |
472 | cctl &= ~CCTL_ENDIAN_OPEN; | 466 | cctl &= ~CCTL_ENDIAN_OPEN; |
@@ -478,8 +472,8 @@ static int __devinit mvs_94xx_init(struct mvs_info *mvi) | |||
478 | tmp |= PCS_CMD_RST; | 472 | tmp |= PCS_CMD_RST; |
479 | tmp &= ~PCS_SELF_CLEAR; | 473 | tmp &= ~PCS_SELF_CLEAR; |
480 | mw32(MVS_PCS, tmp); | 474 | mw32(MVS_PCS, tmp); |
481 | /* interrupt coalescing may cause missing HW interrput in some case, | 475 | /* |
482 | * and the max count is 0x1ff, while our max slot is 0x200, | 476 | * the max count is 0x1ff, while our max slot is 0x200, |
483 | * it will make count 0. | 477 | * it will make count 0. |
484 | */ | 478 | */ |
485 | tmp = 0; | 479 | tmp = 0; |
@@ -488,6 +482,7 @@ static int __devinit mvs_94xx_init(struct mvs_info *mvi) | |||
488 | else | 482 | else |
489 | mw32(MVS_INT_COAL, MVS_CHIP_SLOT_SZ | COAL_EN); | 483 | mw32(MVS_INT_COAL, MVS_CHIP_SLOT_SZ | COAL_EN); |
490 | 484 | ||
485 | /* default interrupt coalescing time is 128us */ | ||
491 | tmp = 0x10000 | interrupt_coalescing; | 486 | tmp = 0x10000 | interrupt_coalescing; |
492 | mw32(MVS_INT_COAL_TMOUT, tmp); | 487 | mw32(MVS_INT_COAL_TMOUT, tmp); |
493 | 488 | ||
@@ -745,7 +740,7 @@ static int mvs_94xx_oob_done(struct mvs_info *mvi, int i) | |||
745 | { | 740 | { |
746 | u32 phy_st; | 741 | u32 phy_st; |
747 | phy_st = mvs_read_phy_ctl(mvi, i); | 742 | phy_st = mvs_read_phy_ctl(mvi, i); |
748 | if (phy_st & PHY_READY_MASK) /* phy ready */ | 743 | if (phy_st & PHY_READY_MASK) |
749 | return 1; | 744 | return 1; |
750 | return 0; | 745 | return 0; |
751 | } | 746 | } |
@@ -770,7 +765,6 @@ static void mvs_94xx_get_att_identify_frame(struct mvs_info *mvi, int port_id, | |||
770 | int i; | 765 | int i; |
771 | u32 id_frame[7]; | 766 | u32 id_frame[7]; |
772 | 767 | ||
773 | /* mvs_hexdump(28, (u8 *)id_frame, 0); */ | ||
774 | for (i = 0; i < 7; i++) { | 768 | for (i = 0; i < 7; i++) { |
775 | mvs_write_port_cfg_addr(mvi, port_id, | 769 | mvs_write_port_cfg_addr(mvi, port_id, |
776 | CONFIG_ATT_ID_FRAME0 + i * 4); | 770 | CONFIG_ATT_ID_FRAME0 + i * 4); |
@@ -778,7 +772,6 @@ static void mvs_94xx_get_att_identify_frame(struct mvs_info *mvi, int port_id, | |||
778 | mv_dprintk("94xx phy %d atta frame %d %x.\n", | 772 | mv_dprintk("94xx phy %d atta frame %d %x.\n", |
779 | port_id + mvi->id * mvi->chip->n_phy, i, id_frame[i]); | 773 | port_id + mvi->id * mvi->chip->n_phy, i, id_frame[i]); |
780 | } | 774 | } |
781 | /* mvs_hexdump(28, (u8 *)id_frame, 0); */ | ||
782 | memcpy(id, id_frame, 28); | 775 | memcpy(id, id_frame, 28); |
783 | } | 776 | } |
784 | 777 | ||
@@ -962,8 +955,8 @@ static void mvs_94xx_tune_interrupt(struct mvs_info *mvi, u32 time) | |||
962 | { | 955 | { |
963 | void __iomem *regs = mvi->regs; | 956 | void __iomem *regs = mvi->regs; |
964 | u32 tmp = 0; | 957 | u32 tmp = 0; |
965 | /* interrupt coalescing may cause missing HW interrput in some case, | 958 | /* |
966 | * and the max count is 0x1ff, while our max slot is 0x200, | 959 | * the max count is 0x1ff, while our max slot is 0x200, |
967 | * it will make count 0. | 960 | * it will make count 0. |
968 | */ | 961 | */ |
969 | if (time == 0) { | 962 | if (time == 0) { |
diff --git a/drivers/scsi/mvsas/mv_94xx.h b/drivers/scsi/mvsas/mv_94xx.h index d8c12e057ae8..8f7eb4f21140 100644 --- a/drivers/scsi/mvsas/mv_94xx.h +++ b/drivers/scsi/mvsas/mv_94xx.h | |||
@@ -121,18 +121,18 @@ enum pci_cfg_registers { | |||
121 | 121 | ||
122 | /* SAS/SATA Vendor Specific Port Registers */ | 122 | /* SAS/SATA Vendor Specific Port Registers */ |
123 | enum sas_sata_vsp_regs { | 123 | enum sas_sata_vsp_regs { |
124 | VSR_PHY_STAT = 0x00 * 4, /* Phy Status */ | 124 | VSR_PHY_STAT = 0x00 * 4, /* Phy Interrupt Status */ |
125 | VSR_PHY_MODE1 = 0x01 * 4, /* phy tx */ | 125 | VSR_PHY_MODE1 = 0x01 * 4, /* phy Interrupt Enable */ |
126 | VSR_PHY_MODE2 = 0x02 * 4, /* tx scc */ | 126 | VSR_PHY_MODE2 = 0x02 * 4, /* Phy Configuration */ |
127 | VSR_PHY_MODE3 = 0x03 * 4, /* pll */ | 127 | VSR_PHY_MODE3 = 0x03 * 4, /* Phy Status */ |
128 | VSR_PHY_MODE4 = 0x04 * 4, /* VCO */ | 128 | VSR_PHY_MODE4 = 0x04 * 4, /* Phy Counter 0 */ |
129 | VSR_PHY_MODE5 = 0x05 * 4, /* Rx */ | 129 | VSR_PHY_MODE5 = 0x05 * 4, /* Phy Counter 1 */ |
130 | VSR_PHY_MODE6 = 0x06 * 4, /* CDR */ | 130 | VSR_PHY_MODE6 = 0x06 * 4, /* Event Counter Control */ |
131 | VSR_PHY_MODE7 = 0x07 * 4, /* Impedance */ | 131 | VSR_PHY_MODE7 = 0x07 * 4, /* Event Counter Select */ |
132 | VSR_PHY_MODE8 = 0x08 * 4, /* Voltage */ | 132 | VSR_PHY_MODE8 = 0x08 * 4, /* Event Counter 0 */ |
133 | VSR_PHY_MODE9 = 0x09 * 4, /* Test */ | 133 | VSR_PHY_MODE9 = 0x09 * 4, /* Event Counter 1 */ |
134 | VSR_PHY_MODE10 = 0x0A * 4, /* Power */ | 134 | VSR_PHY_MODE10 = 0x0A * 4, /* Event Counter 2 */ |
135 | VSR_PHY_MODE11 = 0x0B * 4, /* Phy Mode */ | 135 | VSR_PHY_MODE11 = 0x0B * 4, /* Event Counter 3 */ |
136 | VSR_PHY_ACT_LED = 0x0C * 4, /* Activity LED control */ | 136 | VSR_PHY_ACT_LED = 0x0C * 4, /* Activity LED control */ |
137 | 137 | ||
138 | VSR_PHY_FFE_CONTROL = 0x10C, | 138 | VSR_PHY_FFE_CONTROL = 0x10C, |
diff --git a/drivers/scsi/mvsas/mv_chips.h b/drivers/scsi/mvsas/mv_chips.h index 0a11bc7174ac..bcc408042cee 100644 --- a/drivers/scsi/mvsas/mv_chips.h +++ b/drivers/scsi/mvsas/mv_chips.h | |||
@@ -164,7 +164,6 @@ static inline void __devinit mvs_phy_hacks(struct mvs_info *mvi) | |||
164 | { | 164 | { |
165 | u32 tmp; | 165 | u32 tmp; |
166 | 166 | ||
167 | /* workaround for SATA R-ERR, to ignore phy glitch */ | ||
168 | tmp = mvs_cr32(mvi, CMD_PHY_TIMER); | 167 | tmp = mvs_cr32(mvi, CMD_PHY_TIMER); |
169 | tmp &= ~(1 << 9); | 168 | tmp &= ~(1 << 9); |
170 | tmp |= (1 << 10); | 169 | tmp |= (1 << 10); |
@@ -179,7 +178,6 @@ static inline void __devinit mvs_phy_hacks(struct mvs_info *mvi) | |||
179 | tmp |= 0x3fff; | 178 | tmp |= 0x3fff; |
180 | mvs_cw32(mvi, CMD_SAS_CTL0, tmp); | 179 | mvs_cw32(mvi, CMD_SAS_CTL0, tmp); |
181 | 180 | ||
182 | /* workaround for WDTIMEOUT , set to 550 ms */ | ||
183 | mvs_cw32(mvi, CMD_WD_TIMER, 0x7a0000); | 181 | mvs_cw32(mvi, CMD_WD_TIMER, 0x7a0000); |
184 | 182 | ||
185 | /* not to halt for different port op during wideport link change */ | 183 | /* not to halt for different port op during wideport link change */ |
diff --git a/drivers/scsi/mvsas/mv_defs.h b/drivers/scsi/mvsas/mv_defs.h index 1927e1bbb8eb..dec7cadb7485 100644 --- a/drivers/scsi/mvsas/mv_defs.h +++ b/drivers/scsi/mvsas/mv_defs.h | |||
@@ -160,7 +160,7 @@ enum hw_register_bits { | |||
160 | TXQ_CMD_SSP = 1, /* SSP protocol */ | 160 | TXQ_CMD_SSP = 1, /* SSP protocol */ |
161 | TXQ_CMD_SMP = 2, /* SMP protocol */ | 161 | TXQ_CMD_SMP = 2, /* SMP protocol */ |
162 | TXQ_CMD_STP = 3, /* STP/SATA protocol */ | 162 | TXQ_CMD_STP = 3, /* STP/SATA protocol */ |
163 | TXQ_CMD_SSP_FREE_LIST = 4, /* add to SSP targ free list */ | 163 | TXQ_CMD_SSP_FREE_LIST = 4, /* add to SSP target free list */ |
164 | TXQ_CMD_SLOT_RESET = 7, /* reset command slot */ | 164 | TXQ_CMD_SLOT_RESET = 7, /* reset command slot */ |
165 | TXQ_MODE_I = (1U << 28), /* mode: 0=target,1=initiator */ | 165 | TXQ_MODE_I = (1U << 28), /* mode: 0=target,1=initiator */ |
166 | TXQ_MODE_TARGET = 0, | 166 | TXQ_MODE_TARGET = 0, |
diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c index b28ee5bd7eeb..cf4aaa9db5fe 100644 --- a/drivers/scsi/mvsas/mv_init.c +++ b/drivers/scsi/mvsas/mv_init.c | |||
@@ -405,7 +405,6 @@ err_out: | |||
405 | return NULL; | 405 | return NULL; |
406 | } | 406 | } |
407 | 407 | ||
408 | /* move to PCI layer or libata core? */ | ||
409 | static int pci_go_64(struct pci_dev *pdev) | 408 | static int pci_go_64(struct pci_dev *pdev) |
410 | { | 409 | { |
411 | int rc; | 410 | int rc; |
diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c index 31ca8fe25cae..4958fefff365 100644 --- a/drivers/scsi/mvsas/mv_sas.c +++ b/drivers/scsi/mvsas/mv_sas.c | |||
@@ -102,7 +102,6 @@ struct mvs_info *mvs_find_dev_mvi(struct domain_device *dev) | |||
102 | 102 | ||
103 | } | 103 | } |
104 | 104 | ||
105 | /* FIXME */ | ||
106 | int mvs_find_dev_phyno(struct domain_device *dev, int *phyno) | 105 | int mvs_find_dev_phyno(struct domain_device *dev, int *phyno) |
107 | { | 106 | { |
108 | unsigned long i = 0, j = 0, n = 0, num = 0; | 107 | unsigned long i = 0, j = 0, n = 0, num = 0; |
@@ -177,7 +176,6 @@ void mvs_phys_reset(struct mvs_info *mvi, u32 phy_mask, int hard) | |||
177 | } | 176 | } |
178 | } | 177 | } |
179 | 178 | ||
180 | /* FIXME: locking? */ | ||
181 | int mvs_phy_control(struct asd_sas_phy *sas_phy, enum phy_func func, | 179 | int mvs_phy_control(struct asd_sas_phy *sas_phy, enum phy_func func, |
182 | void *funcdata) | 180 | void *funcdata) |
183 | { | 181 | { |
@@ -504,11 +502,8 @@ static int mvs_task_prep_ata(struct mvs_info *mvi, | |||
504 | flags |= MCH_ATAPI; | 502 | flags |= MCH_ATAPI; |
505 | } | 503 | } |
506 | 504 | ||
507 | /* FIXME: fill in port multiplier number */ | ||
508 | |||
509 | hdr->flags = cpu_to_le32(flags); | 505 | hdr->flags = cpu_to_le32(flags); |
510 | 506 | ||
511 | /* FIXME: the low order order 5 bits for the TAG if enable NCQ */ | ||
512 | if (task->ata_task.use_ncq && mvs_get_ncq_tag(task, &hdr_tag)) | 507 | if (task->ata_task.use_ncq && mvs_get_ncq_tag(task, &hdr_tag)) |
513 | task->ata_task.fis.sector_count |= (u8) (hdr_tag << 3); | 508 | task->ata_task.fis.sector_count |= (u8) (hdr_tag << 3); |
514 | else | 509 | else |
@@ -552,9 +547,6 @@ static int mvs_task_prep_ata(struct mvs_info *mvi, | |||
552 | buf_tmp_dma += i; | 547 | buf_tmp_dma += i; |
553 | 548 | ||
554 | /* region 4: status buffer (larger the PRD, smaller this buf) ****** */ | 549 | /* region 4: status buffer (larger the PRD, smaller this buf) ****** */ |
555 | /* FIXME: probably unused, for SATA. kept here just in case | ||
556 | * we get a STP/SATA error information record | ||
557 | */ | ||
558 | slot->response = buf_tmp; | 550 | slot->response = buf_tmp; |
559 | hdr->status_buf = cpu_to_le64(buf_tmp_dma); | 551 | hdr->status_buf = cpu_to_le64(buf_tmp_dma); |
560 | if (mvi->flags & MVF_FLAG_SOC) | 552 | if (mvi->flags & MVF_FLAG_SOC) |
@@ -1126,7 +1118,6 @@ static void *mvs_get_d2h_reg(struct mvs_info *mvi, int i, void *buf) | |||
1126 | MVS_CHIP_DISP->write_port_cfg_addr(mvi, i, PHYR_SATA_SIG0); | 1118 | MVS_CHIP_DISP->write_port_cfg_addr(mvi, i, PHYR_SATA_SIG0); |
1127 | s[0] = cpu_to_le32(MVS_CHIP_DISP->read_port_cfg_data(mvi, i)); | 1119 | s[0] = cpu_to_le32(MVS_CHIP_DISP->read_port_cfg_data(mvi, i)); |
1128 | 1120 | ||
1129 | /* Workaround: take some ATAPI devices for ATA */ | ||
1130 | if (((s[1] & 0x00FFFFFF) == 0x00EB1401) && (*(u8 *)&s[3] == 0x01)) | 1121 | if (((s[1] & 0x00FFFFFF) == 0x00EB1401) && (*(u8 *)&s[3] == 0x01)) |
1131 | s[1] = 0x00EB1401 | (*((u8 *)&s[1] + 3) & 0x10); | 1122 | s[1] = 0x00EB1401 | (*((u8 *)&s[1] + 3) & 0x10); |
1132 | 1123 | ||
@@ -1433,7 +1424,6 @@ static void mvs_tmf_timedout(unsigned long data) | |||
1433 | complete(&task->completion); | 1424 | complete(&task->completion); |
1434 | } | 1425 | } |
1435 | 1426 | ||
1436 | /* XXX */ | ||
1437 | #define MVS_TASK_TIMEOUT 20 | 1427 | #define MVS_TASK_TIMEOUT 20 |
1438 | static int mvs_exec_internal_tmf_task(struct domain_device *dev, | 1428 | static int mvs_exec_internal_tmf_task(struct domain_device *dev, |
1439 | void *parameter, u32 para_len, struct mvs_tmf_task *tmf) | 1429 | void *parameter, u32 para_len, struct mvs_tmf_task *tmf) |
@@ -1577,7 +1567,6 @@ int mvs_I_T_nexus_reset(struct domain_device *dev) | |||
1577 | mv_printk("%s for device[%x]:rc= %d\n", | 1567 | mv_printk("%s for device[%x]:rc= %d\n", |
1578 | __func__, mvi_dev->device_id, rc); | 1568 | __func__, mvi_dev->device_id, rc); |
1579 | 1569 | ||
1580 | /* housekeeper */ | ||
1581 | spin_lock_irqsave(&mvi->lock, flags); | 1570 | spin_lock_irqsave(&mvi->lock, flags); |
1582 | mvs_release_task(mvi, dev); | 1571 | mvs_release_task(mvi, dev); |
1583 | spin_unlock_irqrestore(&mvi->lock, flags); | 1572 | spin_unlock_irqrestore(&mvi->lock, flags); |
@@ -1681,7 +1670,6 @@ int mvs_abort_task(struct sas_task *task) | |||
1681 | 1670 | ||
1682 | } else if (task->task_proto & SAS_PROTOCOL_SATA || | 1671 | } else if (task->task_proto & SAS_PROTOCOL_SATA || |
1683 | task->task_proto & SAS_PROTOCOL_STP) { | 1672 | task->task_proto & SAS_PROTOCOL_STP) { |
1684 | /* to do free register_set */ | ||
1685 | if (SATA_DEV == dev->dev_type) { | 1673 | if (SATA_DEV == dev->dev_type) { |
1686 | struct mvs_slot_info *slot = task->lldd_task; | 1674 | struct mvs_slot_info *slot = task->lldd_task; |
1687 | u32 slot_idx = (u32)(slot - mvi->slot_info); | 1675 | u32 slot_idx = (u32)(slot - mvi->slot_info); |
@@ -1901,6 +1889,7 @@ int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc, u32 flags) | |||
1901 | return -1; | 1889 | return -1; |
1902 | } | 1890 | } |
1903 | 1891 | ||
1892 | /* when no device attaching, go ahead and complete by error handling*/ | ||
1904 | if (unlikely(!mvi_dev || flags)) { | 1893 | if (unlikely(!mvi_dev || flags)) { |
1905 | if (!mvi_dev) | 1894 | if (!mvi_dev) |
1906 | mv_dprintk("port has not device.\n"); | 1895 | mv_dprintk("port has not device.\n"); |
@@ -2017,7 +2006,6 @@ void mvs_release_task(struct mvs_info *mvi, | |||
2017 | struct domain_device *dev) | 2006 | struct domain_device *dev) |
2018 | { | 2007 | { |
2019 | int i, phyno[WIDE_PORT_MAX_PHY], num; | 2008 | int i, phyno[WIDE_PORT_MAX_PHY], num; |
2020 | /* housekeeper */ | ||
2021 | num = mvs_find_dev_phyno(dev, phyno); | 2009 | num = mvs_find_dev_phyno(dev, phyno); |
2022 | for (i = 0; i < num; i++) | 2010 | for (i = 0; i < num; i++) |
2023 | mvs_do_release_task(mvi, phyno[i], dev); | 2011 | mvs_do_release_task(mvi, phyno[i], dev); |