diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 18:40:39 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 18:40:39 -0500 |
commit | ea14fad0d416354a4e9bb1a04f32acba706f9548 (patch) | |
tree | 2c8acc5331f189aef1d40ddce3f40d6be9314e77 /include/asm-arm/arch-iop13xx | |
parent | 6ee7e78e7c78d871409ad4df30551c9355be7d0e (diff) | |
parent | 6705cda24fad1cb0ac82ac4f312df8ec735b39b0 (diff) |
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (76 commits)
[ARM] 4002/1: S3C24XX: leave parent IRQs unmasked
[ARM] 4001/1: S3C24XX: shorten reboot time
[ARM] 3983/2: remove unused argument to __bug()
[ARM] 4000/1: Osiris: add third serial port in
[ARM] 3999/1: RX3715: suspend to RAM support
[ARM] 3998/1: VR1000: LED platform devices
[ARM] 3995/1: iop13xx: add iop13xx support
[ARM] 3968/1: iop13xx: add iop13xx_defconfig
[ARM] Update mach-types
[ARM] Allow gcc to optimise arm_add_memory a little more
[ARM] 3991/1: i.MX/MX1 high resolution time source
[ARM] 3990/1: i.MX/MX1 more precise PLL decode
[ARM] 3986/1: H1940: suspend to RAM support
[ARM] 3985/1: ixp4xx clocksource cleanup
[ARM] 3984/1: ixp4xx/nslu2: Fix disk LED numbering (take 2)
[ARM] 3994/1: ixp23xx: fix handling of pci master aborts
[ARM] 3981/1: sched_clock for PXA2xx
[ARM] 3980/1: extend the ARM Versatile sched_clock implementation from 32 to 63 bit
[ARM] 3979/1: extend the SA11x0 sched_clock implementation from 32 to 63 bit period
[ARM] 3978/1: macro to provide a 63-bit value from a 32-bit hardware counter
...
Diffstat (limited to 'include/asm-arm/arch-iop13xx')
-rw-r--r-- | include/asm-arm/arch-iop13xx/debug-macro.S | 26 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/dma.h | 3 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/entry-macro.S | 39 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/hardware.h | 28 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/io.h | 41 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/iop13xx.h | 492 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/iq81340.h | 31 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/irqs.h | 207 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/memory.h | 64 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/pci.h | 57 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/system.h | 59 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/timex.h | 3 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/uncompress.h | 24 | ||||
-rw-r--r-- | include/asm-arm/arch-iop13xx/vmalloc.h | 4 |
14 files changed, 1078 insertions, 0 deletions
diff --git a/include/asm-arm/arch-iop13xx/debug-macro.S b/include/asm-arm/arch-iop13xx/debug-macro.S new file mode 100644 index 000000000000..788b4e386c16 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/debug-macro.S | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-iop13xx/debug-macro.S | ||
3 | * | ||
4 | * Debugging macro include header | ||
5 | * | ||
6 | * Copyright (C) 1994-1999 Russell King | ||
7 | * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | */ | ||
13 | |||
14 | .macro addruart, rx | ||
15 | mrc p15, 0, \rx, c1, c0 | ||
16 | tst \rx, #1 @ mmu enabled? | ||
17 | moveq \rx, #0xff000000 @ physical | ||
18 | orreq \rx, \rx, #0x00d80000 | ||
19 | movne \rx, #0xfe000000 @ virtual | ||
20 | orrne \rx, \rx, #0x00e80000 | ||
21 | orr \rx, \rx, #0x00002300 | ||
22 | orr \rx, \rx, #0x00000040 | ||
23 | .endm | ||
24 | |||
25 | #define UART_SHIFT 2 | ||
26 | #include <asm/hardware/debug-8250.S> | ||
diff --git a/include/asm-arm/arch-iop13xx/dma.h b/include/asm-arm/arch-iop13xx/dma.h new file mode 100644 index 000000000000..2e15da53ff79 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/dma.h | |||
@@ -0,0 +1,3 @@ | |||
1 | #ifndef _IOP13XX_DMA_H | ||
2 | #define _IOP13XX_DMA_H_ | ||
3 | #endif | ||
diff --git a/include/asm-arm/arch-iop13xx/entry-macro.S b/include/asm-arm/arch-iop13xx/entry-macro.S new file mode 100644 index 000000000000..94c50283dc56 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/entry-macro.S | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * iop13xx low level irq macros | ||
3 | * Copyright (c) 2005-2006, Intel Corporation. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms and conditions of the GNU General Public License, | ||
7 | * version 2, as published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
12 | * more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License along with | ||
15 | * this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
16 | * Place - Suite 330, Boston, MA 02111-1307 USA. | ||
17 | * | ||
18 | */ | ||
19 | .macro disable_fiq | ||
20 | .endm | ||
21 | |||
22 | /* | ||
23 | * Note: a 1-cycle window exists where iintvec will return the value | ||
24 | * of iintbase, so we explicitly check for "bad zeros" | ||
25 | */ | ||
26 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
27 | mrc p15, 0, \tmp, c15, c1, 0 | ||
28 | orr \tmp, \tmp, #(1 << 6) | ||
29 | mcr p15, 0, \tmp, c15, c1, 0 @ Enable cp6 access | ||
30 | |||
31 | mrc p6, 0, \irqnr, c3, c2, 0 @ Read IINTVEC | ||
32 | cmp \irqnr, #0 | ||
33 | mrceq p6, 0, \irqnr, c3, c2, 0 @ Re-read on potentially bad zero | ||
34 | adds \irqstat, \irqnr, #1 @ Check for 0xffffffff | ||
35 | movne \irqnr, \irqnr, lsr #2 @ Convert to irqnr | ||
36 | |||
37 | biceq \tmp, \tmp, #(1 << 6) | ||
38 | mcreq p15, 0, \tmp, c15, c1, 0 @ Disable cp6 access if no more interrupts | ||
39 | .endm | ||
diff --git a/include/asm-arm/arch-iop13xx/hardware.h b/include/asm-arm/arch-iop13xx/hardware.h new file mode 100644 index 000000000000..8e1d56289846 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/hardware.h | |||
@@ -0,0 +1,28 @@ | |||
1 | #ifndef __ASM_ARCH_HARDWARE_H | ||
2 | #define __ASM_ARCH_HARDWARE_H | ||
3 | #include <asm/types.h> | ||
4 | |||
5 | #define pcibios_assign_all_busses() 1 | ||
6 | |||
7 | #ifndef __ASSEMBLY__ | ||
8 | extern unsigned long iop13xx_pcibios_min_io; | ||
9 | extern unsigned long iop13xx_pcibios_min_mem; | ||
10 | extern u16 iop13xx_dev_id(void); | ||
11 | extern void iop13xx_set_atu_mmr_bases(void); | ||
12 | #endif | ||
13 | |||
14 | #define PCIBIOS_MIN_IO (iop13xx_pcibios_min_io) | ||
15 | #define PCIBIOS_MIN_MEM (iop13xx_pcibios_min_mem) | ||
16 | |||
17 | /* | ||
18 | * Generic chipset bits | ||
19 | * | ||
20 | */ | ||
21 | #include "iop13xx.h" | ||
22 | |||
23 | /* | ||
24 | * Board specific bits | ||
25 | */ | ||
26 | #include "iq81340.h" | ||
27 | |||
28 | #endif /* _ASM_ARCH_HARDWARE_H */ | ||
diff --git a/include/asm-arm/arch-iop13xx/io.h b/include/asm-arm/arch-iop13xx/io.h new file mode 100644 index 000000000000..db6de2480a24 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/io.h | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * iop13xx custom ioremap implementation | ||
3 | * Copyright (c) 2005-2006, Intel Corporation. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms and conditions of the GNU General Public License, | ||
7 | * version 2, as published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
12 | * more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License along with | ||
15 | * this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
16 | * Place - Suite 330, Boston, MA 02111-1307 USA. | ||
17 | * | ||
18 | */ | ||
19 | #ifndef __ASM_ARM_ARCH_IO_H | ||
20 | #define __ASM_ARM_ARCH_IO_H | ||
21 | |||
22 | #define IO_SPACE_LIMIT 0xffffffff | ||
23 | |||
24 | #define __io(a) (a) | ||
25 | #define __mem_pci(a) (a) | ||
26 | #define __mem_isa(a) (a) | ||
27 | |||
28 | extern void __iomem * __ioremap(unsigned long, size_t, unsigned long); | ||
29 | extern void __iomem *__iop13xx_ioremap(unsigned long cookie, size_t size, | ||
30 | unsigned long flags); | ||
31 | extern void __iop13xx_iounmap(void __iomem *addr); | ||
32 | |||
33 | extern u32 iop13xx_atue_mem_base; | ||
34 | extern u32 iop13xx_atux_mem_base; | ||
35 | extern size_t iop13xx_atue_mem_size; | ||
36 | extern size_t iop13xx_atux_mem_size; | ||
37 | |||
38 | #define __arch_ioremap(a, s, f) __iop13xx_ioremap(a, s, f) | ||
39 | #define __arch_iounmap(a) __iop13xx_iounmap(a) | ||
40 | |||
41 | #endif | ||
diff --git a/include/asm-arm/arch-iop13xx/iop13xx.h b/include/asm-arm/arch-iop13xx/iop13xx.h new file mode 100644 index 000000000000..a88522a0ff8e --- /dev/null +++ b/include/asm-arm/arch-iop13xx/iop13xx.h | |||
@@ -0,0 +1,492 @@ | |||
1 | #ifndef _IOP13XX_HW_H_ | ||
2 | #define _IOP13XX_HW_H_ | ||
3 | |||
4 | #ifndef __ASSEMBLY__ | ||
5 | /* The ATU offsets can change based on the strapping */ | ||
6 | extern u32 iop13xx_atux_pmmr_offset; | ||
7 | extern u32 iop13xx_atue_pmmr_offset; | ||
8 | void iop13xx_init_irq(void); | ||
9 | void iop13xx_map_io(void); | ||
10 | void iop13xx_platform_init(void); | ||
11 | void iop13xx_init_irq(void); | ||
12 | void iop13xx_init_time(unsigned long tickrate); | ||
13 | unsigned long iop13xx_gettimeoffset(void); | ||
14 | |||
15 | /* handle cp6 access | ||
16 | * to do: handle access in entry-armv5.S and unify with | ||
17 | * the iop3xx implementation | ||
18 | * note: use iop13xx_cp6_enable_irq_save and iop13xx_cp6_irq_restore (irq.h) | ||
19 | * when interrupts are enabled | ||
20 | */ | ||
21 | static inline unsigned long iop13xx_cp6_save(void) | ||
22 | { | ||
23 | u32 temp, cp_flags; | ||
24 | |||
25 | asm volatile ( | ||
26 | "mrc p15, 0, %1, c15, c1, 0\n\t" | ||
27 | "orr %0, %1, #(1 << 6)\n\t" | ||
28 | "mcr p15, 0, %0, c15, c1, 0\n\t" | ||
29 | : "=r" (temp), "=r"(cp_flags)); | ||
30 | |||
31 | return cp_flags; | ||
32 | } | ||
33 | |||
34 | static inline void iop13xx_cp6_restore(unsigned long cp_flags) | ||
35 | { | ||
36 | asm volatile ( | ||
37 | "mcr p15, 0, %0, c15, c1, 0\n\t" | ||
38 | : : "r" (cp_flags) ); | ||
39 | } | ||
40 | |||
41 | /* CPUID CP6 R0 Page 0 */ | ||
42 | static inline int iop13xx_cpu_id(void) | ||
43 | { | ||
44 | int id; | ||
45 | asm volatile("mrc p6, 0, %0, c0, c0, 0":"=r" (id)); | ||
46 | return id; | ||
47 | } | ||
48 | |||
49 | #endif | ||
50 | |||
51 | /* | ||
52 | * IOP13XX I/O and Mem space regions for PCI autoconfiguration | ||
53 | */ | ||
54 | #define IOP13XX_MAX_RAM_SIZE 0x80000000UL /* 2GB */ | ||
55 | #define IOP13XX_PCI_OFFSET IOP13XX_MAX_RAM_SIZE | ||
56 | |||
57 | /* PCI MAP | ||
58 | * 0x0000.0000 - 0x8000.0000 1:1 mapping with Physical RAM | ||
59 | * 0x8000.0000 - 0x8800.0000 PCIX/PCIE memory window (128MB) | ||
60 | */ | ||
61 | #define IOP13XX_PCIX_IO_WINDOW_SIZE 0x10000UL | ||
62 | #define IOP13XX_PCIX_LOWER_IO_PA 0xfffb0000UL | ||
63 | #define IOP13XX_PCIX_LOWER_IO_VA 0xfec60000UL | ||
64 | #define IOP13XX_PCIX_LOWER_IO_BA 0x0fff0000UL | ||
65 | #define IOP13XX_PCIX_UPPER_IO_PA (IOP13XX_PCIX_LOWER_IO_PA +\ | ||
66 | IOP13XX_PCIX_IO_WINDOW_SIZE - 1) | ||
67 | #define IOP13XX_PCIX_UPPER_IO_VA (IOP13XX_PCIX_LOWER_IO_VA +\ | ||
68 | IOP13XX_PCIX_IO_WINDOW_SIZE - 1) | ||
69 | #define IOP13XX_PCIX_IO_OFFSET (IOP13XX_PCIX_LOWER_IO_VA -\ | ||
70 | IOP13XX_PCIX_LOWER_IO_BA) | ||
71 | #define IOP13XX_PCIX_IO_PHYS_TO_VIRT(addr) (u32) ((u32) addr -\ | ||
72 | (IOP13XX_PCIX_LOWER_IO_PA\ | ||
73 | - IOP13XX_PCIX_LOWER_IO_VA)) | ||
74 | |||
75 | #define IOP13XX_PCIX_MEM_PHYS_OFFSET 0x100000000ULL | ||
76 | #define IOP13XX_PCIX_MEM_WINDOW_SIZE 0x3a000000UL | ||
77 | #define IOP13XX_PCIX_LOWER_MEM_BA (PHYS_OFFSET + IOP13XX_PCI_OFFSET) | ||
78 | #define IOP13XX_PCIX_LOWER_MEM_PA (IOP13XX_PCIX_MEM_PHYS_OFFSET +\ | ||
79 | IOP13XX_PCIX_LOWER_MEM_BA) | ||
80 | #define IOP13XX_PCIX_UPPER_MEM_PA (IOP13XX_PCIX_LOWER_MEM_PA +\ | ||
81 | IOP13XX_PCIX_MEM_WINDOW_SIZE - 1) | ||
82 | #define IOP13XX_PCIX_UPPER_MEM_BA (IOP13XX_PCIX_LOWER_MEM_BA +\ | ||
83 | IOP13XX_PCIX_MEM_WINDOW_SIZE - 1) | ||
84 | |||
85 | #define IOP13XX_PCIX_MEM_COOKIE 0x80000000UL | ||
86 | #define IOP13XX_PCIX_LOWER_MEM_RA IOP13XX_PCIX_MEM_COOKIE | ||
87 | #define IOP13XX_PCIX_UPPER_MEM_RA (IOP13XX_PCIX_LOWER_MEM_RA +\ | ||
88 | IOP13XX_PCIX_MEM_WINDOW_SIZE - 1) | ||
89 | #define IOP13XX_PCIX_MEM_OFFSET (IOP13XX_PCIX_MEM_COOKIE -\ | ||
90 | IOP13XX_PCIX_LOWER_MEM_BA) | ||
91 | |||
92 | /* PCI-E ranges */ | ||
93 | #define IOP13XX_PCIE_IO_WINDOW_SIZE 0x10000UL | ||
94 | #define IOP13XX_PCIE_LOWER_IO_PA 0xfffd0000UL | ||
95 | #define IOP13XX_PCIE_LOWER_IO_VA 0xfed70000UL | ||
96 | #define IOP13XX_PCIE_LOWER_IO_BA 0x0fff0000UL | ||
97 | #define IOP13XX_PCIE_UPPER_IO_PA (IOP13XX_PCIE_LOWER_IO_PA +\ | ||
98 | IOP13XX_PCIE_IO_WINDOW_SIZE - 1) | ||
99 | #define IOP13XX_PCIE_UPPER_IO_VA (IOP13XX_PCIE_LOWER_IO_VA +\ | ||
100 | IOP13XX_PCIE_IO_WINDOW_SIZE - 1) | ||
101 | #define IOP13XX_PCIE_UPPER_IO_BA (IOP13XX_PCIE_LOWER_IO_BA +\ | ||
102 | IOP13XX_PCIE_IO_WINDOW_SIZE - 1) | ||
103 | #define IOP13XX_PCIE_IO_OFFSET (IOP13XX_PCIE_LOWER_IO_VA -\ | ||
104 | IOP13XX_PCIE_LOWER_IO_BA) | ||
105 | #define IOP13XX_PCIE_IO_PHYS_TO_VIRT(addr) (u32) ((u32) addr -\ | ||
106 | (IOP13XX_PCIE_LOWER_IO_PA\ | ||
107 | - IOP13XX_PCIE_LOWER_IO_VA)) | ||
108 | |||
109 | #define IOP13XX_PCIE_MEM_PHYS_OFFSET 0x200000000ULL | ||
110 | #define IOP13XX_PCIE_MEM_WINDOW_SIZE 0x3a000000UL | ||
111 | #define IOP13XX_PCIE_LOWER_MEM_BA (PHYS_OFFSET + IOP13XX_PCI_OFFSET) | ||
112 | #define IOP13XX_PCIE_LOWER_MEM_PA (IOP13XX_PCIE_MEM_PHYS_OFFSET +\ | ||
113 | IOP13XX_PCIE_LOWER_MEM_BA) | ||
114 | #define IOP13XX_PCIE_UPPER_MEM_PA (IOP13XX_PCIE_LOWER_MEM_PA +\ | ||
115 | IOP13XX_PCIE_MEM_WINDOW_SIZE - 1) | ||
116 | #define IOP13XX_PCIE_UPPER_MEM_BA (IOP13XX_PCIE_LOWER_MEM_BA +\ | ||
117 | IOP13XX_PCIE_MEM_WINDOW_SIZE - 1) | ||
118 | |||
119 | /* All 0xc000.0000 - 0xfdff.ffff addresses belong to PCIe */ | ||
120 | #define IOP13XX_PCIE_MEM_COOKIE 0xc0000000UL | ||
121 | #define IOP13XX_PCIE_LOWER_MEM_RA IOP13XX_PCIE_MEM_COOKIE | ||
122 | #define IOP13XX_PCIE_UPPER_MEM_RA (IOP13XX_PCIE_LOWER_MEM_RA +\ | ||
123 | IOP13XX_PCIE_MEM_WINDOW_SIZE - 1) | ||
124 | #define IOP13XX_PCIE_MEM_OFFSET (IOP13XX_PCIE_MEM_COOKIE -\ | ||
125 | IOP13XX_PCIE_LOWER_MEM_BA) | ||
126 | |||
127 | /* PBI Ranges */ | ||
128 | #define IOP13XX_PBI_LOWER_MEM_PA 0xf0000000UL | ||
129 | #define IOP13XX_PBI_MEM_WINDOW_SIZE 0x04000000UL | ||
130 | #define IOP13XX_PBI_MEM_COOKIE 0xfa000000UL | ||
131 | #define IOP13XX_PBI_LOWER_MEM_RA IOP13XX_PBI_MEM_COOKIE | ||
132 | #define IOP13XX_PBI_UPPER_MEM_RA (IOP13XX_PBI_LOWER_MEM_RA +\ | ||
133 | IOP13XX_PBI_MEM_WINDOW_SIZE - 1) | ||
134 | |||
135 | /* | ||
136 | * IOP13XX chipset registers | ||
137 | */ | ||
138 | #define IOP13XX_PMMR_PHYS_MEM_BASE 0xffd80000UL /* PMMR phys. address */ | ||
139 | #define IOP13XX_PMMR_VIRT_MEM_BASE 0xfee80000UL /* PMMR phys. address */ | ||
140 | #define IOP13XX_PMMR_MEM_WINDOW_SIZE 0x80000 | ||
141 | #define IOP13XX_PMMR_UPPER_MEM_VA (IOP13XX_PMMR_VIRT_MEM_BASE +\ | ||
142 | IOP13XX_PMMR_MEM_WINDOW_SIZE - 1) | ||
143 | #define IOP13XX_PMMR_UPPER_MEM_PA (IOP13XX_PMMR_PHYS_MEM_BASE +\ | ||
144 | IOP13XX_PMMR_MEM_WINDOW_SIZE - 1) | ||
145 | #define IOP13XX_PMMR_VIRT_TO_PHYS(addr) (u32) ((u32) addr +\ | ||
146 | (IOP13XX_PMMR_PHYS_MEM_BASE\ | ||
147 | - IOP13XX_PMMR_VIRT_MEM_BASE)) | ||
148 | #define IOP13XX_PMMR_PHYS_TO_VIRT(addr) (u32) ((u32) addr -\ | ||
149 | (IOP13XX_PMMR_PHYS_MEM_BASE\ | ||
150 | - IOP13XX_PMMR_VIRT_MEM_BASE)) | ||
151 | #define IOP13XX_REG_ADDR32(reg) (IOP13XX_PMMR_VIRT_MEM_BASE + (reg)) | ||
152 | #define IOP13XX_REG_ADDR16(reg) (IOP13XX_PMMR_VIRT_MEM_BASE + (reg)) | ||
153 | #define IOP13XX_REG_ADDR8(reg) (IOP13XX_PMMR_VIRT_MEM_BASE + (reg)) | ||
154 | #define IOP13XX_REG_ADDR32_PHYS(reg) (IOP13XX_PMMR_PHYS_MEM_BASE + (reg)) | ||
155 | #define IOP13XX_REG_ADDR16_PHYS(reg) (IOP13XX_PMMR_PHYS_MEM_BASE + (reg)) | ||
156 | #define IOP13XX_REG_ADDR8_PHYS(reg) (IOP13XX_PMMR_PHYS_MEM_BASE + (reg)) | ||
157 | #define IOP13XX_PMMR_SIZE 0x00080000 | ||
158 | |||
159 | /*=================== Defines for Platform Devices =====================*/ | ||
160 | #define IOP13XX_UART0_PHYS (IOP13XX_PMMR_PHYS_MEM_BASE | 0x00002300) | ||
161 | #define IOP13XX_UART1_PHYS (IOP13XX_PMMR_PHYS_MEM_BASE | 0x00002340) | ||
162 | #define IOP13XX_UART0_VIRT (IOP13XX_PMMR_VIRT_MEM_BASE | 0x00002300) | ||
163 | #define IOP13XX_UART1_VIRT (IOP13XX_PMMR_VIRT_MEM_BASE | 0x00002340) | ||
164 | |||
165 | #define IOP13XX_I2C0_PHYS (IOP13XX_PMMR_PHYS_MEM_BASE | 0x00002500) | ||
166 | #define IOP13XX_I2C1_PHYS (IOP13XX_PMMR_PHYS_MEM_BASE | 0x00002520) | ||
167 | #define IOP13XX_I2C2_PHYS (IOP13XX_PMMR_PHYS_MEM_BASE | 0x00002540) | ||
168 | #define IOP13XX_I2C0_VIRT (IOP13XX_PMMR_VIRT_MEM_BASE | 0x00002500) | ||
169 | #define IOP13XX_I2C1_VIRT (IOP13XX_PMMR_VIRT_MEM_BASE | 0x00002520) | ||
170 | #define IOP13XX_I2C2_VIRT (IOP13XX_PMMR_VIRT_MEM_BASE | 0x00002540) | ||
171 | |||
172 | /* ATU selection flags */ | ||
173 | /* IOP13XX_INIT_ATU_DEFAULT = Rely on CONFIG_IOP13XX_ATU* */ | ||
174 | #define IOP13XX_INIT_ATU_DEFAULT (0) | ||
175 | #define IOP13XX_INIT_ATU_ATUX (1 << 0) | ||
176 | #define IOP13XX_INIT_ATU_ATUE (1 << 1) | ||
177 | #define IOP13XX_INIT_ATU_NONE (1 << 2) | ||
178 | |||
179 | /* UART selection flags */ | ||
180 | /* IOP13XX_INIT_UART_DEFAULT = Rely on CONFIG_IOP13XX_UART* */ | ||
181 | #define IOP13XX_INIT_UART_DEFAULT (0) | ||
182 | #define IOP13XX_INIT_UART_0 (1 << 0) | ||
183 | #define IOP13XX_INIT_UART_1 (1 << 1) | ||
184 | |||
185 | /* I2C selection flags */ | ||
186 | /* IOP13XX_INIT_I2C_DEFAULT = Rely on CONFIG_IOP13XX_I2C* */ | ||
187 | #define IOP13XX_INIT_I2C_DEFAULT (0) | ||
188 | #define IOP13XX_INIT_I2C_0 (1 << 0) | ||
189 | #define IOP13XX_INIT_I2C_1 (1 << 1) | ||
190 | #define IOP13XX_INIT_I2C_2 (1 << 2) | ||
191 | |||
192 | #define IQ81340_NUM_UART 2 | ||
193 | #define IQ81340_NUM_I2C 3 | ||
194 | #define IQ81340_NUM_PHYS_MAP_FLASH 1 | ||
195 | #define IQ81340_MAX_PLAT_DEVICES (IQ81340_NUM_UART +\ | ||
196 | IQ81340_NUM_I2C +\ | ||
197 | IQ81340_NUM_PHYS_MAP_FLASH) | ||
198 | |||
199 | /*========================== PMMR offsets for key registers ============*/ | ||
200 | #define IOP13XX_ATU0_PMMR_OFFSET 0x00048000 | ||
201 | #define IOP13XX_ATU1_PMMR_OFFSET 0x0004c000 | ||
202 | #define IOP13XX_ATU2_PMMR_OFFSET 0x0004d000 | ||
203 | #define IOP13XX_ADMA0_PMMR_OFFSET 0x00000000 | ||
204 | #define IOP13XX_ADMA1_PMMR_OFFSET 0x00000200 | ||
205 | #define IOP13XX_ADMA2_PMMR_OFFSET 0x00000400 | ||
206 | #define IOP13XX_PBI_PMMR_OFFSET 0x00001580 | ||
207 | #define IOP13XX_ESSR0_PMMR_OFFSET 0x00002188 | ||
208 | #define IOP13XX_ESSR0 IOP13XX_REG_ADDR32(0x00002188) | ||
209 | |||
210 | #define IOP13XX_ESSR0_IFACE_MASK 0x00004000 /* Interface PCI-X / PCI-E */ | ||
211 | #define IOP13XX_CONTROLLER_ONLY (1 << 14) | ||
212 | #define IOP13XX_INTERFACE_SEL_PCIX (1 << 15) | ||
213 | |||
214 | #define IOP13XX_PMON_PMMR_OFFSET 0x0001A000 | ||
215 | #define IOP13XX_PMON_BASE (IOP13XX_PMMR_VIRT_MEM_BASE +\ | ||
216 | IOP13XX_PMON_PMMR_OFFSET) | ||
217 | #define IOP13XX_PMON_PHYSBASE (IOP13XX_PMMR_PHYS_MEM_BASE +\ | ||
218 | IOP13XX_PMON_PMMR_OFFSET) | ||
219 | |||
220 | #define IOP13XX_PMON_CMD0 (IOP13XX_PMON_BASE + 0x0) | ||
221 | #define IOP13XX_PMON_EVR0 (IOP13XX_PMON_BASE + 0x4) | ||
222 | #define IOP13XX_PMON_STS0 (IOP13XX_PMON_BASE + 0x8) | ||
223 | #define IOP13XX_PMON_DATA0 (IOP13XX_PMON_BASE + 0xC) | ||
224 | |||
225 | #define IOP13XX_PMON_CMD3 (IOP13XX_PMON_BASE + 0x30) | ||
226 | #define IOP13XX_PMON_EVR3 (IOP13XX_PMON_BASE + 0x34) | ||
227 | #define IOP13XX_PMON_STS3 (IOP13XX_PMON_BASE + 0x38) | ||
228 | #define IOP13XX_PMON_DATA3 (IOP13XX_PMON_BASE + 0x3C) | ||
229 | |||
230 | #define IOP13XX_PMON_CMD7 (IOP13XX_PMON_BASE + 0x70) | ||
231 | #define IOP13XX_PMON_EVR7 (IOP13XX_PMON_BASE + 0x74) | ||
232 | #define IOP13XX_PMON_STS7 (IOP13XX_PMON_BASE + 0x78) | ||
233 | #define IOP13XX_PMON_DATA7 (IOP13XX_PMON_BASE + 0x7C) | ||
234 | |||
235 | #define IOP13XX_PMONEN (IOP13XX_PMMR_VIRT_MEM_BASE + 0x4E040) | ||
236 | #define IOP13XX_PMONSTAT (IOP13XX_PMMR_VIRT_MEM_BASE + 0x4E044) | ||
237 | |||
238 | /*================================ATU===================================*/ | ||
239 | #define IOP13XX_ATUX_OFFSET(ofs) IOP13XX_REG_ADDR32(\ | ||
240 | iop13xx_atux_pmmr_offset + (ofs)) | ||
241 | |||
242 | #define IOP13XX_ATUX_DID IOP13XX_REG_ADDR16(\ | ||
243 | iop13xx_atux_pmmr_offset + 0x2) | ||
244 | |||
245 | #define IOP13XX_ATUX_ATUCMD IOP13XX_REG_ADDR16(\ | ||
246 | iop13xx_atux_pmmr_offset + 0x4) | ||
247 | #define IOP13XX_ATUX_ATUSR IOP13XX_REG_ADDR16(\ | ||
248 | iop13xx_atux_pmmr_offset + 0x6) | ||
249 | |||
250 | #define IOP13XX_ATUX_IABAR0 IOP13XX_ATUX_OFFSET(0x10) | ||
251 | #define IOP13XX_ATUX_IAUBAR0 IOP13XX_ATUX_OFFSET(0x14) | ||
252 | #define IOP13XX_ATUX_IABAR1 IOP13XX_ATUX_OFFSET(0x18) | ||
253 | #define IOP13XX_ATUX_IAUBAR1 IOP13XX_ATUX_OFFSET(0x1c) | ||
254 | #define IOP13XX_ATUX_IABAR2 IOP13XX_ATUX_OFFSET(0x20) | ||
255 | #define IOP13XX_ATUX_IAUBAR2 IOP13XX_ATUX_OFFSET(0x24) | ||
256 | #define IOP13XX_ATUX_IALR0 IOP13XX_ATUX_OFFSET(0x40) | ||
257 | #define IOP13XX_ATUX_IATVR0 IOP13XX_ATUX_OFFSET(0x44) | ||
258 | #define IOP13XX_ATUX_IAUTVR0 IOP13XX_ATUX_OFFSET(0x48) | ||
259 | #define IOP13XX_ATUX_IALR1 IOP13XX_ATUX_OFFSET(0x4c) | ||
260 | #define IOP13XX_ATUX_IATVR1 IOP13XX_ATUX_OFFSET(0x50) | ||
261 | #define IOP13XX_ATUX_IAUTVR1 IOP13XX_ATUX_OFFSET(0x54) | ||
262 | #define IOP13XX_ATUX_IALR2 IOP13XX_ATUX_OFFSET(0x58) | ||
263 | #define IOP13XX_ATUX_IATVR2 IOP13XX_ATUX_OFFSET(0x5c) | ||
264 | #define IOP13XX_ATUX_IAUTVR2 IOP13XX_ATUX_OFFSET(0x60) | ||
265 | #define IOP13XX_ATUX_ATUCR IOP13XX_ATUX_OFFSET(0x70) | ||
266 | #define IOP13XX_ATUX_PCSR IOP13XX_ATUX_OFFSET(0x74) | ||
267 | #define IOP13XX_ATUX_ATUISR IOP13XX_ATUX_OFFSET(0x78) | ||
268 | #define IOP13XX_ATUX_PCIXSR IOP13XX_ATUX_OFFSET(0xD4) | ||
269 | #define IOP13XX_ATUX_IABAR3 IOP13XX_ATUX_OFFSET(0x200) | ||
270 | #define IOP13XX_ATUX_IAUBAR3 IOP13XX_ATUX_OFFSET(0x204) | ||
271 | #define IOP13XX_ATUX_IALR3 IOP13XX_ATUX_OFFSET(0x208) | ||
272 | #define IOP13XX_ATUX_IATVR3 IOP13XX_ATUX_OFFSET(0x20c) | ||
273 | #define IOP13XX_ATUX_IAUTVR3 IOP13XX_ATUX_OFFSET(0x210) | ||
274 | |||
275 | #define IOP13XX_ATUX_OIOBAR IOP13XX_ATUX_OFFSET(0x300) | ||
276 | #define IOP13XX_ATUX_OIOWTVR IOP13XX_ATUX_OFFSET(0x304) | ||
277 | #define IOP13XX_ATUX_OUMBAR0 IOP13XX_ATUX_OFFSET(0x308) | ||
278 | #define IOP13XX_ATUX_OUMWTVR0 IOP13XX_ATUX_OFFSET(0x30c) | ||
279 | #define IOP13XX_ATUX_OUMBAR1 IOP13XX_ATUX_OFFSET(0x310) | ||
280 | #define IOP13XX_ATUX_OUMWTVR1 IOP13XX_ATUX_OFFSET(0x314) | ||
281 | #define IOP13XX_ATUX_OUMBAR2 IOP13XX_ATUX_OFFSET(0x318) | ||
282 | #define IOP13XX_ATUX_OUMWTVR2 IOP13XX_ATUX_OFFSET(0x31c) | ||
283 | #define IOP13XX_ATUX_OUMBAR3 IOP13XX_ATUX_OFFSET(0x320) | ||
284 | #define IOP13XX_ATUX_OUMWTVR3 IOP13XX_ATUX_OFFSET(0x324) | ||
285 | #define IOP13XX_ATUX_OUDMABAR IOP13XX_ATUX_OFFSET(0x328) | ||
286 | #define IOP13XX_ATUX_OUMSIBAR IOP13XX_ATUX_OFFSET(0x32c) | ||
287 | #define IOP13XX_ATUX_OCCAR IOP13XX_ATUX_OFFSET(0x330) | ||
288 | #define IOP13XX_ATUX_OCCDR IOP13XX_ATUX_OFFSET(0x334) | ||
289 | |||
290 | #define IOP13XX_ATUX_ATUCR_OUT_EN (1 << 1) | ||
291 | #define IOP13XX_ATUX_PCSR_CENTRAL_RES (1 << 25) | ||
292 | #define IOP13XX_ATUX_PCSR_P_RSTOUT (1 << 21) | ||
293 | #define IOP13XX_ATUX_PCSR_OUT_Q_BUSY (1 << 15) | ||
294 | #define IOP13XX_ATUX_PCSR_IN_Q_BUSY (1 << 14) | ||
295 | #define IOP13XX_ATUX_PCSR_FREQ_OFFSET (16) | ||
296 | |||
297 | #define IOP13XX_ATUX_STAT_PCI_IFACE_ERR (1 << 18) | ||
298 | #define IOP13XX_ATUX_STAT_VPD_ADDR (1 << 17) | ||
299 | #define IOP13XX_ATUX_STAT_INT_PAR_ERR (1 << 16) | ||
300 | #define IOP13XX_ATUX_STAT_CFG_WRITE (1 << 15) | ||
301 | #define IOP13XX_ATUX_STAT_ERR_COR (1 << 14) | ||
302 | #define IOP13XX_ATUX_STAT_TX_SCEM (1 << 13) | ||
303 | #define IOP13XX_ATUX_STAT_REC_SCEM (1 << 12) | ||
304 | #define IOP13XX_ATUX_STAT_POWER_TRAN (1 << 11) | ||
305 | #define IOP13XX_ATUX_STAT_TX_SERR (1 << 10) | ||
306 | #define IOP13XX_ATUX_STAT_DET_PAR_ERR (1 << 9 ) | ||
307 | #define IOP13XX_ATUX_STAT_BIST (1 << 8 ) | ||
308 | #define IOP13XX_ATUX_STAT_INT_REC_MABORT (1 << 7 ) | ||
309 | #define IOP13XX_ATUX_STAT_REC_SERR (1 << 4 ) | ||
310 | #define IOP13XX_ATUX_STAT_EXT_REC_MABORT (1 << 3 ) | ||
311 | #define IOP13XX_ATUX_STAT_EXT_REC_TABORT (1 << 2 ) | ||
312 | #define IOP13XX_ATUX_STAT_EXT_SIG_TABORT (1 << 1 ) | ||
313 | #define IOP13XX_ATUX_STAT_MASTER_DATA_PAR (1 << 0 ) | ||
314 | |||
315 | #define IOP13XX_ATUX_PCIXSR_BUS_NUM (8) | ||
316 | #define IOP13XX_ATUX_PCIXSR_DEV_NUM (3) | ||
317 | #define IOP13XX_ATUX_PCIXSR_FUNC_NUM (0) | ||
318 | |||
319 | #define IOP13XX_ATUX_IALR_DISABLE 0x00000001 | ||
320 | #define IOP13XX_ATUX_OUMBAR_ENABLE 0x80000000 | ||
321 | |||
322 | #define IOP13XX_ATUE_OFFSET(ofs) IOP13XX_REG_ADDR32(\ | ||
323 | iop13xx_atue_pmmr_offset + (ofs)) | ||
324 | |||
325 | #define IOP13XX_ATUE_DID IOP13XX_REG_ADDR16(\ | ||
326 | iop13xx_atue_pmmr_offset + 0x2) | ||
327 | #define IOP13XX_ATUE_ATUCMD IOP13XX_REG_ADDR16(\ | ||
328 | iop13xx_atue_pmmr_offset + 0x4) | ||
329 | #define IOP13XX_ATUE_ATUSR IOP13XX_REG_ADDR16(\ | ||
330 | iop13xx_atue_pmmr_offset + 0x6) | ||
331 | |||
332 | #define IOP13XX_ATUE_IABAR0 IOP13XX_ATUE_OFFSET(0x10) | ||
333 | #define IOP13XX_ATUE_IAUBAR0 IOP13XX_ATUE_OFFSET(0x14) | ||
334 | #define IOP13XX_ATUE_IABAR1 IOP13XX_ATUE_OFFSET(0x18) | ||
335 | #define IOP13XX_ATUE_IAUBAR1 IOP13XX_ATUE_OFFSET(0x1c) | ||
336 | #define IOP13XX_ATUE_IABAR2 IOP13XX_ATUE_OFFSET(0x20) | ||
337 | #define IOP13XX_ATUE_IAUBAR2 IOP13XX_ATUE_OFFSET(0x24) | ||
338 | #define IOP13XX_ATUE_IALR0 IOP13XX_ATUE_OFFSET(0x40) | ||
339 | #define IOP13XX_ATUE_IATVR0 IOP13XX_ATUE_OFFSET(0x44) | ||
340 | #define IOP13XX_ATUE_IAUTVR0 IOP13XX_ATUE_OFFSET(0x48) | ||
341 | #define IOP13XX_ATUE_IALR1 IOP13XX_ATUE_OFFSET(0x4c) | ||
342 | #define IOP13XX_ATUE_IATVR1 IOP13XX_ATUE_OFFSET(0x50) | ||
343 | #define IOP13XX_ATUE_IAUTVR1 IOP13XX_ATUE_OFFSET(0x54) | ||
344 | #define IOP13XX_ATUE_IALR2 IOP13XX_ATUE_OFFSET(0x58) | ||
345 | #define IOP13XX_ATUE_IATVR2 IOP13XX_ATUE_OFFSET(0x5c) | ||
346 | #define IOP13XX_ATUE_IAUTVR2 IOP13XX_ATUE_OFFSET(0x60) | ||
347 | #define IOP13XX_ATUE_PE_LSTS IOP13XX_REG_ADDR16(\ | ||
348 | iop13xx_atue_pmmr_offset + 0xe2) | ||
349 | #define IOP13XX_ATUE_OIOWTVR IOP13XX_ATUE_OFFSET(0x304) | ||
350 | #define IOP13XX_ATUE_OUMBAR0 IOP13XX_ATUE_OFFSET(0x308) | ||
351 | #define IOP13XX_ATUE_OUMWTVR0 IOP13XX_ATUE_OFFSET(0x30c) | ||
352 | #define IOP13XX_ATUE_OUMBAR1 IOP13XX_ATUE_OFFSET(0x310) | ||
353 | #define IOP13XX_ATUE_OUMWTVR1 IOP13XX_ATUE_OFFSET(0x314) | ||
354 | #define IOP13XX_ATUE_OUMBAR2 IOP13XX_ATUE_OFFSET(0x318) | ||
355 | #define IOP13XX_ATUE_OUMWTVR2 IOP13XX_ATUE_OFFSET(0x31c) | ||
356 | #define IOP13XX_ATUE_OUMBAR3 IOP13XX_ATUE_OFFSET(0x320) | ||
357 | #define IOP13XX_ATUE_OUMWTVR3 IOP13XX_ATUE_OFFSET(0x324) | ||
358 | |||
359 | #define IOP13XX_ATUE_ATUCR IOP13XX_ATUE_OFFSET(0x70) | ||
360 | #define IOP13XX_ATUE_PCSR IOP13XX_ATUE_OFFSET(0x74) | ||
361 | #define IOP13XX_ATUE_ATUISR IOP13XX_ATUE_OFFSET(0x78) | ||
362 | #define IOP13XX_ATUE_OIOBAR IOP13XX_ATUE_OFFSET(0x300) | ||
363 | #define IOP13XX_ATUE_OCCAR IOP13XX_ATUE_OFFSET(0x32c) | ||
364 | #define IOP13XX_ATUE_OCCDR IOP13XX_ATUE_OFFSET(0x330) | ||
365 | |||
366 | #define IOP13XX_ATUE_PIE_STS IOP13XX_ATUE_OFFSET(0x384) | ||
367 | #define IOP13XX_ATUE_PIE_MSK IOP13XX_ATUE_OFFSET(0x388) | ||
368 | |||
369 | #define IOP13XX_ATUE_ATUCR_IVM (1 << 6) | ||
370 | #define IOP13XX_ATUE_ATUCR_OUT_EN (1 << 1) | ||
371 | #define IOP13XX_ATUE_OCCAR_BUS_NUM (24) | ||
372 | #define IOP13XX_ATUE_OCCAR_DEV_NUM (19) | ||
373 | #define IOP13XX_ATUE_OCCAR_FUNC_NUM (16) | ||
374 | #define IOP13XX_ATUE_OCCAR_EXT_REG (8) | ||
375 | #define IOP13XX_ATUE_OCCAR_REG (2) | ||
376 | |||
377 | #define IOP13XX_ATUE_PCSR_BUS_NUM (24) | ||
378 | #define IOP13XX_ATUE_PCSR_DEV_NUM (19) | ||
379 | #define IOP13XX_ATUE_PCSR_FUNC_NUM (16) | ||
380 | #define IOP13XX_ATUE_PCSR_OUT_Q_BUSY (1 << 15) | ||
381 | #define IOP13XX_ATUE_PCSR_IN_Q_BUSY (1 << 14) | ||
382 | #define IOP13XX_ATUE_PCSR_END_POINT (1 << 13) | ||
383 | #define IOP13XX_ATUE_PCSR_LLRB_BUSY (1 << 12) | ||
384 | |||
385 | #define IOP13XX_ATUE_PCSR_BUS_NUM_MASK (0xff) | ||
386 | #define IOP13XX_ATUE_PCSR_DEV_NUM_MASK (0x1f) | ||
387 | #define IOP13XX_ATUE_PCSR_FUNC_NUM_MASK (0x7) | ||
388 | |||
389 | #define IOP13XX_ATUE_PCSR_CORE_RESET (8) | ||
390 | #define IOP13XX_ATUE_PCSR_FUNC_NUM (16) | ||
391 | |||
392 | #define IOP13XX_ATUE_LSTS_TRAINING (1 << 11) | ||
393 | #define IOP13XX_ATUE_STAT_SLOT_PWR_MSG (1 << 28) | ||
394 | #define IOP13XX_ATUE_STAT_PME (1 << 27) | ||
395 | #define IOP13XX_ATUE_STAT_HOT_PLUG_MSG (1 << 26) | ||
396 | #define IOP13XX_ATUE_STAT_IVM (1 << 25) | ||
397 | #define IOP13XX_ATUE_STAT_BIST (1 << 24) | ||
398 | #define IOP13XX_ATUE_STAT_CFG_WRITE (1 << 18) | ||
399 | #define IOP13XX_ATUE_STAT_VPD_ADDR (1 << 17) | ||
400 | #define IOP13XX_ATUE_STAT_POWER_TRAN (1 << 16) | ||
401 | #define IOP13XX_ATUE_STAT_HALT_ON_ERROR (1 << 13) | ||
402 | #define IOP13XX_ATUE_STAT_ROOT_SYS_ERR (1 << 12) | ||
403 | #define IOP13XX_ATUE_STAT_ROOT_ERR_MSG (1 << 11) | ||
404 | #define IOP13XX_ATUE_STAT_PCI_IFACE_ERR (1 << 10) | ||
405 | #define IOP13XX_ATUE_STAT_ERR_COR (1 << 9 ) | ||
406 | #define IOP13XX_ATUE_STAT_ERR_UNCOR (1 << 8 ) | ||
407 | #define IOP13XX_ATUE_STAT_CRS (1 << 7 ) | ||
408 | #define IOP13XX_ATUE_STAT_LNK_DWN (1 << 6 ) | ||
409 | #define IOP13XX_ATUE_STAT_INT_REC_MABORT (1 << 5 ) | ||
410 | #define IOP13XX_ATUE_STAT_DET_PAR_ERR (1 << 4 ) | ||
411 | #define IOP13XX_ATUE_STAT_EXT_REC_MABORT (1 << 3 ) | ||
412 | #define IOP13XX_ATUE_STAT_SIG_TABORT (1 << 2 ) | ||
413 | #define IOP13XX_ATUE_STAT_EXT_REC_TABORT (1 << 1 ) | ||
414 | #define IOP13XX_ATUE_STAT_MASTER_DATA_PAR (1 << 0 ) | ||
415 | |||
416 | #define IOP13XX_ATUE_ESTAT_REC_UNSUPPORTED_COMP_REQ (1 << 31) | ||
417 | #define IOP13XX_ATUE_ESTAT_REC_COMPLETER_ABORT (1 << 30) | ||
418 | #define IOP13XX_ATUE_ESTAT_TX_POISONED_TLP (1 << 29) | ||
419 | #define IOP13XX_ATUE_ESTAT_TX_PAR_ERR (1 << 28) | ||
420 | #define IOP13XX_ATUE_ESTAT_REC_UNSUPPORTED_REQ (1 << 20) | ||
421 | #define IOP13XX_ATUE_ESTAT_REC_ECRC_ERR (1 << 19) | ||
422 | #define IOP13XX_ATUE_ESTAT_REC_MALFORMED_TLP (1 << 18) | ||
423 | #define IOP13XX_ATUE_ESTAT_TX_RECEIVER_OVERFLOW (1 << 17) | ||
424 | #define IOP13XX_ATUE_ESTAT_REC_UNEXPECTED_COMP (1 << 16) | ||
425 | #define IOP13XX_ATUE_ESTAT_INT_COMP_ABORT (1 << 15) | ||
426 | #define IOP13XX_ATUE_ESTAT_COMP_TIMEOUT (1 << 14) | ||
427 | #define IOP13XX_ATUE_ESTAT_FLOW_CONTROL_ERR (1 << 13) | ||
428 | #define IOP13XX_ATUE_ESTAT_REC_POISONED_TLP (1 << 12) | ||
429 | #define IOP13XX_ATUE_ESTAT_DATA_LNK_ERR (1 << 4 ) | ||
430 | #define IOP13XX_ATUE_ESTAT_TRAINING_ERR (1 << 0 ) | ||
431 | |||
432 | #define IOP13XX_ATUE_IALR_DISABLE (0x00000001) | ||
433 | #define IOP13XX_ATUE_OUMBAR_ENABLE (0x80000000) | ||
434 | #define IOP13XX_ATU_OUMBAR_FUNC_NUM (28) | ||
435 | #define IOP13XX_ATU_OUMBAR_FUNC_NUM_MASK (0x7) | ||
436 | /*=======================================================================*/ | ||
437 | |||
438 | /*==============================ADMA UNITS===============================*/ | ||
439 | #define IOP13XX_ADMA_PHYS_BASE(chan) IOP13XX_REG_ADDR32_PHYS((chan << 9)) | ||
440 | #define IOP13XX_ADMA_UPPER_PA(chan) (IOP13XX_ADMA_PHYS_BASE(chan) + 0xc0) | ||
441 | #define IOP13XX_ADMA_OFFSET(chan, ofs) IOP13XX_REG_ADDR32((chan << 9) + (ofs)) | ||
442 | |||
443 | #define IOP13XX_ADMA_ACCR(chan) IOP13XX_ADMA_OFFSET(chan, 0x0) | ||
444 | #define IOP13XX_ADMA_ACSR(chan) IOP13XX_ADMA_OFFSET(chan, 0x4) | ||
445 | #define IOP13XX_ADMA_ADAR(chan) IOP13XX_ADMA_OFFSET(chan, 0x8) | ||
446 | #define IOP13XX_ADMA_IIPCR(chan) IOP13XX_ADMA_OFFSET(chan, 0x18) | ||
447 | #define IOP13XX_ADMA_IIPAR(chan) IOP13XX_ADMA_OFFSET(chan, 0x1c) | ||
448 | #define IOP13XX_ADMA_IIPUAR(chan) IOP13XX_ADMA_OFFSET(chan, 0x20) | ||
449 | #define IOP13XX_ADMA_ANDAR(chan) IOP13XX_ADMA_OFFSET(chan, 0x24) | ||
450 | #define IOP13XX_ADMA_ADCR(chan) IOP13XX_ADMA_OFFSET(chan, 0x28) | ||
451 | #define IOP13XX_ADMA_CARMD(chan) IOP13XX_ADMA_OFFSET(chan, 0x2c) | ||
452 | #define IOP13XX_ADMA_ABCR(chan) IOP13XX_ADMA_OFFSET(chan, 0x30) | ||
453 | #define IOP13XX_ADMA_DLADR(chan) IOP13XX_ADMA_OFFSET(chan, 0x34) | ||
454 | #define IOP13XX_ADMA_DUADR(chan) IOP13XX_ADMA_OFFSET(chan, 0x38) | ||
455 | #define IOP13XX_ADMA_SLAR(src, chan) IOP13XX_ADMA_OFFSET(chan, 0x3c + (src <<3)) | ||
456 | #define IOP13XX_ADMA_SUAR(src, chan) IOP13XX_ADMA_OFFSET(chan, 0x40 + (src <<3)) | ||
457 | |||
458 | /*==============================XSI BRIDGE===============================*/ | ||
459 | #define IOP13XX_XBG_BECSR IOP13XX_REG_ADDR32(0x178c) | ||
460 | #define IOP13XX_XBG_BERAR IOP13XX_REG_ADDR32(0x1790) | ||
461 | #define IOP13XX_XBG_BERUAR IOP13XX_REG_ADDR32(0x1794) | ||
462 | #define is_atue_occdr_error(x) ((__raw_readl(IOP13XX_XBG_BERAR) == \ | ||
463 | IOP13XX_PMMR_VIRT_TO_PHYS(\ | ||
464 | IOP13XX_ATUE_OCCDR))\ | ||
465 | && (__raw_readl(IOP13XX_XBG_BECSR) & 1)) | ||
466 | #define is_atux_occdr_error(x) ((__raw_readl(IOP13XX_XBG_BERAR) == \ | ||
467 | IOP13XX_PMMR_VIRT_TO_PHYS(\ | ||
468 | IOP13XX_ATUX_OCCDR))\ | ||
469 | && (__raw_readl(IOP13XX_XBG_BECSR) & 1)) | ||
470 | /*=======================================================================*/ | ||
471 | |||
472 | #define IOP13XX_PBI_OFFSET(ofs) IOP13XX_REG_ADDR32(IOP13XX_PBI_PMMR_OFFSET +\ | ||
473 | (ofs)) | ||
474 | |||
475 | #define IOP13XX_PBI_CR IOP13XX_PBI_OFFSET(0x0) | ||
476 | #define IOP13XX_PBI_SR IOP13XX_PBI_OFFSET(0x4) | ||
477 | #define IOP13XX_PBI_BAR0 IOP13XX_PBI_OFFSET(0x8) | ||
478 | #define IOP13XX_PBI_LR0 IOP13XX_PBI_OFFSET(0xc) | ||
479 | #define IOP13XX_PBI_BAR1 IOP13XX_PBI_OFFSET(0x10) | ||
480 | #define IOP13XX_PBI_LR1 IOP13XX_PBI_OFFSET(0x14) | ||
481 | |||
482 | #define IOP13XX_TMR_TC 0x01 | ||
483 | #define IOP13XX_TMR_EN 0x02 | ||
484 | #define IOP13XX_TMR_RELOAD 0x04 | ||
485 | #define IOP13XX_TMR_PRIVILEGED 0x08 | ||
486 | |||
487 | #define IOP13XX_TMR_RATIO_1_1 0x00 | ||
488 | #define IOP13XX_TMR_RATIO_4_1 0x10 | ||
489 | #define IOP13XX_TMR_RATIO_8_1 0x20 | ||
490 | #define IOP13XX_TMR_RATIO_16_1 0x30 | ||
491 | |||
492 | #endif /* _IOP13XX_HW_H_ */ | ||
diff --git a/include/asm-arm/arch-iop13xx/iq81340.h b/include/asm-arm/arch-iop13xx/iq81340.h new file mode 100644 index 000000000000..b98f8f109c22 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/iq81340.h | |||
@@ -0,0 +1,31 @@ | |||
1 | #ifndef _IQ81340_H_ | ||
2 | #define _IQ81340_H_ | ||
3 | |||
4 | #define IQ81340_PCE_BAR0 IOP13XX_PBI_LOWER_MEM_RA | ||
5 | #define IQ81340_PCE_BAR1 (IQ81340_PCE_BAR0 + 0x02000000) | ||
6 | |||
7 | #define IQ81340_FLASHBASE IQ81340_PCE_BAR0 /* Flash */ | ||
8 | |||
9 | #define IQ81340_PCE_BAR1_OFFSET(a) (IQ81340_PCE_BAR1 + (a)) | ||
10 | |||
11 | #define IQ81340_PRD_CODE IQ81340_PCE_BAR1_OFFSET(0) | ||
12 | #define IQ81340_BRD_STEP IQ81340_PCE_BAR1_OFFSET(0x10000) | ||
13 | #define IQ81340_CPLD_REV IQ81340_PCE_BAR1_OFFSET(0x20000) | ||
14 | #define IQ81340_LED IQ81340_PCE_BAR1_OFFSET(0x30000) | ||
15 | #define IQ81340_LHEX IQ81340_PCE_BAR1_OFFSET(0x40000) | ||
16 | #define IQ81340_RHEX IQ81340_PCE_BAR1_OFFSET(0x50000) | ||
17 | #define IQ81340_BUZZER IQ81340_PCE_BAR1_OFFSET(0x60000) | ||
18 | #define IQ81340_32K_NVRAM IQ81340_PCE_BAR1_OFFSET(0x70000) | ||
19 | #define IQ81340_256K_NVRAM IQ81340_PCE_BAR1_OFFSET(0x80000) | ||
20 | #define IQ81340_ROTARY_SW IQ81340_PCE_BAR1_OFFSET(0xd0000) | ||
21 | #define IQ81340_BATT_STAT IQ81340_PCE_BAR1_OFFSET(0xf0000) | ||
22 | #define IQ81340_CMP_FLSH IQ81340_PCE_BAR1_OFFSET(0x1000000) /* 16MB */ | ||
23 | |||
24 | #define PBI_CF_IDE_BASE (IQ81340_CMP_FLSH) | ||
25 | #define PBI_CF_BAR_ADDR (IOP13XX_PBI_BAR1) | ||
26 | |||
27 | /* These are the values used in the Machine description */ | ||
28 | #define PHYS_IO 0xfeffff00 | ||
29 | #define IO_PG_OFFSET 0xffffff00 | ||
30 | #define BOOT_PARAM_OFFSET 0x00000100 | ||
31 | #endif /* _IQ81340_H_ */ | ||
diff --git a/include/asm-arm/arch-iop13xx/irqs.h b/include/asm-arm/arch-iop13xx/irqs.h new file mode 100644 index 000000000000..442e35a40359 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/irqs.h | |||
@@ -0,0 +1,207 @@ | |||
1 | #ifndef _IOP13XX_IRQS_H_ | ||
2 | #define _IOP13XX_IRQS_H_ | ||
3 | |||
4 | #ifndef __ASSEMBLER__ | ||
5 | #include <linux/types.h> | ||
6 | #include <asm/system.h> /* local_irq_save */ | ||
7 | #include <asm/arch/iop13xx.h> /* iop13xx_cp6_* */ | ||
8 | |||
9 | /* INTPND0 CP6 R0 Page 3 | ||
10 | */ | ||
11 | static inline u32 read_intpnd_0(void) | ||
12 | { | ||
13 | u32 val; | ||
14 | asm volatile("mrc p6, 0, %0, c0, c3, 0":"=r" (val)); | ||
15 | return val; | ||
16 | } | ||
17 | |||
18 | /* INTPND1 CP6 R1 Page 3 | ||
19 | */ | ||
20 | static inline u32 read_intpnd_1(void) | ||
21 | { | ||
22 | u32 val; | ||
23 | asm volatile("mrc p6, 0, %0, c1, c3, 0":"=r" (val)); | ||
24 | return val; | ||
25 | } | ||
26 | |||
27 | /* INTPND2 CP6 R2 Page 3 | ||
28 | */ | ||
29 | static inline u32 read_intpnd_2(void) | ||
30 | { | ||
31 | u32 val; | ||
32 | asm volatile("mrc p6, 0, %0, c2, c3, 0":"=r" (val)); | ||
33 | return val; | ||
34 | } | ||
35 | |||
36 | /* INTPND3 CP6 R3 Page 3 | ||
37 | */ | ||
38 | static inline u32 read_intpnd_3(void) | ||
39 | { | ||
40 | u32 val; | ||
41 | asm volatile("mrc p6, 0, %0, c3, c3, 0":"=r" (val)); | ||
42 | return val; | ||
43 | } | ||
44 | |||
45 | static inline void | ||
46 | iop13xx_cp6_enable_irq_save(unsigned long *cp_flags, unsigned long *irq_flags) | ||
47 | { | ||
48 | local_irq_save(*irq_flags); | ||
49 | *cp_flags = iop13xx_cp6_save(); | ||
50 | } | ||
51 | |||
52 | static inline void | ||
53 | iop13xx_cp6_irq_restore(unsigned long *cp_flags, | ||
54 | unsigned long *irq_flags) | ||
55 | { | ||
56 | iop13xx_cp6_restore(*cp_flags); | ||
57 | local_irq_restore(*irq_flags); | ||
58 | } | ||
59 | #endif | ||
60 | |||
61 | #define INTBASE 0 | ||
62 | #define INTSIZE_4 1 | ||
63 | |||
64 | /* | ||
65 | * iop34x chipset interrupts | ||
66 | */ | ||
67 | #define IOP13XX_IRQ(x) (IOP13XX_IRQ_OFS + (x)) | ||
68 | |||
69 | /* | ||
70 | * On IRQ or FIQ register | ||
71 | */ | ||
72 | #define IRQ_IOP13XX_ADMA0_EOT (0) | ||
73 | #define IRQ_IOP13XX_ADMA0_EOC (1) | ||
74 | #define IRQ_IOP13XX_ADMA1_EOT (2) | ||
75 | #define IRQ_IOP13XX_ADMA1_EOC (3) | ||
76 | #define IRQ_IOP13XX_ADMA2_EOT (4) | ||
77 | #define IRQ_IOP13XX_ADMA2_EOC (5) | ||
78 | #define IRQ_IOP134_WATCHDOG (6) | ||
79 | #define IRQ_IOP13XX_RSVD_7 (7) | ||
80 | #define IRQ_IOP13XX_TIMER0 (8) | ||
81 | #define IRQ_IOP13XX_TIMER1 (9) | ||
82 | #define IRQ_IOP13XX_I2C_0 (10) | ||
83 | #define IRQ_IOP13XX_I2C_1 (11) | ||
84 | #define IRQ_IOP13XX_MSG (12) | ||
85 | #define IRQ_IOP13XX_MSGIBQ (13) | ||
86 | #define IRQ_IOP13XX_ATU_IM (14) | ||
87 | #define IRQ_IOP13XX_ATU_BIST (15) | ||
88 | #define IRQ_IOP13XX_PPMU (16) | ||
89 | #define IRQ_IOP13XX_COREPMU (17) | ||
90 | #define IRQ_IOP13XX_CORECACHE (18) | ||
91 | #define IRQ_IOP13XX_RSVD_19 (19) | ||
92 | #define IRQ_IOP13XX_RSVD_20 (20) | ||
93 | #define IRQ_IOP13XX_RSVD_21 (21) | ||
94 | #define IRQ_IOP13XX_RSVD_22 (22) | ||
95 | #define IRQ_IOP13XX_RSVD_23 (23) | ||
96 | #define IRQ_IOP13XX_XINT0 (24) | ||
97 | #define IRQ_IOP13XX_XINT1 (25) | ||
98 | #define IRQ_IOP13XX_XINT2 (26) | ||
99 | #define IRQ_IOP13XX_XINT3 (27) | ||
100 | #define IRQ_IOP13XX_XINT4 (28) | ||
101 | #define IRQ_IOP13XX_XINT5 (29) | ||
102 | #define IRQ_IOP13XX_XINT6 (30) | ||
103 | #define IRQ_IOP13XX_XINT7 (31) | ||
104 | /* IINTSRC1 bit */ | ||
105 | #define IRQ_IOP13XX_XINT8 (32) /* 0 */ | ||
106 | #define IRQ_IOP13XX_XINT9 (33) /* 1 */ | ||
107 | #define IRQ_IOP13XX_XINT10 (34) /* 2 */ | ||
108 | #define IRQ_IOP13XX_XINT11 (35) /* 3 */ | ||
109 | #define IRQ_IOP13XX_XINT12 (36) /* 4 */ | ||
110 | #define IRQ_IOP13XX_XINT13 (37) /* 5 */ | ||
111 | #define IRQ_IOP13XX_XINT14 (38) /* 6 */ | ||
112 | #define IRQ_IOP13XX_XINT15 (39) /* 7 */ | ||
113 | #define IRQ_IOP13XX_RSVD_40 (40) /* 8 */ | ||
114 | #define IRQ_IOP13XX_RSVD_41 (41) /* 9 */ | ||
115 | #define IRQ_IOP13XX_RSVD_42 (42) /* 10 */ | ||
116 | #define IRQ_IOP13XX_RSVD_43 (43) /* 11 */ | ||
117 | #define IRQ_IOP13XX_RSVD_44 (44) /* 12 */ | ||
118 | #define IRQ_IOP13XX_RSVD_45 (45) /* 13 */ | ||
119 | #define IRQ_IOP13XX_RSVD_46 (46) /* 14 */ | ||
120 | #define IRQ_IOP13XX_RSVD_47 (47) /* 15 */ | ||
121 | #define IRQ_IOP13XX_RSVD_48 (48) /* 16 */ | ||
122 | #define IRQ_IOP13XX_RSVD_49 (49) /* 17 */ | ||
123 | #define IRQ_IOP13XX_RSVD_50 (50) /* 18 */ | ||
124 | #define IRQ_IOP13XX_UART0 (51) /* 19 */ | ||
125 | #define IRQ_IOP13XX_UART1 (52) /* 20 */ | ||
126 | #define IRQ_IOP13XX_PBIE (53) /* 21 */ | ||
127 | #define IRQ_IOP13XX_ATU_CRW (54) /* 22 */ | ||
128 | #define IRQ_IOP13XX_ATU_ERR (55) /* 23 */ | ||
129 | #define IRQ_IOP13XX_MCU_ERR (56) /* 24 */ | ||
130 | #define IRQ_IOP13XX_ADMA0_ERR (57) /* 25 */ | ||
131 | #define IRQ_IOP13XX_ADMA1_ERR (58) /* 26 */ | ||
132 | #define IRQ_IOP13XX_ADMA2_ERR (59) /* 27 */ | ||
133 | #define IRQ_IOP13XX_RSVD_60 (60) /* 28 */ | ||
134 | #define IRQ_IOP13XX_RSVD_61 (61) /* 29 */ | ||
135 | #define IRQ_IOP13XX_MSG_ERR (62) /* 30 */ | ||
136 | #define IRQ_IOP13XX_RSVD_63 (63) /* 31 */ | ||
137 | /* IINTSRC2 bit */ | ||
138 | #define IRQ_IOP13XX_INTERPROC (64) /* 0 */ | ||
139 | #define IRQ_IOP13XX_RSVD_65 (65) /* 1 */ | ||
140 | #define IRQ_IOP13XX_RSVD_66 (66) /* 2 */ | ||
141 | #define IRQ_IOP13XX_RSVD_67 (67) /* 3 */ | ||
142 | #define IRQ_IOP13XX_RSVD_68 (68) /* 4 */ | ||
143 | #define IRQ_IOP13XX_RSVD_69 (69) /* 5 */ | ||
144 | #define IRQ_IOP13XX_RSVD_70 (70) /* 6 */ | ||
145 | #define IRQ_IOP13XX_RSVD_71 (71) /* 7 */ | ||
146 | #define IRQ_IOP13XX_RSVD_72 (72) /* 8 */ | ||
147 | #define IRQ_IOP13XX_RSVD_73 (73) /* 9 */ | ||
148 | #define IRQ_IOP13XX_RSVD_74 (74) /* 10 */ | ||
149 | #define IRQ_IOP13XX_RSVD_75 (75) /* 11 */ | ||
150 | #define IRQ_IOP13XX_RSVD_76 (76) /* 12 */ | ||
151 | #define IRQ_IOP13XX_RSVD_77 (77) /* 13 */ | ||
152 | #define IRQ_IOP13XX_RSVD_78 (78) /* 14 */ | ||
153 | #define IRQ_IOP13XX_RSVD_79 (79) /* 15 */ | ||
154 | #define IRQ_IOP13XX_RSVD_80 (80) /* 16 */ | ||
155 | #define IRQ_IOP13XX_RSVD_81 (81) /* 17 */ | ||
156 | #define IRQ_IOP13XX_RSVD_82 (82) /* 18 */ | ||
157 | #define IRQ_IOP13XX_RSVD_83 (83) /* 19 */ | ||
158 | #define IRQ_IOP13XX_RSVD_84 (84) /* 20 */ | ||
159 | #define IRQ_IOP13XX_RSVD_85 (85) /* 21 */ | ||
160 | #define IRQ_IOP13XX_RSVD_86 (86) /* 22 */ | ||
161 | #define IRQ_IOP13XX_RSVD_87 (87) /* 23 */ | ||
162 | #define IRQ_IOP13XX_RSVD_88 (88) /* 24 */ | ||
163 | #define IRQ_IOP13XX_RSVD_89 (89) /* 25 */ | ||
164 | #define IRQ_IOP13XX_RSVD_90 (90) /* 26 */ | ||
165 | #define IRQ_IOP13XX_RSVD_91 (91) /* 27 */ | ||
166 | #define IRQ_IOP13XX_RSVD_92 (92) /* 28 */ | ||
167 | #define IRQ_IOP13XX_RSVD_93 (93) /* 29 */ | ||
168 | #define IRQ_IOP13XX_SIB_ERR (94) /* 30 */ | ||
169 | #define IRQ_IOP13XX_SRAM_ERR (95) /* 31 */ | ||
170 | /* IINTSRC3 bit */ | ||
171 | #define IRQ_IOP13XX_I2C_2 (96) /* 0 */ | ||
172 | #define IRQ_IOP13XX_ATUE_BIST (97) /* 1 */ | ||
173 | #define IRQ_IOP13XX_ATUE_CRW (98) /* 2 */ | ||
174 | #define IRQ_IOP13XX_ATUE_ERR (99) /* 3 */ | ||
175 | #define IRQ_IOP13XX_IMU (100) /* 4 */ | ||
176 | #define IRQ_IOP13XX_RSVD_101 (101) /* 5 */ | ||
177 | #define IRQ_IOP13XX_RSVD_102 (102) /* 6 */ | ||
178 | #define IRQ_IOP13XX_TPMI0_OUT (103) /* 7 */ | ||
179 | #define IRQ_IOP13XX_TPMI1_OUT (104) /* 8 */ | ||
180 | #define IRQ_IOP13XX_TPMI2_OUT (105) /* 9 */ | ||
181 | #define IRQ_IOP13XX_TPMI3_OUT (106) /* 10 */ | ||
182 | #define IRQ_IOP13XX_ATUE_IMA (107) /* 11 */ | ||
183 | #define IRQ_IOP13XX_ATUE_IMB (108) /* 12 */ | ||
184 | #define IRQ_IOP13XX_ATUE_IMC (109) /* 13 */ | ||
185 | #define IRQ_IOP13XX_ATUE_IMD (110) /* 14 */ | ||
186 | #define IRQ_IOP13XX_MU_MSI_TB (111) /* 15 */ | ||
187 | #define IRQ_IOP13XX_RSVD_112 (112) /* 16 */ | ||
188 | #define IRQ_IOP13XX_RSVD_113 (113) /* 17 */ | ||
189 | #define IRQ_IOP13XX_RSVD_114 (114) /* 18 */ | ||
190 | #define IRQ_IOP13XX_RSVD_115 (115) /* 19 */ | ||
191 | #define IRQ_IOP13XX_RSVD_116 (116) /* 20 */ | ||
192 | #define IRQ_IOP13XX_RSVD_117 (117) /* 21 */ | ||
193 | #define IRQ_IOP13XX_RSVD_118 (118) /* 22 */ | ||
194 | #define IRQ_IOP13XX_RSVD_119 (119) /* 23 */ | ||
195 | #define IRQ_IOP13XX_RSVD_120 (120) /* 24 */ | ||
196 | #define IRQ_IOP13XX_RSVD_121 (121) /* 25 */ | ||
197 | #define IRQ_IOP13XX_RSVD_122 (122) /* 26 */ | ||
198 | #define IRQ_IOP13XX_RSVD_123 (123) /* 27 */ | ||
199 | #define IRQ_IOP13XX_RSVD_124 (124) /* 28 */ | ||
200 | #define IRQ_IOP13XX_RSVD_125 (125) /* 29 */ | ||
201 | #define IRQ_IOP13XX_RSVD_126 (126) /* 30 */ | ||
202 | #define IRQ_IOP13XX_HPI (127) /* 31 */ | ||
203 | |||
204 | #define NR_IOP13XX_IRQS (IRQ_IOP13XX_HPI + 1) | ||
205 | #define NR_IRQS NR_IOP13XX_IRQS | ||
206 | |||
207 | #endif /* _IOP13XX_IRQ_H_ */ | ||
diff --git a/include/asm-arm/arch-iop13xx/memory.h b/include/asm-arm/arch-iop13xx/memory.h new file mode 100644 index 000000000000..031a0fa78eff --- /dev/null +++ b/include/asm-arm/arch-iop13xx/memory.h | |||
@@ -0,0 +1,64 @@ | |||
1 | #ifndef __ASM_ARCH_MEMORY_H | ||
2 | #define __ASM_ARCH_MEMORY_H | ||
3 | |||
4 | #include <asm/arch/hardware.h> | ||
5 | |||
6 | /* | ||
7 | * Physical DRAM offset. | ||
8 | */ | ||
9 | #define PHYS_OFFSET UL(0x00000000) | ||
10 | #define TASK_SIZE UL(0x3f000000) | ||
11 | #define PAGE_OFFSET UL(0x40000000) | ||
12 | #define TASK_UNMAPPED_BASE ((TASK_SIZE + 0x01000000) / 3) | ||
13 | |||
14 | #ifndef __ASSEMBLY__ | ||
15 | |||
16 | #if defined(CONFIG_ARCH_IOP13XX) | ||
17 | #define IOP13XX_PMMR_V_START (IOP13XX_PMMR_VIRT_MEM_BASE) | ||
18 | #define IOP13XX_PMMR_V_END (IOP13XX_PMMR_VIRT_MEM_BASE + IOP13XX_PMMR_SIZE) | ||
19 | #define IOP13XX_PMMR_P_START (IOP13XX_PMMR_PHYS_MEM_BASE) | ||
20 | #define IOP13XX_PMMR_P_END (IOP13XX_PMMR_PHYS_MEM_BASE + IOP13XX_PMMR_SIZE) | ||
21 | |||
22 | /* | ||
23 | * Virtual view <-> PCI DMA view memory address translations | ||
24 | * virt_to_bus: Used to translate the virtual address to an | ||
25 | * address suitable to be passed to set_dma_addr | ||
26 | * bus_to_virt: Used to convert an address for DMA operations | ||
27 | * to an address that the kernel can use. | ||
28 | */ | ||
29 | |||
30 | /* RAM has 1:1 mapping on the PCIe/x Busses */ | ||
31 | #define __virt_to_bus(x) (__virt_to_phys(x)) | ||
32 | #define __bus_to_virt(x) (__phys_to_virt(x)) | ||
33 | |||
34 | #define virt_to_lbus(x) \ | ||
35 | (( ((void*)(x) >= (void*)IOP13XX_PMMR_V_START) && \ | ||
36 | ((void*)(x) < (void*)IOP13XX_PMMR_V_END) ) ? \ | ||
37 | ((x) - IOP13XX_PMMR_VIRT_MEM_BASE + IOP13XX_PMMR_PHYS_MEM_BASE) : \ | ||
38 | ((x) - PAGE_OFFSET + PHYS_OFFSET)) | ||
39 | |||
40 | #define lbus_to_virt(x) \ | ||
41 | (( ((x) >= IOP13XX_PMMR_P_START) && ((x) < IOP13XX_PMMR_P_END) ) ? \ | ||
42 | ((x) - IOP13XX_PMMR_PHYS_MEM_BASE + IOP13XX_PMMR_VIRT_MEM_BASE ) : \ | ||
43 | ((x) - PHYS_OFFSET + PAGE_OFFSET)) | ||
44 | |||
45 | /* Device is an lbus device if it is on the platform bus of the IOP13XX */ | ||
46 | #define is_lbus_device(dev) (dev &&\ | ||
47 | (strncmp(dev->bus->name, "platform", 8) == 0)) | ||
48 | |||
49 | #define __arch_page_to_dma(dev, page) \ | ||
50 | ({is_lbus_device(dev) ? (dma_addr_t)virt_to_lbus(page_address(page)) : \ | ||
51 | (dma_addr_t)__virt_to_bus(page_address(page));}) | ||
52 | |||
53 | #define __arch_dma_to_virt(dev, addr) \ | ||
54 | ({is_lbus_device(dev) ? lbus_to_virt(addr) : __bus_to_virt(addr);}) | ||
55 | |||
56 | #define __arch_virt_to_dma(dev, addr) \ | ||
57 | ({is_lbus_device(dev) ? virt_to_lbus(addr) : __virt_to_bus(addr);}) | ||
58 | |||
59 | #endif /* CONFIG_ARCH_IOP13XX */ | ||
60 | #endif /* !ASSEMBLY */ | ||
61 | |||
62 | #define PFN_TO_NID(addr) (0) | ||
63 | |||
64 | #endif | ||
diff --git a/include/asm-arm/arch-iop13xx/pci.h b/include/asm-arm/arch-iop13xx/pci.h new file mode 100644 index 000000000000..4041f30d4cd3 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/pci.h | |||
@@ -0,0 +1,57 @@ | |||
1 | #ifndef _IOP13XX_PCI_H_ | ||
2 | #define _IOP13XX_PCI_H_ | ||
3 | #include <asm/arch/irqs.h> | ||
4 | #include <asm/io.h> | ||
5 | |||
6 | struct pci_sys_data; | ||
7 | struct hw_pci; | ||
8 | int iop13xx_pci_setup(int nr, struct pci_sys_data *sys); | ||
9 | struct pci_bus *iop13xx_scan_bus(int nr, struct pci_sys_data *); | ||
10 | void iop13xx_atu_select(struct hw_pci *plat_pci); | ||
11 | void iop13xx_pci_init(void); | ||
12 | void iop13xx_map_pci_memory(void); | ||
13 | |||
14 | #define IOP_PCI_STATUS_ERROR (PCI_STATUS_PARITY | \ | ||
15 | PCI_STATUS_SIG_TARGET_ABORT | \ | ||
16 | PCI_STATUS_REC_TARGET_ABORT | \ | ||
17 | PCI_STATUS_REC_TARGET_ABORT | \ | ||
18 | PCI_STATUS_REC_MASTER_ABORT | \ | ||
19 | PCI_STATUS_SIG_SYSTEM_ERROR | \ | ||
20 | PCI_STATUS_DETECTED_PARITY) | ||
21 | |||
22 | #define IOP13XX_ATUE_ATUISR_ERROR (IOP13XX_ATUE_STAT_HALT_ON_ERROR | \ | ||
23 | IOP13XX_ATUE_STAT_ROOT_SYS_ERR | \ | ||
24 | IOP13XX_ATUE_STAT_PCI_IFACE_ERR | \ | ||
25 | IOP13XX_ATUE_STAT_ERR_COR | \ | ||
26 | IOP13XX_ATUE_STAT_ERR_UNCOR | \ | ||
27 | IOP13XX_ATUE_STAT_CRS | \ | ||
28 | IOP13XX_ATUE_STAT_DET_PAR_ERR | \ | ||
29 | IOP13XX_ATUE_STAT_EXT_REC_MABORT | \ | ||
30 | IOP13XX_ATUE_STAT_SIG_TABORT | \ | ||
31 | IOP13XX_ATUE_STAT_EXT_REC_TABORT | \ | ||
32 | IOP13XX_ATUE_STAT_MASTER_DATA_PAR) | ||
33 | |||
34 | #define IOP13XX_ATUX_ATUISR_ERROR (IOP13XX_ATUX_STAT_TX_SCEM | \ | ||
35 | IOP13XX_ATUX_STAT_REC_SCEM | \ | ||
36 | IOP13XX_ATUX_STAT_TX_SERR | \ | ||
37 | IOP13XX_ATUX_STAT_DET_PAR_ERR | \ | ||
38 | IOP13XX_ATUX_STAT_INT_REC_MABORT | \ | ||
39 | IOP13XX_ATUX_STAT_REC_SERR | \ | ||
40 | IOP13XX_ATUX_STAT_EXT_REC_MABORT | \ | ||
41 | IOP13XX_ATUX_STAT_EXT_REC_TABORT | \ | ||
42 | IOP13XX_ATUX_STAT_EXT_SIG_TABORT | \ | ||
43 | IOP13XX_ATUX_STAT_MASTER_DATA_PAR) | ||
44 | |||
45 | /* PCI interrupts | ||
46 | */ | ||
47 | #define ATUX_INTA IRQ_IOP13XX_XINT0 | ||
48 | #define ATUX_INTB IRQ_IOP13XX_XINT1 | ||
49 | #define ATUX_INTC IRQ_IOP13XX_XINT2 | ||
50 | #define ATUX_INTD IRQ_IOP13XX_XINT3 | ||
51 | |||
52 | #define ATUE_INTA IRQ_IOP13XX_ATUE_IMA | ||
53 | #define ATUE_INTB IRQ_IOP13XX_ATUE_IMB | ||
54 | #define ATUE_INTC IRQ_IOP13XX_ATUE_IMC | ||
55 | #define ATUE_INTD IRQ_IOP13XX_ATUE_IMD | ||
56 | |||
57 | #endif /* _IOP13XX_PCI_H_ */ | ||
diff --git a/include/asm-arm/arch-iop13xx/system.h b/include/asm-arm/arch-iop13xx/system.h new file mode 100644 index 000000000000..ee3a62530af2 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/system.h | |||
@@ -0,0 +1,59 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-iop13xx/system.h | ||
3 | * | ||
4 | * Copyright (C) 2004 Intel Corp. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #include <asm/arch/iop13xx.h> | ||
11 | static inline void arch_idle(void) | ||
12 | { | ||
13 | cpu_do_idle(); | ||
14 | } | ||
15 | |||
16 | /* WDTCR CP6 R7 Page 9 */ | ||
17 | static inline u32 read_wdtcr(void) | ||
18 | { | ||
19 | u32 val; | ||
20 | asm volatile("mrc p6, 0, %0, c7, c9, 0":"=r" (val)); | ||
21 | return val; | ||
22 | } | ||
23 | static inline void write_wdtcr(u32 val) | ||
24 | { | ||
25 | asm volatile("mcr p6, 0, %0, c7, c9, 0"::"r" (val)); | ||
26 | } | ||
27 | |||
28 | /* WDTSR CP6 R8 Page 9 */ | ||
29 | static inline u32 read_wdtsr(void) | ||
30 | { | ||
31 | u32 val; | ||
32 | asm volatile("mrc p6, 0, %0, c8, c9, 0":"=r" (val)); | ||
33 | return val; | ||
34 | } | ||
35 | static inline void write_wdtsr(u32 val) | ||
36 | { | ||
37 | asm volatile("mcr p6, 0, %0, c8, c9, 0"::"r" (val)); | ||
38 | } | ||
39 | |||
40 | #define IOP13XX_WDTCR_EN_ARM 0x1e1e1e1e | ||
41 | #define IOP13XX_WDTCR_EN 0xe1e1e1e1 | ||
42 | #define IOP13XX_WDTCR_DIS_ARM 0x1f1f1f1f | ||
43 | #define IOP13XX_WDTCR_DIS 0xf1f1f1f1 | ||
44 | #define IOP13XX_WDTSR_WRITE_EN (1 << 31) | ||
45 | #define IOP13XX_WDTCR_IB_RESET (1 << 0) | ||
46 | static inline void arch_reset(char mode) | ||
47 | { | ||
48 | /* | ||
49 | * Reset the internal bus (warning both cores are reset) | ||
50 | */ | ||
51 | u32 cp_flags = iop13xx_cp6_save(); | ||
52 | write_wdtcr(IOP13XX_WDTCR_EN_ARM); | ||
53 | write_wdtcr(IOP13XX_WDTCR_EN); | ||
54 | write_wdtsr(IOP13XX_WDTSR_WRITE_EN | IOP13XX_WDTCR_IB_RESET); | ||
55 | write_wdtcr(0x1000); | ||
56 | iop13xx_cp6_restore(cp_flags); | ||
57 | |||
58 | for(;;); | ||
59 | } | ||
diff --git a/include/asm-arm/arch-iop13xx/timex.h b/include/asm-arm/arch-iop13xx/timex.h new file mode 100644 index 000000000000..f0c51dd97ed8 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/timex.h | |||
@@ -0,0 +1,3 @@ | |||
1 | #include <asm/hardware.h> | ||
2 | |||
3 | #define CLOCK_TICK_RATE (100 * HZ) | ||
diff --git a/include/asm-arm/arch-iop13xx/uncompress.h b/include/asm-arm/arch-iop13xx/uncompress.h new file mode 100644 index 000000000000..b9525d59b7ad --- /dev/null +++ b/include/asm-arm/arch-iop13xx/uncompress.h | |||
@@ -0,0 +1,24 @@ | |||
1 | #include <asm/types.h> | ||
2 | #include <linux/serial_reg.h> | ||
3 | #include <asm/hardware.h> | ||
4 | #include <asm/processor.h> | ||
5 | |||
6 | #define UART_BASE ((volatile u32 *)IOP13XX_UART1_PHYS) | ||
7 | #define TX_DONE (UART_LSR_TEMT | UART_LSR_THRE) | ||
8 | |||
9 | static inline void putc(char c) | ||
10 | { | ||
11 | while ((UART_BASE[UART_LSR] & TX_DONE) != TX_DONE) | ||
12 | cpu_relax(); | ||
13 | UART_BASE[UART_TX] = c; | ||
14 | } | ||
15 | |||
16 | static inline void flush(void) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /* | ||
21 | * nothing to do | ||
22 | */ | ||
23 | #define arch_decomp_setup() | ||
24 | #define arch_decomp_wdog() | ||
diff --git a/include/asm-arm/arch-iop13xx/vmalloc.h b/include/asm-arm/arch-iop13xx/vmalloc.h new file mode 100644 index 000000000000..c53456740345 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/vmalloc.h | |||
@@ -0,0 +1,4 @@ | |||
1 | #ifndef _VMALLOC_H_ | ||
2 | #define _VMALLOC_H_ | ||
3 | #define VMALLOC_END 0xfa000000UL | ||
4 | #endif | ||