isci: cleanup silicon revision detection
Perform checking per-pci device (even though all systems will only have
1 pci device in this generation), and delete support for silicon that
does not report a proper revision (i.e. A0).
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
diff --git a/drivers/scsi/isci/host.h b/drivers/scsi/isci/host.h
index ec0bba5..062101a 100644
--- a/drivers/scsi/isci/host.h
+++ b/drivers/scsi/isci/host.h
@@ -416,33 +416,25 @@
return &idev->isci_port->isci_host->pdev->dev;
}
-enum {
- ISCI_SI_REVA0,
- ISCI_SI_REVA2,
- ISCI_SI_REVB0,
- ISCI_SI_REVC0
-};
-
-extern int isci_si_rev;
-
-static inline bool is_a0(void)
+static inline bool is_a2(struct pci_dev *pdev)
{
- return isci_si_rev == ISCI_SI_REVA0;
+ if (pdev->revision < 4)
+ return true;
+ return false;
}
-static inline bool is_a2(void)
+static inline bool is_b0(struct pci_dev *pdev)
{
- return isci_si_rev == ISCI_SI_REVA2;
+ if (pdev->revision == 4)
+ return true;
+ return false;
}
-static inline bool is_b0(void)
+static inline bool is_c0(struct pci_dev *pdev)
{
- return isci_si_rev == ISCI_SI_REVB0;
-}
-
-static inline bool is_c0(void)
-{
- return isci_si_rev > ISCI_SI_REVB0;
+ if (pdev->revision >= 5)
+ return true;
+ return false;
}
void sci_controller_post_request(struct isci_host *ihost,