aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/init.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-03-11 13:43:57 -0500
committerDan Williams <dan.j.williams@intel.com>2011-07-03 06:55:31 -0400
commit4711ba10b13891edf228944a9d0a21dfe7fe90f0 (patch)
treec846eb029eb2bc827a614df963b00aa412b95956 /drivers/scsi/isci/init.c
parent2e8320f751030a12efc3e64ee857bfa4647f81fe (diff)
isci: fix oem parameter initialization and mode detection
1/ Since commit 858d4aa7 "isci: Move firmware loading to per PCI device" we have been silently falling back to built-in defaults for the parameter settings by skipping the call to scic_oem_parameters_set(). 2/ The afe parameters from the firmware were not being honored 3/ The latest oem parameter definition flips the mode_type values which are now 0: for APC 1: for MPC. For APC we need to make sure all the phys default to the same address otherwise strict_wide_ports will cause duplicate domains. 4/ Fix up the driver announcement to indicate the source of the parameters. 5/ Fix up the sas addresses to be unique per controller (in the fallback case) Signed-off-by: Dave Jiang <dave.jiang@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/init.c')
-rw-r--r--drivers/scsi/isci/init.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c
index ef0c49a0c0a0..51a7bce20dae 100644
--- a/drivers/scsi/isci/init.c
+++ b/drivers/scsi/isci/init.c
@@ -466,6 +466,7 @@ static int __devinit isci_pci_probe(struct pci_dev *pdev, const struct pci_devic
466 struct isci_host *isci_host; 466 struct isci_host *isci_host;
467 const struct firmware *fw = NULL; 467 const struct firmware *fw = NULL;
468 struct isci_orom *orom; 468 struct isci_orom *orom;
469 char *source = "(platform)";
469 470
470 check_si_rev(pdev); 471 check_si_rev(pdev);
471 472
@@ -480,6 +481,7 @@ static int __devinit isci_pci_probe(struct pci_dev *pdev, const struct pci_devic
480 orom = isci_request_oprom(pdev); 481 orom = isci_request_oprom(pdev);
481 482
482 if (!orom) { 483 if (!orom) {
484 source = "(firmware)";
483 orom = isci_request_firmware(pdev, fw); 485 orom = isci_request_firmware(pdev, fw);
484 if (!orom) { 486 if (!orom) {
485 /* TODO convert this to WARN_TAINT_ONCE once the 487 /* TODO convert this to WARN_TAINT_ONCE once the
@@ -496,9 +498,9 @@ static int __devinit isci_pci_probe(struct pci_dev *pdev, const struct pci_devic
496 498
497 if (orom) 499 if (orom)
498 dev_info(&pdev->dev, 500 dev_info(&pdev->dev,
499 "OEM SAS parameters (version: %u.%u) loaded\n", 501 "OEM SAS parameters (version: %u.%u) loaded %s\n",
500 (orom->hdr.version & 0xf0) >> 4, 502 (orom->hdr.version & 0xf0) >> 4,
501 (orom->hdr.version & 0xf)); 503 (orom->hdr.version & 0xf), source);
502 504
503 pci_info->orom = orom; 505 pci_info->orom = orom;
504 506