diff options
author | Anand Kumar Santhanam <AnandKumar.Santhanam@pmcs.com> | 2013-09-03 05:39:42 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-10-25 04:58:13 -0400 |
commit | a9a923e55ede94ddbf5b870b0f057da8b7cee1b9 (patch) | |
tree | e28a63a9868404cfd830a7d6448c00dc27740b69 /drivers/scsi/pm8001/pm80xx_hwi.c | |
parent | c712495e687e221b00bddae96247dbf6ffbc6200 (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.c | 25 |
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 = |