Commit 5c3d14f7 authored by Jayachandran C's avatar Jayachandran C Committed by Bjorn Helgaas

PCI: Add parent device field to ECAM struct pci_config_window

Add a parent device field to struct pci_config_window.  The parent is not
saved now, but will be useful to save it in some cases.  For ACPI on ARM64,
it can be used to setup ACPI companion and domain.

Since the parent dev is in struct pci_config_window now, we need not pass
it to the init function as a separate argument.
Signed-off-by: default avatarJayachandran C <jchandra@broadcom.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Acked-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
parent 80955f9e
...@@ -51,6 +51,7 @@ struct pci_config_window *pci_ecam_create(struct device *dev, ...@@ -51,6 +51,7 @@ struct pci_config_window *pci_ecam_create(struct device *dev,
if (!cfg) if (!cfg)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
cfg->parent = dev;
cfg->ops = ops; cfg->ops = ops;
cfg->busr.start = busr->start; cfg->busr.start = busr->start;
cfg->busr.end = busr->end; cfg->busr.end = busr->end;
...@@ -94,7 +95,7 @@ struct pci_config_window *pci_ecam_create(struct device *dev, ...@@ -94,7 +95,7 @@ struct pci_config_window *pci_ecam_create(struct device *dev,
} }
if (ops->init) { if (ops->init) {
err = ops->init(dev, cfg); err = ops->init(cfg);
if (err) if (err)
goto err_exit; goto err_exit;
} }
......
...@@ -284,8 +284,9 @@ static int thunder_pem_config_write(struct pci_bus *bus, unsigned int devfn, ...@@ -284,8 +284,9 @@ static int thunder_pem_config_write(struct pci_bus *bus, unsigned int devfn,
return pci_generic_config_write(bus, devfn, where, size, val); return pci_generic_config_write(bus, devfn, where, size, val);
} }
static int thunder_pem_init(struct device *dev, struct pci_config_window *cfg) static int thunder_pem_init(struct pci_config_window *cfg)
{ {
struct device *dev = cfg->parent;
resource_size_t bar4_start; resource_size_t bar4_start;
struct resource *res_pem; struct resource *res_pem;
struct thunder_pem_pci *pem_pci; struct thunder_pem_pci *pem_pci;
......
...@@ -27,8 +27,7 @@ struct pci_config_window; ...@@ -27,8 +27,7 @@ struct pci_config_window;
struct pci_ecam_ops { struct pci_ecam_ops {
unsigned int bus_shift; unsigned int bus_shift;
struct pci_ops pci_ops; struct pci_ops pci_ops;
int (*init)(struct device *, int (*init)(struct pci_config_window *);
struct pci_config_window *);
}; };
/* /*
...@@ -45,6 +44,7 @@ struct pci_config_window { ...@@ -45,6 +44,7 @@ struct pci_config_window {
void __iomem *win; /* 64-bit single mapping */ void __iomem *win; /* 64-bit single mapping */
void __iomem **winp; /* 32-bit per-bus mapping */ void __iomem **winp; /* 32-bit per-bus mapping */
}; };
struct device *parent;/* ECAM res was from this dev */
}; };
/* create and free pci_config_window */ /* create and free pci_config_window */
......
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