diff options
-rw-r--r-- | arch/arm/mach-versatile/core.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-versatile/pci.c | 32 | ||||
-rw-r--r-- | include/asm-arm/arch-versatile/hardware.h | 4 |
3 files changed, 20 insertions, 20 deletions
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 2aa150b57ba1..3b8576111c16 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
@@ -188,12 +188,12 @@ static struct map_desc versatile_io_desc[] __initdata = { | |||
188 | .length = SZ_4K, | 188 | .length = SZ_4K, |
189 | .type = MT_DEVICE | 189 | .type = MT_DEVICE |
190 | }, { | 190 | }, { |
191 | .virtual = VERSATILE_PCI_VIRT_BASE, | 191 | .virtual = (unsigned long)VERSATILE_PCI_VIRT_BASE, |
192 | .pfn = __phys_to_pfn(VERSATILE_PCI_BASE), | 192 | .pfn = __phys_to_pfn(VERSATILE_PCI_BASE), |
193 | .length = VERSATILE_PCI_BASE_SIZE, | 193 | .length = VERSATILE_PCI_BASE_SIZE, |
194 | .type = MT_DEVICE | 194 | .type = MT_DEVICE |
195 | }, { | 195 | }, { |
196 | .virtual = VERSATILE_PCI_CFG_VIRT_BASE, | 196 | .virtual = (unsigned long)VERSATILE_PCI_CFG_VIRT_BASE, |
197 | .pfn = __phys_to_pfn(VERSATILE_PCI_CFG_BASE), | 197 | .pfn = __phys_to_pfn(VERSATILE_PCI_CFG_BASE), |
198 | .length = VERSATILE_PCI_CFG_BASE_SIZE, | 198 | .length = VERSATILE_PCI_CFG_BASE_SIZE, |
199 | .type = MT_DEVICE | 199 | .type = MT_DEVICE |
diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c index 13bbd08ff841..5cd0b5d9e7eb 100644 --- a/arch/arm/mach-versatile/pci.c +++ b/arch/arm/mach-versatile/pci.c | |||
@@ -40,14 +40,15 @@ | |||
40 | * Cfg 42000000 - 42FFFFFF PCI config | 40 | * Cfg 42000000 - 42FFFFFF PCI config |
41 | * | 41 | * |
42 | */ | 42 | */ |
43 | #define SYS_PCICTL IO_ADDRESS(VERSATILE_SYS_PCICTL) | 43 | #define __IO_ADDRESS(n) ((void __iomem *)(unsigned long)IO_ADDRESS(n)) |
44 | #define PCI_IMAP0 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x0) | 44 | #define SYS_PCICTL __IO_ADDRESS(VERSATILE_SYS_PCICTL) |
45 | #define PCI_IMAP1 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x4) | 45 | #define PCI_IMAP0 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x0) |
46 | #define PCI_IMAP2 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x8) | 46 | #define PCI_IMAP1 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x4) |
47 | #define PCI_SMAP0 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x10) | 47 | #define PCI_IMAP2 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x8) |
48 | #define PCI_SMAP1 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x14) | 48 | #define PCI_SMAP0 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x10) |
49 | #define PCI_SMAP2 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x18) | 49 | #define PCI_SMAP1 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x14) |
50 | #define PCI_SELFID IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0xc) | 50 | #define PCI_SMAP2 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x18) |
51 | #define PCI_SELFID __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0xc) | ||
51 | 52 | ||
52 | #define DEVICE_ID_OFFSET 0x00 | 53 | #define DEVICE_ID_OFFSET 0x00 |
53 | #define CSR_OFFSET 0x04 | 54 | #define CSR_OFFSET 0x04 |
@@ -76,7 +77,7 @@ static int __init versatile_pci_slot_ignore(char *str) | |||
76 | __setup("pci_slot_ignore=", versatile_pci_slot_ignore); | 77 | __setup("pci_slot_ignore=", versatile_pci_slot_ignore); |
77 | 78 | ||
78 | 79 | ||
79 | static unsigned long __pci_addr(struct pci_bus *bus, | 80 | static void __iomem *__pci_addr(struct pci_bus *bus, |
80 | unsigned int devfn, int offset) | 81 | unsigned int devfn, int offset) |
81 | { | 82 | { |
82 | unsigned int busnr = bus->number; | 83 | unsigned int busnr = bus->number; |
@@ -91,14 +92,14 @@ static unsigned long __pci_addr(struct pci_bus *bus, | |||
91 | if (devfn > 255) | 92 | if (devfn > 255) |
92 | BUG(); | 93 | BUG(); |
93 | 94 | ||
94 | return (VERSATILE_PCI_CFG_VIRT_BASE | (busnr << 16) | | 95 | return VERSATILE_PCI_CFG_VIRT_BASE + ((busnr << 16) | |
95 | (PCI_SLOT(devfn) << 11) | (PCI_FUNC(devfn) << 8) | offset); | 96 | (PCI_SLOT(devfn) << 11) | (PCI_FUNC(devfn) << 8) | offset); |
96 | } | 97 | } |
97 | 98 | ||
98 | static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int where, | 99 | static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int where, |
99 | int size, u32 *val) | 100 | int size, u32 *val) |
100 | { | 101 | { |
101 | unsigned long addr = __pci_addr(bus, devfn, where); | 102 | void __iomem *addr = __pci_addr(bus, devfn, where & ~3); |
102 | u32 v; | 103 | u32 v; |
103 | int slot = PCI_SLOT(devfn); | 104 | int slot = PCI_SLOT(devfn); |
104 | 105 | ||
@@ -121,13 +122,12 @@ static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int wh | |||
121 | break; | 122 | break; |
122 | 123 | ||
123 | case 2: | 124 | case 2: |
124 | v = __raw_readl(addr & ~3); | 125 | v = __raw_readl(addr); |
125 | if (addr & 2) v >>= 16; | 126 | if (where & 2) v >>= 16; |
126 | v &= 0xffff; | 127 | v &= 0xffff; |
127 | break; | 128 | break; |
128 | 129 | ||
129 | default: | 130 | default: |
130 | addr &= ~3; | ||
131 | v = __raw_readl(addr); | 131 | v = __raw_readl(addr); |
132 | break; | 132 | break; |
133 | } | 133 | } |
@@ -140,7 +140,7 @@ static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int wh | |||
140 | static int versatile_write_config(struct pci_bus *bus, unsigned int devfn, int where, | 140 | static int versatile_write_config(struct pci_bus *bus, unsigned int devfn, int where, |
141 | int size, u32 val) | 141 | int size, u32 val) |
142 | { | 142 | { |
143 | unsigned long addr = __pci_addr(bus, devfn, where); | 143 | void __iomem *addr = __pci_addr(bus, devfn, where); |
144 | int slot = PCI_SLOT(devfn); | 144 | int slot = PCI_SLOT(devfn); |
145 | 145 | ||
146 | if (pci_slot_ignore & (1 << slot)) { | 146 | if (pci_slot_ignore & (1 << slot)) { |
@@ -279,7 +279,7 @@ int __init pci_versatile_setup(int nr, struct pci_sys_data *sys) | |||
279 | printk("PCI core found (slot %d)\n",myslot); | 279 | printk("PCI core found (slot %d)\n",myslot); |
280 | 280 | ||
281 | __raw_writel(myslot, PCI_SELFID); | 281 | __raw_writel(myslot, PCI_SELFID); |
282 | local_pci_cfg_base = (void *) VERSATILE_PCI_CFG_VIRT_BASE + (myslot << 11); | 282 | local_pci_cfg_base = VERSATILE_PCI_CFG_VIRT_BASE + (myslot << 11); |
283 | 283 | ||
284 | val = __raw_readl(local_pci_cfg_base + CSR_OFFSET); | 284 | val = __raw_readl(local_pci_cfg_base + CSR_OFFSET); |
285 | val |= PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE; | 285 | val |= PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE; |
diff --git a/include/asm-arm/arch-versatile/hardware.h b/include/asm-arm/arch-versatile/hardware.h index 41c1bee342ad..edc06598d187 100644 --- a/include/asm-arm/arch-versatile/hardware.h +++ b/include/asm-arm/arch-versatile/hardware.h | |||
@@ -28,8 +28,8 @@ | |||
28 | /* | 28 | /* |
29 | * PCI space virtual addresses | 29 | * PCI space virtual addresses |
30 | */ | 30 | */ |
31 | #define VERSATILE_PCI_VIRT_BASE 0xe8000000 | 31 | #define VERSATILE_PCI_VIRT_BASE (void __iomem *)0xe8000000ul |
32 | #define VERSATILE_PCI_CFG_VIRT_BASE 0xe9000000 | 32 | #define VERSATILE_PCI_CFG_VIRT_BASE (void __iomem *)0xe9000000ul |
33 | 33 | ||
34 | #if 0 | 34 | #if 0 |
35 | #define VERSATILE_PCI_VIRT_MEM_BASE0 0xf4000000 | 35 | #define VERSATILE_PCI_VIRT_MEM_BASE0 0xf4000000 |