ARM: ks8695: Convert PCI to use generic config accessors
Convert the ks8695 PCI driver to use the generic config access functions. This changes accesses from __raw_readX/__raw_writeX to readX/writeX variants. Signed-off-by: Rob Herring <robh@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Greg Ungerer <gerg@uclinux.org> CC: Russell King <linux@arm.linux.org.uk> CC: linux-arm-kernel@lists.infradead.org
This commit is contained in:

committed by
Bjorn Helgaas

parent
7a11e9c487
commit
8d6bd97dc0
@@ -38,8 +38,6 @@
|
|||||||
|
|
||||||
|
|
||||||
static int pci_dbg;
|
static int pci_dbg;
|
||||||
static int pci_cfg_dbg;
|
|
||||||
|
|
||||||
|
|
||||||
static void ks8695_pci_setupconfig(unsigned int bus_nr, unsigned int devfn, unsigned int where)
|
static void ks8695_pci_setupconfig(unsigned int bus_nr, unsigned int devfn, unsigned int where)
|
||||||
{
|
{
|
||||||
@@ -59,75 +57,11 @@ static void ks8695_pci_setupconfig(unsigned int bus_nr, unsigned int devfn, unsi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void __iomem *ks8695_pci_map_bus(struct pci_bus *bus, unsigned int devfn,
|
||||||
/*
|
int where)
|
||||||
* The KS8695 datasheet prohibits anything other than 32bit accesses
|
|
||||||
* to the IO registers, so all our configuration must be done with
|
|
||||||
* 32bit operations, and the correct bit masking and shifting.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static int ks8695_pci_readconfig(struct pci_bus *bus,
|
|
||||||
unsigned int devfn, int where, int size, u32 *value)
|
|
||||||
{
|
{
|
||||||
ks8695_pci_setupconfig(bus->number, devfn, where);
|
ks8695_pci_setupconfig(bus->number, devfn, where);
|
||||||
|
return KS8695_PCI_VA + KS8695_PBCD;
|
||||||
*value = __raw_readl(KS8695_PCI_VA + KS8695_PBCD);
|
|
||||||
|
|
||||||
switch (size) {
|
|
||||||
case 4:
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
*value = *value >> ((where & 2) * 8);
|
|
||||||
*value &= 0xffff;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
*value = *value >> ((where & 3) * 8);
|
|
||||||
*value &= 0xff;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pci_cfg_dbg) {
|
|
||||||
printk("read: %d,%08x,%02x,%d: %08x (%08x)\n",
|
|
||||||
bus->number, devfn, where, size, *value,
|
|
||||||
__raw_readl(KS8695_PCI_VA + KS8695_PBCD));
|
|
||||||
}
|
|
||||||
|
|
||||||
return PCIBIOS_SUCCESSFUL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ks8695_pci_writeconfig(struct pci_bus *bus,
|
|
||||||
unsigned int devfn, int where, int size, u32 value)
|
|
||||||
{
|
|
||||||
unsigned long tmp;
|
|
||||||
|
|
||||||
if (pci_cfg_dbg) {
|
|
||||||
printk("write: %d,%08x,%02x,%d: %08x\n",
|
|
||||||
bus->number, devfn, where, size, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
ks8695_pci_setupconfig(bus->number, devfn, where);
|
|
||||||
|
|
||||||
switch (size) {
|
|
||||||
case 4:
|
|
||||||
__raw_writel(value, KS8695_PCI_VA + KS8695_PBCD);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
tmp = __raw_readl(KS8695_PCI_VA + KS8695_PBCD);
|
|
||||||
tmp &= ~(0xffff << ((where & 2) * 8));
|
|
||||||
tmp |= value << ((where & 2) * 8);
|
|
||||||
|
|
||||||
__raw_writel(tmp, KS8695_PCI_VA + KS8695_PBCD);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
tmp = __raw_readl(KS8695_PCI_VA + KS8695_PBCD);
|
|
||||||
tmp &= ~(0xff << ((where & 3) * 8));
|
|
||||||
tmp |= value << ((where & 3) * 8);
|
|
||||||
|
|
||||||
__raw_writel(tmp, KS8695_PCI_VA + KS8695_PBCD);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return PCIBIOS_SUCCESSFUL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ks8695_local_writeconfig(int where, u32 value)
|
static void ks8695_local_writeconfig(int where, u32 value)
|
||||||
@@ -137,8 +71,9 @@ static void ks8695_local_writeconfig(int where, u32 value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct pci_ops ks8695_pci_ops = {
|
static struct pci_ops ks8695_pci_ops = {
|
||||||
.read = ks8695_pci_readconfig,
|
.map_bus = ks8695_pci_map_bus,
|
||||||
.write = ks8695_pci_writeconfig,
|
.read = pci_generic_config_read32,
|
||||||
|
.write = pci_generic_config_write32,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource pci_mem = {
|
static struct resource pci_mem = {
|
||||||
|
Reference in New Issue
Block a user