aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/pm8001/pm80xx_hwi.c
diff options
context:
space:
mode:
authorAnand Kumar Santhanam <AnandKumar.Santhanam@pmcs.com>2013-09-03 05:39:42 -0400
committerJames Bottomley <JBottomley@Parallels.com>2013-10-25 04:58:13 -0400
commita9a923e55ede94ddbf5b870b0f057da8b7cee1b9 (patch)
treee28a63a9868404cfd830a7d6448c00dc27740b69 /drivers/scsi/pm8001/pm80xx_hwi.c
parentc712495e687e221b00bddae96247dbf6ffbc6200 (diff)
[SCSI] pm80xx: Device id changes to support series 8 controllers.
Updated pci id table with device, vendor, subdevice and subvendor ids for 8074, 8076, 8077 SAS/SATA 12G controllers. Added 12G related macros. Signed-off-by: Anandkumar.Santhanam@pmcs.com Reviewed-by: Jack Wang <jinpu.wang@profitbricks.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/pm8001/pm80xx_hwi.c')
-rw-r--r--drivers/scsi/pm8001/pm80xx_hwi.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index 9f91030211e8..6f836d18f269 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -430,7 +430,11 @@ static int mpi_init_check(struct pm8001_hba_info *pm8001_ha)
430 table is updated */ 430 table is updated */
431 pm8001_cw32(pm8001_ha, 0, MSGU_IBDB_SET, SPCv_MSGU_CFG_TABLE_UPDATE); 431 pm8001_cw32(pm8001_ha, 0, MSGU_IBDB_SET, SPCv_MSGU_CFG_TABLE_UPDATE);
432 /* wait until Inbound DoorBell Clear Register toggled */ 432 /* wait until Inbound DoorBell Clear Register toggled */
433 max_wait_count = 2 * 1000 * 1000;/* 2 sec for spcv/ve */ 433 if (IS_SPCV_12G(pm8001_ha->pdev)) {
434 max_wait_count = 4 * 1000 * 1000;/* 4 sec */
435 } else {
436 max_wait_count = 2 * 1000 * 1000;/* 2 sec */
437 }
434 do { 438 do {
435 udelay(1); 439 udelay(1);
436 value = pm8001_cr32(pm8001_ha, 0, MSGU_IBDB_SET); 440 value = pm8001_cr32(pm8001_ha, 0, MSGU_IBDB_SET);
@@ -913,7 +917,11 @@ static int mpi_uninit_check(struct pm8001_hba_info *pm8001_ha)
913 pm8001_cw32(pm8001_ha, 0, MSGU_IBDB_SET, SPCv_MSGU_CFG_TABLE_RESET); 917 pm8001_cw32(pm8001_ha, 0, MSGU_IBDB_SET, SPCv_MSGU_CFG_TABLE_RESET);
914 918
915 /* wait until Inbound DoorBell Clear Register toggled */ 919 /* wait until Inbound DoorBell Clear Register toggled */
916 max_wait_count = 2 * 1000 * 1000; /* 2 sec for spcv/ve */ 920 if (IS_SPCV_12G(pm8001_ha->pdev)) {
921 max_wait_count = 4 * 1000 * 1000;/* 4 sec */
922 } else {
923 max_wait_count = 2 * 1000 * 1000;/* 2 sec */
924 }
917 do { 925 do {
918 udelay(1); 926 udelay(1);
919 value = pm8001_cr32(pm8001_ha, 0, MSGU_IBDB_SET); 927 value = pm8001_cr32(pm8001_ha, 0, MSGU_IBDB_SET);
@@ -3941,9 +3949,16 @@ pm80xx_chip_phy_start_req(struct pm8001_hba_info *pm8001_ha, u8 phy_id)
3941 ** [14] 0b disable spin up hold; 1b enable spin up hold 3949 ** [14] 0b disable spin up hold; 1b enable spin up hold
3942 ** [15] ob no change in current PHY analig setup 1b enable using SPAST 3950 ** [15] ob no change in current PHY analig setup 1b enable using SPAST
3943 */ 3951 */
3944 payload.ase_sh_lm_slr_phyid = cpu_to_le32(SPINHOLD_DISABLE | 3952 if (!IS_SPCV_12G(pm8001_ha->pdev))
3945 LINKMODE_AUTO | LINKRATE_15 | 3953 payload.ase_sh_lm_slr_phyid = cpu_to_le32(SPINHOLD_DISABLE |
3946 LINKRATE_30 | LINKRATE_60 | phy_id); 3954 LINKMODE_AUTO | LINKRATE_15 |
3955 LINKRATE_30 | LINKRATE_60 | phy_id);
3956 else
3957 payload.ase_sh_lm_slr_phyid = cpu_to_le32(SPINHOLD_DISABLE |
3958 LINKMODE_AUTO | LINKRATE_15 |
3959 LINKRATE_30 | LINKRATE_60 | LINKRATE_120 |
3960 phy_id);
3961
3947 /* SSC Disable and SAS Analog ST configuration */ 3962 /* SSC Disable and SAS Analog ST configuration */
3948 /** 3963 /**
3949 payload.ase_sh_lm_slr_phyid = 3964 payload.ase_sh_lm_slr_phyid =