Commit ca946d4e authored by Frederic Barrat's avatar Frederic Barrat Committed by Michael Ellerman

cxlflash: Use new cxl_pci_read_adapter_vpd() API

To read the adapter VPD, drivers can't rely on pci config APIs, as it
wouldn't work on powerVM. cxl introduced a new kernel API especially
for this, so start using it.
Co-authored-by: default avatarChristophe Lombard <clombard@linux.vnet.ibm.com>
Signed-off-by: default avatarFrederic Barrat <fbarrat@linux.vnet.ibm.com>
Signed-off-by: default avatarChristophe Lombard <clombard@linux.vnet.ibm.com>
Reviewed-by: default avatarUma Krishnan <ukrishn@linux.vnet.ibm.com>
Acked-by: default avatarMatthew R. Ochs <mrochs@linux.vnet.ibm.com>
Acked-by: default avatarManoj N. Kumar <manoj@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent e7a801ad
...@@ -106,7 +106,6 @@ struct cxlflash_cfg { ...@@ -106,7 +106,6 @@ struct cxlflash_cfg {
atomic_t scan_host_needed; atomic_t scan_host_needed;
struct cxl_afu *cxl_afu; struct cxl_afu *cxl_afu;
struct pci_dev *parent_dev;
atomic_t recovery_threads; atomic_t recovery_threads;
struct mutex ctx_recovery_mutex; struct mutex ctx_recovery_mutex;
......
...@@ -1407,7 +1407,7 @@ static int start_context(struct cxlflash_cfg *cfg) ...@@ -1407,7 +1407,7 @@ static int start_context(struct cxlflash_cfg *cfg)
*/ */
static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[]) static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[])
{ {
struct pci_dev *dev = cfg->parent_dev; struct pci_dev *dev = cfg->dev;
int rc = 0; int rc = 0;
int ro_start, ro_size, i, j, k; int ro_start, ro_size, i, j, k;
ssize_t vpd_size; ssize_t vpd_size;
...@@ -1416,7 +1416,7 @@ static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[]) ...@@ -1416,7 +1416,7 @@ static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[])
char *wwpn_vpd_tags[NUM_FC_PORTS] = { "V5", "V6" }; char *wwpn_vpd_tags[NUM_FC_PORTS] = { "V5", "V6" };
/* Get the VPD data from the device */ /* Get the VPD data from the device */
vpd_size = pci_read_vpd(dev, 0, sizeof(vpd_data), vpd_data); vpd_size = cxl_read_adapter_vpd(dev, vpd_data, sizeof(vpd_data));
if (unlikely(vpd_size <= 0)) { if (unlikely(vpd_size <= 0)) {
dev_err(&dev->dev, "%s: Unable to read VPD (size = %ld)\n", dev_err(&dev->dev, "%s: Unable to read VPD (size = %ld)\n",
__func__, vpd_size); __func__, vpd_size);
...@@ -2392,7 +2392,6 @@ static int cxlflash_probe(struct pci_dev *pdev, ...@@ -2392,7 +2392,6 @@ static int cxlflash_probe(struct pci_dev *pdev,
{ {
struct Scsi_Host *host; struct Scsi_Host *host;
struct cxlflash_cfg *cfg = NULL; struct cxlflash_cfg *cfg = NULL;
struct device *phys_dev;
struct dev_dependent_vals *ddv; struct dev_dependent_vals *ddv;
int rc = 0; int rc = 0;
...@@ -2458,19 +2457,6 @@ static int cxlflash_probe(struct pci_dev *pdev, ...@@ -2458,19 +2457,6 @@ static int cxlflash_probe(struct pci_dev *pdev,
pci_set_drvdata(pdev, cfg); pci_set_drvdata(pdev, cfg);
/*
* Use the special service provided to look up the physical
* PCI device, since we are called on the probe of the virtual
* PCI host bus (vphb)
*/
phys_dev = cxl_get_phys_dev(pdev);
if (!dev_is_pci(phys_dev)) {
dev_err(&pdev->dev, "%s: not a pci dev\n", __func__);
rc = -ENODEV;
goto out_remove;
}
cfg->parent_dev = to_pci_dev(phys_dev);
cfg->cxl_afu = cxl_pci_to_afu(pdev); cfg->cxl_afu = cxl_pci_to_afu(pdev);
rc = init_pci(cfg); rc = init_pci(cfg);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment