提交 399ad77b 编写于 作者: A Al Viro 提交者: Linus Torvalds

[PATCH] arm-versatile iomem annotations

Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 fc048b5b
...@@ -188,12 +188,12 @@ static struct map_desc versatile_io_desc[] __initdata = { ...@@ -188,12 +188,12 @@ static struct map_desc versatile_io_desc[] __initdata = {
.length = SZ_4K, .length = SZ_4K,
.type = MT_DEVICE .type = MT_DEVICE
}, { }, {
.virtual = VERSATILE_PCI_VIRT_BASE, .virtual = (unsigned long)VERSATILE_PCI_VIRT_BASE,
.pfn = __phys_to_pfn(VERSATILE_PCI_BASE), .pfn = __phys_to_pfn(VERSATILE_PCI_BASE),
.length = VERSATILE_PCI_BASE_SIZE, .length = VERSATILE_PCI_BASE_SIZE,
.type = MT_DEVICE .type = MT_DEVICE
}, { }, {
.virtual = VERSATILE_PCI_CFG_VIRT_BASE, .virtual = (unsigned long)VERSATILE_PCI_CFG_VIRT_BASE,
.pfn = __phys_to_pfn(VERSATILE_PCI_CFG_BASE), .pfn = __phys_to_pfn(VERSATILE_PCI_CFG_BASE),
.length = VERSATILE_PCI_CFG_BASE_SIZE, .length = VERSATILE_PCI_CFG_BASE_SIZE,
.type = MT_DEVICE .type = MT_DEVICE
......
...@@ -40,14 +40,15 @@ ...@@ -40,14 +40,15 @@
* Cfg 42000000 - 42FFFFFF PCI config * Cfg 42000000 - 42FFFFFF PCI config
* *
*/ */
#define SYS_PCICTL IO_ADDRESS(VERSATILE_SYS_PCICTL) #define __IO_ADDRESS(n) ((void __iomem *)(unsigned long)IO_ADDRESS(n))
#define PCI_IMAP0 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x0) #define SYS_PCICTL __IO_ADDRESS(VERSATILE_SYS_PCICTL)
#define PCI_IMAP1 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x4) #define PCI_IMAP0 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x0)
#define PCI_IMAP2 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x8) #define PCI_IMAP1 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x4)
#define PCI_SMAP0 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x10) #define PCI_IMAP2 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x8)
#define PCI_SMAP1 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x14) #define PCI_SMAP0 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x10)
#define PCI_SMAP2 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x18) #define PCI_SMAP1 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x14)
#define PCI_SELFID IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0xc) #define PCI_SMAP2 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x18)
#define PCI_SELFID __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0xc)
#define DEVICE_ID_OFFSET 0x00 #define DEVICE_ID_OFFSET 0x00
#define CSR_OFFSET 0x04 #define CSR_OFFSET 0x04
...@@ -76,7 +77,7 @@ static int __init versatile_pci_slot_ignore(char *str) ...@@ -76,7 +77,7 @@ static int __init versatile_pci_slot_ignore(char *str)
__setup("pci_slot_ignore=", versatile_pci_slot_ignore); __setup("pci_slot_ignore=", versatile_pci_slot_ignore);
static unsigned long __pci_addr(struct pci_bus *bus, static void __iomem *__pci_addr(struct pci_bus *bus,
unsigned int devfn, int offset) unsigned int devfn, int offset)
{ {
unsigned int busnr = bus->number; unsigned int busnr = bus->number;
...@@ -91,14 +92,14 @@ static unsigned long __pci_addr(struct pci_bus *bus, ...@@ -91,14 +92,14 @@ static unsigned long __pci_addr(struct pci_bus *bus,
if (devfn > 255) if (devfn > 255)
BUG(); BUG();
return (VERSATILE_PCI_CFG_VIRT_BASE | (busnr << 16) | return VERSATILE_PCI_CFG_VIRT_BASE + ((busnr << 16) |
(PCI_SLOT(devfn) << 11) | (PCI_FUNC(devfn) << 8) | offset); (PCI_SLOT(devfn) << 11) | (PCI_FUNC(devfn) << 8) | offset);
} }
static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int where, static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int where,
int size, u32 *val) int size, u32 *val)
{ {
unsigned long addr = __pci_addr(bus, devfn, where); void __iomem *addr = __pci_addr(bus, devfn, where & ~3);
u32 v; u32 v;
int slot = PCI_SLOT(devfn); int slot = PCI_SLOT(devfn);
...@@ -121,13 +122,12 @@ static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int wh ...@@ -121,13 +122,12 @@ static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int wh
break; break;
case 2: case 2:
v = __raw_readl(addr & ~3); v = __raw_readl(addr);
if (addr & 2) v >>= 16; if (where & 2) v >>= 16;
v &= 0xffff; v &= 0xffff;
break; break;
default: default:
addr &= ~3;
v = __raw_readl(addr); v = __raw_readl(addr);
break; break;
} }
...@@ -140,7 +140,7 @@ static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int wh ...@@ -140,7 +140,7 @@ static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int wh
static int versatile_write_config(struct pci_bus *bus, unsigned int devfn, int where, static int versatile_write_config(struct pci_bus *bus, unsigned int devfn, int where,
int size, u32 val) int size, u32 val)
{ {
unsigned long addr = __pci_addr(bus, devfn, where); void __iomem *addr = __pci_addr(bus, devfn, where);
int slot = PCI_SLOT(devfn); int slot = PCI_SLOT(devfn);
if (pci_slot_ignore & (1 << slot)) { if (pci_slot_ignore & (1 << slot)) {
...@@ -279,7 +279,7 @@ int __init pci_versatile_setup(int nr, struct pci_sys_data *sys) ...@@ -279,7 +279,7 @@ int __init pci_versatile_setup(int nr, struct pci_sys_data *sys)
printk("PCI core found (slot %d)\n",myslot); printk("PCI core found (slot %d)\n",myslot);
__raw_writel(myslot, PCI_SELFID); __raw_writel(myslot, PCI_SELFID);
local_pci_cfg_base = (void *) VERSATILE_PCI_CFG_VIRT_BASE + (myslot << 11); local_pci_cfg_base = VERSATILE_PCI_CFG_VIRT_BASE + (myslot << 11);
val = __raw_readl(local_pci_cfg_base + CSR_OFFSET); val = __raw_readl(local_pci_cfg_base + CSR_OFFSET);
val |= PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE; val |= PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE;
......
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
/* /*
* PCI space virtual addresses * PCI space virtual addresses
*/ */
#define VERSATILE_PCI_VIRT_BASE 0xe8000000 #define VERSATILE_PCI_VIRT_BASE (void __iomem *)0xe8000000ul
#define VERSATILE_PCI_CFG_VIRT_BASE 0xe9000000 #define VERSATILE_PCI_CFG_VIRT_BASE (void __iomem *)0xe9000000ul
#if 0 #if 0
#define VERSATILE_PCI_VIRT_MEM_BASE0 0xf4000000 #define VERSATILE_PCI_VIRT_MEM_BASE0 0xf4000000
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册