|
@@ -1834,12 +1834,13 @@ bool pci_acs_path_enabled(struct pci_dev *start,
|
|
|
#define PCI_VPD_LRDT_RW_DATA PCI_VPD_LRDT_ID(PCI_VPD_LTIN_RW_DATA)
|
|
|
|
|
|
/* Small Resource Data Type Tag Item Names */
|
|
|
-#define PCI_VPD_STIN_END 0x78 /* End */
|
|
|
+#define PCI_VPD_STIN_END 0x0f /* End */
|
|
|
|
|
|
-#define PCI_VPD_SRDT_END PCI_VPD_STIN_END
|
|
|
+#define PCI_VPD_SRDT_END (PCI_VPD_STIN_END << 3)
|
|
|
|
|
|
#define PCI_VPD_SRDT_TIN_MASK 0x78
|
|
|
#define PCI_VPD_SRDT_LEN_MASK 0x07
|
|
|
+#define PCI_VPD_LRDT_TIN_MASK 0x7f
|
|
|
|
|
|
#define PCI_VPD_LRDT_TAG_SIZE 3
|
|
|
#define PCI_VPD_SRDT_TAG_SIZE 1
|
|
@@ -1862,6 +1863,17 @@ static inline u16 pci_vpd_lrdt_size(const u8 *lrdt)
|
|
|
return (u16)lrdt[1] + ((u16)lrdt[2] << 8);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * pci_vpd_lrdt_tag - Extracts the Large Resource Data Type Tag Item
|
|
|
+ * @lrdt: Pointer to the beginning of the Large Resource Data Type tag
|
|
|
+ *
|
|
|
+ * Returns the extracted Large Resource Data Type Tag item.
|
|
|
+ */
|
|
|
+static inline u16 pci_vpd_lrdt_tag(const u8 *lrdt)
|
|
|
+{
|
|
|
+ return (u16)(lrdt[0] & PCI_VPD_LRDT_TIN_MASK);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* pci_vpd_srdt_size - Extracts the Small Resource Data Type length
|
|
|
* @lrdt: Pointer to the beginning of the Small Resource Data Type tag
|
|
@@ -1873,6 +1885,17 @@ static inline u8 pci_vpd_srdt_size(const u8 *srdt)
|
|
|
return (*srdt) & PCI_VPD_SRDT_LEN_MASK;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * pci_vpd_srdt_tag - Extracts the Small Resource Data Type Tag Item
|
|
|
+ * @lrdt: Pointer to the beginning of the Small Resource Data Type tag
|
|
|
+ *
|
|
|
+ * Returns the extracted Small Resource Data Type Tag Item.
|
|
|
+ */
|
|
|
+static inline u8 pci_vpd_srdt_tag(const u8 *srdt)
|
|
|
+{
|
|
|
+ return ((*srdt) & PCI_VPD_SRDT_TIN_MASK) >> 3;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* pci_vpd_info_field_size - Extracts the information field length
|
|
|
* @lrdt: Pointer to the beginning of an information field header
|