mirror of
https://github.com/adulau/aha.git
synced 2025-01-01 13:46:24 +00:00
[PATCH] arm-versatile iomem annotations
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
fc048b5b0f
commit
399ad77b90
3 changed files with 20 additions and 20 deletions
|
@ -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 @@
|
||||||
* 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)
|
||||||
__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,
|
||||||
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
|
||||||
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
|
||||||
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)
|
||||||
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 @@
|
||||||
/*
|
/*
|
||||||
* 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
|
||||||
|
|
Loading…
Reference in a new issue