diff options
author | Ruslan V. Sushko <rsushko@ru.mvista.com> | 2007-04-06 10:00:31 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2007-04-21 15:51:55 -0400 |
commit | 45fba0846f5a5a48ed3c394aa4f8ca93699e7655 (patch) | |
tree | 9c5b34c26fbb3364f2cb4dc80501abaf31458a1b /include/asm-arm/arch-ixp4xx | |
parent | 25735d10ba477d5128b1e5ccef42062bea429075 (diff) |
[ARM] 4311/1: ixp4xx: add KIXRP435 platform
Add Intel KIXRP435 Reference Platform based on IXP43x processor.
Fixed after review : access to cp15 removed in identification functions,
used access to global processor_id instead
Signed-off-by: Vladimir Barinov <vbarinov@ru.mvista.com>
Signed-off-by: Ruslan Sushko <rsushko@ru.mvista.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm/arch-ixp4xx')
-rw-r--r-- | include/asm-arm/arch-ixp4xx/entry-macro.S | 4 | ||||
-rw-r--r-- | include/asm-arm/arch-ixp4xx/hardware.h | 4 | ||||
-rw-r--r-- | include/asm-arm/arch-ixp4xx/io.h | 2 | ||||
-rw-r--r-- | include/asm-arm/arch-ixp4xx/irqs.h | 6 | ||||
-rw-r--r-- | include/asm-arm/arch-ixp4xx/ixp4xx-regs.h | 36 |
5 files changed, 40 insertions, 12 deletions
diff --git a/include/asm-arm/arch-ixp4xx/entry-macro.S b/include/asm-arm/arch-ixp4xx/entry-macro.S index dadb568b7ef0..f144a005ed95 100644 --- a/include/asm-arm/arch-ixp4xx/entry-macro.S +++ b/include/asm-arm/arch-ixp4xx/entry-macro.S | |||
@@ -31,9 +31,9 @@ | |||
31 | 31 | ||
32 | 1001: | 32 | 1001: |
33 | /* | 33 | /* |
34 | * IXP465 has an upper IRQ status register | 34 | * IXP465/IXP435 has an upper IRQ status register |
35 | */ | 35 | */ |
36 | #if defined(CONFIG_CPU_IXP46X) | 36 | #if defined(CONFIG_CPU_IXP46X) || defined(CONFIG_CPU_IXP43X) |
37 | ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP2_OFFSET) | 37 | ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP2_OFFSET) |
38 | ldr \irqstat, [\irqstat] @ get upper interrupts | 38 | ldr \irqstat, [\irqstat] @ get upper interrupts |
39 | mov \irqnr, #63 | 39 | mov \irqnr, #63 |
diff --git a/include/asm-arm/arch-ixp4xx/hardware.h b/include/asm-arm/arch-ixp4xx/hardware.h index 88fd0877dcc1..24bc5883fa56 100644 --- a/include/asm-arm/arch-ixp4xx/hardware.h +++ b/include/asm-arm/arch-ixp4xx/hardware.h | |||
@@ -17,8 +17,8 @@ | |||
17 | #ifndef __ASM_ARCH_HARDWARE_H__ | 17 | #ifndef __ASM_ARCH_HARDWARE_H__ |
18 | #define __ASM_ARCH_HARDWARE_H__ | 18 | #define __ASM_ARCH_HARDWARE_H__ |
19 | 19 | ||
20 | #define PCIBIOS_MIN_IO 0x00001000 | 20 | #define PCIBIOS_MIN_IO 0x00001000 |
21 | #define PCIBIOS_MIN_MEM 0x48000000 | 21 | #define PCIBIOS_MIN_MEM (cpu_is_ixp43x() ? 0x40000000 : 0x48000000) |
22 | 22 | ||
23 | /* | 23 | /* |
24 | * We override the standard dma-mask routines for bouncing. | 24 | * We override the standard dma-mask routines for bouncing. |
diff --git a/include/asm-arm/arch-ixp4xx/io.h b/include/asm-arm/arch-ixp4xx/io.h index a41ba229c564..b8b3cbcd2d3a 100644 --- a/include/asm-arm/arch-ixp4xx/io.h +++ b/include/asm-arm/arch-ixp4xx/io.h | |||
@@ -61,7 +61,7 @@ extern int ixp4xx_pci_write(u32 addr, u32 cmd, u32 data); | |||
61 | static inline void __iomem * | 61 | static inline void __iomem * |
62 | __ixp4xx_ioremap(unsigned long addr, size_t size, unsigned long flags) | 62 | __ixp4xx_ioremap(unsigned long addr, size_t size, unsigned long flags) |
63 | { | 63 | { |
64 | if((addr < 0x48000000) || (addr > 0x4fffffff)) | 64 | if((addr < PCIBIOS_MIN_MEM) || (addr > 0x4fffffff)) |
65 | return __ioremap(addr, size, flags); | 65 | return __ioremap(addr, size, flags); |
66 | 66 | ||
67 | return (void *)addr; | 67 | return (void *)addr; |
diff --git a/include/asm-arm/arch-ixp4xx/irqs.h b/include/asm-arm/arch-ixp4xx/irqs.h index e44a563d00ff..73a9aa583745 100644 --- a/include/asm-arm/arch-ixp4xx/irqs.h +++ b/include/asm-arm/arch-ixp4xx/irqs.h | |||
@@ -62,10 +62,10 @@ | |||
62 | /* | 62 | /* |
63 | * Only first 32 sources are valid if running on IXP42x systems | 63 | * Only first 32 sources are valid if running on IXP42x systems |
64 | */ | 64 | */ |
65 | #ifndef CONFIG_CPU_IXP46X | 65 | #if defined(CONFIG_CPU_IXP46X) || defined(CONFIG_CPU_IXP43X) |
66 | #define NR_IRQS 32 | ||
67 | #else | ||
68 | #define NR_IRQS 64 | 66 | #define NR_IRQS 64 |
67 | #else | ||
68 | #define NR_IRQS 32 | ||
69 | #endif | 69 | #endif |
70 | 70 | ||
71 | #define XSCALE_PMU_IRQ (IRQ_IXP4XX_XSCALE_PMU) | 71 | #define XSCALE_PMU_IRQ (IRQ_IXP4XX_XSCALE_PMU) |
diff --git a/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h b/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h index ed35e5c94f40..deb989950c52 100644 --- a/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h +++ b/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h | |||
@@ -607,15 +607,43 @@ | |||
607 | 607 | ||
608 | #define DCMD_LENGTH 0x01fff /* length mask (max = 8K - 1) */ | 608 | #define DCMD_LENGTH 0x01fff /* length mask (max = 8K - 1) */ |
609 | 609 | ||
610 | /* Processor id value in CP15 Register 0 */ | ||
611 | #define IXP425_PROCESSOR_ID_VALUE 0x690541c0 | ||
612 | #define IXP435_PROCESSOR_ID_VALUE 0x69054040 | ||
613 | #define IXP465_PROCESSOR_ID_VALUE 0x69054200 | ||
614 | #define IXP4XX_PROCESSOR_ID_MASK 0xfffffff0 | ||
615 | |||
610 | #ifndef __ASSEMBLY__ | 616 | #ifndef __ASSEMBLY__ |
617 | static inline int cpu_is_ixp42x(void) | ||
618 | { | ||
619 | extern unsigned int processor_id; | ||
620 | |||
621 | if ((processor_id & IXP4XX_PROCESSOR_ID_MASK) == | ||
622 | IXP425_PROCESSOR_ID_VALUE ) | ||
623 | return 1; | ||
624 | |||
625 | return 0; | ||
626 | } | ||
627 | |||
628 | static inline int cpu_is_ixp43x(void) | ||
629 | { | ||
630 | #ifdef CONFIG_CPU_IXP43X | ||
631 | extern unsigned int processor_id; | ||
632 | |||
633 | if ((processor_id & IXP4XX_PROCESSOR_ID_MASK) == | ||
634 | IXP435_PROCESSOR_ID_VALUE ) | ||
635 | return 1; | ||
636 | #endif | ||
637 | return 0; | ||
638 | } | ||
639 | |||
611 | static inline int cpu_is_ixp46x(void) | 640 | static inline int cpu_is_ixp46x(void) |
612 | { | 641 | { |
613 | #ifdef CONFIG_CPU_IXP46X | 642 | #ifdef CONFIG_CPU_IXP46X |
614 | unsigned int processor_id; | 643 | extern unsigned int processor_id; |
615 | |||
616 | asm("mrc p15, 0, %0, cr0, cr0, 0;" : "=r"(processor_id) :); | ||
617 | 644 | ||
618 | if ((processor_id & 0xffffff00) == 0x69054200) | 645 | if ((processor_id & IXP4XX_PROCESSOR_ID_MASK) == |
646 | IXP465_PROCESSOR_ID_VALUE ) | ||
619 | return 1; | 647 | return 1; |
620 | #endif | 648 | #endif |
621 | return 0; | 649 | return 0; |