powerpc/fsl_pci: Convert PCI to use generic config accessors
Convert the fsl_pci driver to use the generic config access functions. This changes accesses from (in|out)_(8|le16|le32) to readX/writeX variants. I believe these should be equivalent for PCI config space accesses, but confirmation would be nice. Signed-off-by: Rob Herring <robh@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> CC: Benjamin Herrenschmidt <benh@kernel.crashing.org> CC: Paul Mackerras <paulus@samba.org> CC: Michael Ellerman <mpe@ellerman.id.au> CC: linuxppc-dev@lists.ozlabs.org
This commit is contained in:
parent
8d6bd97dc0
commit
933d275f1c
|
@ -645,61 +645,21 @@ static void __iomem *mpc83xx_pcie_remap_cfg(struct pci_bus *bus,
|
||||||
return pcie->cfg_type1 + offset;
|
return pcie->cfg_type1 + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mpc83xx_pcie_read_config(struct pci_bus *bus, unsigned int devfn,
|
|
||||||
int offset, int len, u32 *val)
|
|
||||||
{
|
|
||||||
void __iomem *cfg_addr;
|
|
||||||
|
|
||||||
cfg_addr = mpc83xx_pcie_remap_cfg(bus, devfn, offset);
|
|
||||||
if (!cfg_addr)
|
|
||||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
|
||||||
|
|
||||||
switch (len) {
|
|
||||||
case 1:
|
|
||||||
*val = in_8(cfg_addr);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
*val = in_le16(cfg_addr);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
*val = in_le32(cfg_addr);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return PCIBIOS_SUCCESSFUL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int mpc83xx_pcie_write_config(struct pci_bus *bus, unsigned int devfn,
|
static int mpc83xx_pcie_write_config(struct pci_bus *bus, unsigned int devfn,
|
||||||
int offset, int len, u32 val)
|
int offset, int len, u32 val)
|
||||||
{
|
{
|
||||||
struct pci_controller *hose = pci_bus_to_host(bus);
|
struct pci_controller *hose = pci_bus_to_host(bus);
|
||||||
void __iomem *cfg_addr;
|
|
||||||
|
|
||||||
cfg_addr = mpc83xx_pcie_remap_cfg(bus, devfn, offset);
|
|
||||||
if (!cfg_addr)
|
|
||||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
|
||||||
|
|
||||||
/* PPC_INDIRECT_TYPE_SURPRESS_PRIMARY_BUS */
|
/* PPC_INDIRECT_TYPE_SURPRESS_PRIMARY_BUS */
|
||||||
if (offset == PCI_PRIMARY_BUS && bus->number == hose->first_busno)
|
if (offset == PCI_PRIMARY_BUS && bus->number == hose->first_busno)
|
||||||
val &= 0xffffff00;
|
val &= 0xffffff00;
|
||||||
|
|
||||||
switch (len) {
|
return pci_generic_config_write(bus, devfn, offset, len, val);
|
||||||
case 1:
|
|
||||||
out_8(cfg_addr, val);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
out_le16(cfg_addr, val);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
out_le32(cfg_addr, val);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return PCIBIOS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct pci_ops mpc83xx_pcie_ops = {
|
static struct pci_ops mpc83xx_pcie_ops = {
|
||||||
.read = mpc83xx_pcie_read_config,
|
.map_bus = mpc83xx_pcie_remap_cfg,
|
||||||
|
.read = pci_generic_config_read,
|
||||||
.write = mpc83xx_pcie_write_config,
|
.write = mpc83xx_pcie_write_config,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue