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,