|
@@ -1993,6 +1993,16 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
|
|
|
}
|
|
|
|
|
|
trans->hw_rev = iwl_read32(trans, CSR_HW_REV);
|
|
|
+ /*
|
|
|
+ * In the 8000 HW family the format of the 4 bytes of CSR_HW_REV have
|
|
|
+ * changed, and now the revision step also includes bit 0-1 (no more
|
|
|
+ * "dash" value). To keep hw_rev backwards compatible - we'll store it
|
|
|
+ * in the old format.
|
|
|
+ */
|
|
|
+ if (trans->cfg->device_family == IWL_DEVICE_FAMILY_8000)
|
|
|
+ trans->hw_rev = (trans->hw_rev & 0xfff0) |
|
|
|
+ ((trans->hw_rev << 2) & 0xc);
|
|
|
+
|
|
|
trans->hw_id = (pdev->device << 16) + pdev->subsystem_device;
|
|
|
snprintf(trans->hw_id_str, sizeof(trans->hw_id_str),
|
|
|
"PCI ID: 0x%04X:0x%04X", pdev->device, pdev->subsystem_device);
|