mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
ARM: fix clps711x, footbridge, integrator, ixp2000, ixp2300 and s3c build bug
Anders Grafström reports that footbridge fails to build after 1c4a4f4
.
Fix this by adding the necessary definitions for __pfn_to_bus and
__bus_to_pfn.
Reported-by: Anders Grafström <anders.grafstrom@netinsight.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
0d782dc430
commit
c7baab5d1e
7 changed files with 50 additions and 23 deletions
|
@ -30,6 +30,8 @@
|
||||||
|
|
||||||
#define __virt_to_bus(x) ((x) - PAGE_OFFSET)
|
#define __virt_to_bus(x) ((x) - PAGE_OFFSET)
|
||||||
#define __bus_to_virt(x) ((x) + PAGE_OFFSET)
|
#define __bus_to_virt(x) ((x) + PAGE_OFFSET)
|
||||||
|
#define __pfn_to_bus(x) (__pfn_to_phys(x) - PHYS_OFFSET)
|
||||||
|
#define __bus_to_pfn(x) __phys_to_pfn((x) + PHYS_OFFSET)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,11 @@ void __init footbridge_map_io(void)
|
||||||
|
|
||||||
#ifdef CONFIG_FOOTBRIDGE_ADDIN
|
#ifdef CONFIG_FOOTBRIDGE_ADDIN
|
||||||
|
|
||||||
|
static inline unsigned long fb_bus_sdram_offset(void)
|
||||||
|
{
|
||||||
|
return *CSR_PCISDRAMBASE & 0xfffffff0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These two functions convert virtual addresses to PCI addresses and PCI
|
* These two functions convert virtual addresses to PCI addresses and PCI
|
||||||
* addresses to virtual addresses. Note that it is only legal to use these
|
* addresses to virtual addresses. Note that it is only legal to use these
|
||||||
|
@ -210,14 +215,13 @@ unsigned long __virt_to_bus(unsigned long res)
|
||||||
{
|
{
|
||||||
WARN_ON(res < PAGE_OFFSET || res >= (unsigned long)high_memory);
|
WARN_ON(res < PAGE_OFFSET || res >= (unsigned long)high_memory);
|
||||||
|
|
||||||
return (res - PAGE_OFFSET) + (*CSR_PCISDRAMBASE & 0xfffffff0);
|
return res + (fb_bus_sdram_offset() - PAGE_OFFSET);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__virt_to_bus);
|
EXPORT_SYMBOL(__virt_to_bus);
|
||||||
|
|
||||||
unsigned long __bus_to_virt(unsigned long res)
|
unsigned long __bus_to_virt(unsigned long res)
|
||||||
{
|
{
|
||||||
res -= (*CSR_PCISDRAMBASE & 0xfffffff0);
|
res = res - (fb_bus_sdram_offset() - PAGE_OFFSET);
|
||||||
res += PAGE_OFFSET;
|
|
||||||
|
|
||||||
WARN_ON(res < PAGE_OFFSET || res >= (unsigned long)high_memory);
|
WARN_ON(res < PAGE_OFFSET || res >= (unsigned long)high_memory);
|
||||||
|
|
||||||
|
@ -225,4 +229,16 @@ unsigned long __bus_to_virt(unsigned long res)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__bus_to_virt);
|
EXPORT_SYMBOL(__bus_to_virt);
|
||||||
|
|
||||||
|
unsigned long __pfn_to_bus(unsigned long pfn)
|
||||||
|
{
|
||||||
|
return __pfn_to_phys(pfn) + (fb_bus_sdram_offset() - PHYS_OFFSET));
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(__pfn_to_bus);
|
||||||
|
|
||||||
|
unsigned long __bus_to_pfn(unsigned long bus)
|
||||||
|
{
|
||||||
|
return __phys_to_pfn(bus - (fb_bus_sdram_offset() - PHYS_OFFSET));
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(__bus_to_pfn);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
extern unsigned long __virt_to_bus(unsigned long);
|
extern unsigned long __virt_to_bus(unsigned long);
|
||||||
extern unsigned long __bus_to_virt(unsigned long);
|
extern unsigned long __bus_to_virt(unsigned long);
|
||||||
|
extern unsigned long __pfn_to_bus(unsigned long);
|
||||||
|
extern unsigned long __bus_to_pfn(unsigned long);
|
||||||
#endif
|
#endif
|
||||||
#define __virt_to_bus __virt_to_bus
|
#define __virt_to_bus __virt_to_bus
|
||||||
#define __bus_to_virt __bus_to_virt
|
#define __bus_to_virt __bus_to_virt
|
||||||
|
@ -36,14 +38,15 @@ extern unsigned long __bus_to_virt(unsigned long);
|
||||||
#elif defined(CONFIG_FOOTBRIDGE_HOST)
|
#elif defined(CONFIG_FOOTBRIDGE_HOST)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The footbridge is programmed to expose the system RAM at the corresponding
|
* The footbridge is programmed to expose the system RAM at 0xe0000000.
|
||||||
* address. So, if PAGE_OFFSET is 0xc0000000, RAM appears at 0xe0000000.
|
* The requirement is that the RAM isn't placed at bus address 0, which
|
||||||
* If 0x80000000, then its exposed at 0xa0000000 on the bus. etc.
|
|
||||||
* The only requirement is that the RAM isn't placed at bus address 0 which
|
|
||||||
* would clash with VGA cards.
|
* would clash with VGA cards.
|
||||||
*/
|
*/
|
||||||
#define __virt_to_bus(x) ((x) - 0xe0000000)
|
#define BUS_OFFSET 0xe0000000
|
||||||
#define __bus_to_virt(x) ((x) + 0xe0000000)
|
#define __virt_to_bus(x) ((x) + (BUS_OFFSET - PAGE_OFFSET))
|
||||||
|
#define __bus_to_virt(x) ((x) - (BUS_OFFSET - PAGE_OFFSET))
|
||||||
|
#define __pfn_to_bus(x) (__pfn_to_phys(x) + (BUS_OFFSET - PHYS_OFFSET))
|
||||||
|
#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - PHYS_OFFSET))
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#define BUS_OFFSET UL(0x80000000)
|
#define BUS_OFFSET UL(0x80000000)
|
||||||
#define __virt_to_bus(x) ((x) - PAGE_OFFSET + BUS_OFFSET)
|
#define __virt_to_bus(x) ((x) - PAGE_OFFSET + BUS_OFFSET)
|
||||||
#define __bus_to_virt(x) ((x) - BUS_OFFSET + PAGE_OFFSET)
|
#define __bus_to_virt(x) ((x) - BUS_OFFSET + PAGE_OFFSET)
|
||||||
#define __pfn_to_bus(x) (((x) << PAGE_SHIFT) + BUS_OFFSET)
|
#define __pfn_to_bus(x) (__pfn_to_phys(x) + (BUS_OFFSET - PHYS_OFFSET))
|
||||||
|
#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - PHYS_OFFSET))
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -17,11 +17,15 @@
|
||||||
|
|
||||||
#include <mach/ixp2000-regs.h>
|
#include <mach/ixp2000-regs.h>
|
||||||
|
|
||||||
#define __virt_to_bus(v) \
|
#define IXP2000_PCI_SDRAM_OFFSET (*IXP2000_PCI_SDRAM_BAR & 0xfffffff0)
|
||||||
(((__virt_to_phys(v) - 0x0) + (*IXP2000_PCI_SDRAM_BAR & 0xfffffff0)))
|
|
||||||
|
|
||||||
#define __bus_to_virt(b) \
|
#define __phys_to_bus(x) ((x) + (IXP2000_PCI_SDRAM_OFFSET - PHYS_OFFSET))
|
||||||
__phys_to_virt((((b - (*IXP2000_PCI_SDRAM_BAR & 0xfffffff0)) + 0x0)))
|
#define __bus_to_phys(x) ((x) - (IXP2000_PCI_SDRAM_OFFSET - PHYS_OFFSET))
|
||||||
|
|
||||||
|
#define __virt_to_bus(v) __phys_to_bus(__virt_to_phys(v))
|
||||||
|
#define __bus_to_virt(b) __phys_to_virt(__bus_to_phys(b))
|
||||||
|
#define __pfn_to_bus(p) __phys_to_bus(__pfn_to_phys(p))
|
||||||
|
#define __bus_to_pfn(b) __phys_to_pfn(__bus_to_phys(b))
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -19,16 +19,15 @@
|
||||||
*/
|
*/
|
||||||
#define PHYS_OFFSET (0x00000000)
|
#define PHYS_OFFSET (0x00000000)
|
||||||
|
|
||||||
#define __virt_to_bus(v) \
|
#define IXP23XX_PCI_SDRAM_OFFSET (*((volatile int *)IXP23XX_PCI_SDRAM_BAR) & 0xfffffff0))
|
||||||
({ unsigned int ret; \
|
|
||||||
ret = ((__virt_to_phys(v) - 0x00000000) + \
|
|
||||||
(*((volatile int *)IXP23XX_PCI_SDRAM_BAR) & 0xfffffff0)); \
|
|
||||||
ret; })
|
|
||||||
|
|
||||||
#define __bus_to_virt(b) \
|
#define __phys_to_bus(x) ((x) + (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET))
|
||||||
({ unsigned int data; \
|
#define __bus_to_phys(x) ((x) - (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET))
|
||||||
data = *((volatile int *)IXP23XX_PCI_SDRAM_BAR); \
|
|
||||||
__phys_to_virt((((b - (data & 0xfffffff0)) + 0x00000000))); })
|
#define __virt_to_bus(v) __phys_to_bus(__virt_to_phys(v))
|
||||||
|
#define __bus_to_virt(b) __phys_to_virt(__bus_to_phys(b))
|
||||||
|
#define __pfn_to_bus(p) __phys_to_bus(__pfn_to_phys(p))
|
||||||
|
#define __bus_to_pfn(b) __phys_to_pfn(__bus_to_phys(b))
|
||||||
|
|
||||||
#define arch_is_coherent() 1
|
#define arch_is_coherent() 1
|
||||||
|
|
||||||
|
|
|
@ -15,5 +15,7 @@
|
||||||
|
|
||||||
#define __virt_to_bus(x) __virt_to_phys(x)
|
#define __virt_to_bus(x) __virt_to_phys(x)
|
||||||
#define __bus_to_virt(x) __phys_to_virt(x)
|
#define __bus_to_virt(x) __phys_to_virt(x)
|
||||||
|
#define __pfn_to_bus(x) __pfn_to_phys(x)
|
||||||
|
#define __bus_to_pfn(x) __phys_to_pfn(x)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue