ocxl: Use pci core's DVSEC functionality

Reduce maintenance burden of DVSEC query implementation by using the
centralized PCI core implementation.

There are two obvious places to simply drop in the new core
implementation. There remains find_dvsec_from_pos() which would benefit
from using a core implementation. As that change is less trivial it is
reserved for later.

Cc: linuxppc-dev@lists.ozlabs.org
Cc: Andrew Donnellan <ajd@linux.ibm.com>
Acked-by: Frederic Barrat <fbarrat@linux.ibm.com> (v1)
Signed-off-by: Ben Widawsky <ben.widawsky@intel.com>
Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com>
Link: https://lore.kernel.org/r/163379789065.692348.7117946955275586530.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
Ben Widawsky 2021-10-09 09:44:50 -07:00 committed by Dan Williams
parent 55006a2c94
commit c6d7e1341c
2 changed files with 3 additions and 13 deletions

View File

@ -107,7 +107,8 @@ static int get_max_afu_index(struct pci_dev *dev, int *afu_idx)
int pos; int pos;
u32 val; u32 val;
pos = find_dvsec_from_pos(dev, OCXL_DVSEC_FUNC_ID, 0); pos = pci_find_dvsec_capability(dev, PCI_VENDOR_ID_IBM,
OCXL_DVSEC_FUNC_ID);
if (!pos) if (!pos)
return -ESRCH; return -ESRCH;

View File

@ -33,18 +33,7 @@
static int find_dvsec(struct pci_dev *dev, int dvsec_id) static int find_dvsec(struct pci_dev *dev, int dvsec_id)
{ {
int vsec = 0; return pci_find_dvsec_capability(dev, PCI_VENDOR_ID_IBM, dvsec_id);
u16 vendor, id;
while ((vsec = pci_find_next_ext_capability(dev, vsec,
OCXL_EXT_CAP_ID_DVSEC))) {
pci_read_config_word(dev, vsec + OCXL_DVSEC_VENDOR_OFFSET,
&vendor);
pci_read_config_word(dev, vsec + OCXL_DVSEC_ID_OFFSET, &id);
if (vendor == PCI_VENDOR_ID_IBM && id == dvsec_id)
return vsec;
}
return 0;
} }
static int find_dvsec_afu_ctrl(struct pci_dev *dev, u8 afu_idx) static int find_dvsec_afu_ctrl(struct pci_dev *dev, u8 afu_idx)