PCI: generic: Convert to use generic config accessors
Convert the generic host PCI driver to use the generic config access functions. Signed-off-by: Rob Herring <robh@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Will Deacon <will.deacon@arm.com> CC: linux-arm-kernel@lists.infradead.org
This commit is contained in:
parent
b98fa50847
commit
2118672886
@ -76,55 +76,9 @@ static struct gen_pci_cfg_bus_ops gen_pci_cfg_ecam_bus_ops = {
|
|||||||
.map_bus = gen_pci_map_cfg_bus_ecam,
|
.map_bus = gen_pci_map_cfg_bus_ecam,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int gen_pci_config_read(struct pci_bus *bus, unsigned int devfn,
|
|
||||||
int where, int size, u32 *val)
|
|
||||||
{
|
|
||||||
void __iomem *addr;
|
|
||||||
struct pci_sys_data *sys = bus->sysdata;
|
|
||||||
struct gen_pci *pci = sys->private_data;
|
|
||||||
|
|
||||||
addr = pci->cfg.ops->map_bus(bus, devfn, where);
|
|
||||||
|
|
||||||
switch (size) {
|
|
||||||
case 1:
|
|
||||||
*val = readb(addr);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
*val = readw(addr);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
*val = readl(addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
return PCIBIOS_SUCCESSFUL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int gen_pci_config_write(struct pci_bus *bus, unsigned int devfn,
|
|
||||||
int where, int size, u32 val)
|
|
||||||
{
|
|
||||||
void __iomem *addr;
|
|
||||||
struct pci_sys_data *sys = bus->sysdata;
|
|
||||||
struct gen_pci *pci = sys->private_data;
|
|
||||||
|
|
||||||
addr = pci->cfg.ops->map_bus(bus, devfn, where);
|
|
||||||
|
|
||||||
switch (size) {
|
|
||||||
case 1:
|
|
||||||
writeb(val, addr);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
writew(val, addr);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
writel(val, addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
return PCIBIOS_SUCCESSFUL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct pci_ops gen_pci_ops = {
|
static struct pci_ops gen_pci_ops = {
|
||||||
.read = gen_pci_config_read,
|
.read = pci_generic_config_read,
|
||||||
.write = gen_pci_config_write,
|
.write = pci_generic_config_write,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct of_device_id gen_pci_of_match[] = {
|
static const struct of_device_id gen_pci_of_match[] = {
|
||||||
@ -287,6 +241,7 @@ static int gen_pci_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
of_id = of_match_node(gen_pci_of_match, np);
|
of_id = of_match_node(gen_pci_of_match, np);
|
||||||
pci->cfg.ops = of_id->data;
|
pci->cfg.ops = of_id->data;
|
||||||
|
gen_pci_ops.map_bus = pci->cfg.ops->map_bus;
|
||||||
pci->host.dev.parent = dev;
|
pci->host.dev.parent = dev;
|
||||||
INIT_LIST_HEAD(&pci->host.windows);
|
INIT_LIST_HEAD(&pci->host.windows);
|
||||||
INIT_LIST_HEAD(&pci->resources);
|
INIT_LIST_HEAD(&pci->resources);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user