aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-ep93xx/include
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2013-01-17 16:15:55 -0500
committerJonathan Herman <hermanjl@cs.unc.edu>2013-01-17 16:15:55 -0500
commit8dea78da5cee153b8af9c07a2745f6c55057fe12 (patch)
treea8f4d49d63b1ecc92f2fddceba0655b2472c5bd9 /arch/arm/mach-ep93xx/include
parent406089d01562f1e2bf9f089fd7637009ebaad589 (diff)
Patched in Tegra support.
Diffstat (limited to 'arch/arm/mach-ep93xx/include')
-rw-r--r--arch/arm/mach-ep93xx/include/mach/debug-macro.S2
-rw-r--r--arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h191
-rw-r--r--arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h110
-rw-r--r--arch/arm/mach-ep93xx/include/mach/hardware.h1
-rw-r--r--arch/arm/mach-ep93xx/include/mach/platform.h28
-rw-r--r--arch/arm/mach-ep93xx/include/mach/uncompress.h10
6 files changed, 214 insertions, 128 deletions
diff --git a/arch/arm/mach-ep93xx/include/mach/debug-macro.S b/arch/arm/mach-ep93xx/include/mach/debug-macro.S
index af54e43132c..b25bc907636 100644
--- a/arch/arm/mach-ep93xx/include/mach/debug-macro.S
+++ b/arch/arm/mach-ep93xx/include/mach/debug-macro.S
@@ -11,7 +11,7 @@
11 */ 11 */
12#include <mach/ep93xx-regs.h> 12#include <mach/ep93xx-regs.h>
13 13
14 .macro addruart, rp, rv, tmp 14 .macro addruart, rp, rv
15 ldr \rp, =EP93XX_APB_PHYS_BASE @ Physical base 15 ldr \rp, =EP93XX_APB_PHYS_BASE @ Physical base
16 ldr \rv, =EP93XX_APB_VIRT_BASE @ virtual base 16 ldr \rv, =EP93XX_APB_VIRT_BASE @ virtual base
17 orr \rp, \rp, #0x000c0000 17 orr \rp, \rp, #0x000c0000
diff --git a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
index c64d7424660..c4a7b84ef06 100644
--- a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
+++ b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h
@@ -6,6 +6,40 @@
6#define __ASM_ARCH_EP93XX_REGS_H 6#define __ASM_ARCH_EP93XX_REGS_H
7 7
8/* 8/*
9 * EP93xx Physical Memory Map:
10 *
11 * The ASDO pin is sampled at system reset to select a synchronous or
12 * asynchronous boot configuration. When ASDO is "1" (i.e. pulled-up)
13 * the synchronous boot mode is selected. When ASDO is "0" (i.e
14 * pulled-down) the asynchronous boot mode is selected.
15 *
16 * In synchronous boot mode nSDCE3 is decoded starting at physical address
17 * 0x00000000 and nCS0 is decoded starting at 0xf0000000. For asynchronous
18 * boot mode they are swapped with nCS0 decoded at 0x00000000 ann nSDCE3
19 * decoded at 0xf0000000.
20 *
21 * There is known errata for the EP93xx dealing with External Memory
22 * Configurations. Please refer to "AN273: EP93xx Silicon Rev E Design
23 * Guidelines" for more information. This document can be found at:
24 *
25 * http://www.cirrus.com/en/pubs/appNote/AN273REV4.pdf
26 */
27
28#define EP93XX_CS0_PHYS_BASE_ASYNC 0x00000000 /* ASDO Pin = 0 */
29#define EP93XX_SDCE3_PHYS_BASE_SYNC 0x00000000 /* ASDO Pin = 1 */
30#define EP93XX_CS1_PHYS_BASE 0x10000000
31#define EP93XX_CS2_PHYS_BASE 0x20000000
32#define EP93XX_CS3_PHYS_BASE 0x30000000
33#define EP93XX_PCMCIA_PHYS_BASE 0x40000000
34#define EP93XX_CS6_PHYS_BASE 0x60000000
35#define EP93XX_CS7_PHYS_BASE 0x70000000
36#define EP93XX_SDCE0_PHYS_BASE 0xc0000000
37#define EP93XX_SDCE1_PHYS_BASE 0xd0000000
38#define EP93XX_SDCE2_PHYS_BASE 0xe0000000
39#define EP93XX_SDCE3_PHYS_BASE_ASYNC 0xf0000000 /* ASDO Pin = 0 */
40#define EP93XX_CS0_PHYS_BASE_SYNC 0xf0000000 /* ASDO Pin = 1 */
41
42/*
9 * EP93xx linux memory map: 43 * EP93xx linux memory map:
10 * 44 *
11 * virt phys size 45 * virt phys size
@@ -28,7 +62,58 @@
28#define EP93XX_APB_PHYS(x) (EP93XX_APB_PHYS_BASE + (x)) 62#define EP93XX_APB_PHYS(x) (EP93XX_APB_PHYS_BASE + (x))
29#define EP93XX_APB_IOMEM(x) IOMEM(EP93XX_APB_VIRT_BASE + (x)) 63#define EP93XX_APB_IOMEM(x) IOMEM(EP93XX_APB_VIRT_BASE + (x))
30 64
31/* APB UARTs */ 65
66/* AHB peripherals */
67#define EP93XX_DMA_BASE EP93XX_AHB_IOMEM(0x00000000)
68
69#define EP93XX_ETHERNET_PHYS_BASE EP93XX_AHB_PHYS(0x00010000)
70#define EP93XX_ETHERNET_BASE EP93XX_AHB_IOMEM(0x00010000)
71
72#define EP93XX_USB_PHYS_BASE EP93XX_AHB_PHYS(0x00020000)
73#define EP93XX_USB_BASE EP93XX_AHB_IOMEM(0x00020000)
74
75#define EP93XX_RASTER_PHYS_BASE EP93XX_AHB_PHYS(0x00030000)
76#define EP93XX_RASTER_BASE EP93XX_AHB_IOMEM(0x00030000)
77
78#define EP93XX_GRAPHICS_ACCEL_BASE EP93XX_AHB_IOMEM(0x00040000)
79
80#define EP93XX_SDRAM_CONTROLLER_BASE EP93XX_AHB_IOMEM(0x00060000)
81
82#define EP93XX_PCMCIA_CONTROLLER_BASE EP93XX_AHB_IOMEM(0x00080000)
83
84#define EP93XX_BOOT_ROM_BASE EP93XX_AHB_IOMEM(0x00090000)
85
86#define EP93XX_IDE_BASE EP93XX_AHB_IOMEM(0x000a0000)
87
88#define EP93XX_VIC1_BASE EP93XX_AHB_IOMEM(0x000b0000)
89
90#define EP93XX_VIC2_BASE EP93XX_AHB_IOMEM(0x000c0000)
91
92
93/* APB peripherals */
94#define EP93XX_TIMER_BASE EP93XX_APB_IOMEM(0x00010000)
95
96#define EP93XX_I2S_PHYS_BASE EP93XX_APB_PHYS(0x00020000)
97#define EP93XX_I2S_BASE EP93XX_APB_IOMEM(0x00020000)
98
99#define EP93XX_SECURITY_BASE EP93XX_APB_IOMEM(0x00030000)
100
101#define EP93XX_GPIO_PHYS_BASE EP93XX_APB_PHYS(0x00040000)
102#define EP93XX_GPIO_BASE EP93XX_APB_IOMEM(0x00040000)
103#define EP93XX_GPIO_REG(x) (EP93XX_GPIO_BASE + (x))
104#define EP93XX_GPIO_F_INT_STATUS EP93XX_GPIO_REG(0x5c)
105#define EP93XX_GPIO_A_INT_STATUS EP93XX_GPIO_REG(0xa0)
106#define EP93XX_GPIO_B_INT_STATUS EP93XX_GPIO_REG(0xbc)
107#define EP93XX_GPIO_EEDRIVE EP93XX_GPIO_REG(0xc8)
108
109#define EP93XX_AAC_PHYS_BASE EP93XX_APB_PHYS(0x00080000)
110#define EP93XX_AAC_BASE EP93XX_APB_IOMEM(0x00080000)
111
112#define EP93XX_SPI_PHYS_BASE EP93XX_APB_PHYS(0x000a0000)
113#define EP93XX_SPI_BASE EP93XX_APB_IOMEM(0x000a0000)
114
115#define EP93XX_IRDA_BASE EP93XX_APB_IOMEM(0x000b0000)
116
32#define EP93XX_UART1_PHYS_BASE EP93XX_APB_PHYS(0x000c0000) 117#define EP93XX_UART1_PHYS_BASE EP93XX_APB_PHYS(0x000c0000)
33#define EP93XX_UART1_BASE EP93XX_APB_IOMEM(0x000c0000) 118#define EP93XX_UART1_BASE EP93XX_APB_IOMEM(0x000c0000)
34 119
@@ -38,4 +123,108 @@
38#define EP93XX_UART3_PHYS_BASE EP93XX_APB_PHYS(0x000e0000) 123#define EP93XX_UART3_PHYS_BASE EP93XX_APB_PHYS(0x000e0000)
39#define EP93XX_UART3_BASE EP93XX_APB_IOMEM(0x000e0000) 124#define EP93XX_UART3_BASE EP93XX_APB_IOMEM(0x000e0000)
40 125
126#define EP93XX_KEY_MATRIX_PHYS_BASE EP93XX_APB_PHYS(0x000f0000)
127#define EP93XX_KEY_MATRIX_BASE EP93XX_APB_IOMEM(0x000f0000)
128
129#define EP93XX_ADC_BASE EP93XX_APB_IOMEM(0x00100000)
130#define EP93XX_TOUCHSCREEN_BASE EP93XX_APB_IOMEM(0x00100000)
131
132#define EP93XX_PWM_PHYS_BASE EP93XX_APB_PHYS(0x00110000)
133#define EP93XX_PWM_BASE EP93XX_APB_IOMEM(0x00110000)
134
135#define EP93XX_RTC_PHYS_BASE EP93XX_APB_PHYS(0x00120000)
136#define EP93XX_RTC_BASE EP93XX_APB_IOMEM(0x00120000)
137
138#define EP93XX_SYSCON_BASE EP93XX_APB_IOMEM(0x00130000)
139#define EP93XX_SYSCON_REG(x) (EP93XX_SYSCON_BASE + (x))
140#define EP93XX_SYSCON_POWER_STATE EP93XX_SYSCON_REG(0x00)
141#define EP93XX_SYSCON_PWRCNT EP93XX_SYSCON_REG(0x04)
142#define EP93XX_SYSCON_PWRCNT_FIR_EN (1<<31)
143#define EP93XX_SYSCON_PWRCNT_UARTBAUD (1<<29)
144#define EP93XX_SYSCON_PWRCNT_USH_EN (1<<28)
145#define EP93XX_SYSCON_PWRCNT_DMA_M2M1 (1<<27)
146#define EP93XX_SYSCON_PWRCNT_DMA_M2M0 (1<<26)
147#define EP93XX_SYSCON_PWRCNT_DMA_M2P8 (1<<25)
148#define EP93XX_SYSCON_PWRCNT_DMA_M2P9 (1<<24)
149#define EP93XX_SYSCON_PWRCNT_DMA_M2P6 (1<<23)
150#define EP93XX_SYSCON_PWRCNT_DMA_M2P7 (1<<22)
151#define EP93XX_SYSCON_PWRCNT_DMA_M2P4 (1<<21)
152#define EP93XX_SYSCON_PWRCNT_DMA_M2P5 (1<<20)
153#define EP93XX_SYSCON_PWRCNT_DMA_M2P2 (1<<19)
154#define EP93XX_SYSCON_PWRCNT_DMA_M2P3 (1<<18)
155#define EP93XX_SYSCON_PWRCNT_DMA_M2P0 (1<<17)
156#define EP93XX_SYSCON_PWRCNT_DMA_M2P1 (1<<16)
157#define EP93XX_SYSCON_HALT EP93XX_SYSCON_REG(0x08)
158#define EP93XX_SYSCON_STANDBY EP93XX_SYSCON_REG(0x0c)
159#define EP93XX_SYSCON_CLKSET1 EP93XX_SYSCON_REG(0x20)
160#define EP93XX_SYSCON_CLKSET1_NBYP1 (1<<23)
161#define EP93XX_SYSCON_CLKSET2 EP93XX_SYSCON_REG(0x24)
162#define EP93XX_SYSCON_CLKSET2_NBYP2 (1<<19)
163#define EP93XX_SYSCON_CLKSET2_PLL2_EN (1<<18)
164#define EP93XX_SYSCON_DEVCFG EP93XX_SYSCON_REG(0x80)
165#define EP93XX_SYSCON_DEVCFG_SWRST (1<<31)
166#define EP93XX_SYSCON_DEVCFG_D1ONG (1<<30)
167#define EP93XX_SYSCON_DEVCFG_D0ONG (1<<29)
168#define EP93XX_SYSCON_DEVCFG_IONU2 (1<<28)
169#define EP93XX_SYSCON_DEVCFG_GONK (1<<27)
170#define EP93XX_SYSCON_DEVCFG_TONG (1<<26)
171#define EP93XX_SYSCON_DEVCFG_MONG (1<<25)
172#define EP93XX_SYSCON_DEVCFG_U3EN (1<<24)
173#define EP93XX_SYSCON_DEVCFG_CPENA (1<<23)
174#define EP93XX_SYSCON_DEVCFG_A2ONG (1<<22)
175#define EP93XX_SYSCON_DEVCFG_A1ONG (1<<21)
176#define EP93XX_SYSCON_DEVCFG_U2EN (1<<20)
177#define EP93XX_SYSCON_DEVCFG_EXVC (1<<19)
178#define EP93XX_SYSCON_DEVCFG_U1EN (1<<18)
179#define EP93XX_SYSCON_DEVCFG_TIN (1<<17)
180#define EP93XX_SYSCON_DEVCFG_HC3IN (1<<15)
181#define EP93XX_SYSCON_DEVCFG_HC3EN (1<<14)
182#define EP93XX_SYSCON_DEVCFG_HC1IN (1<<13)
183#define EP93XX_SYSCON_DEVCFG_HC1EN (1<<12)
184#define EP93XX_SYSCON_DEVCFG_HONIDE (1<<11)
185#define EP93XX_SYSCON_DEVCFG_GONIDE (1<<10)
186#define EP93XX_SYSCON_DEVCFG_PONG (1<<9)
187#define EP93XX_SYSCON_DEVCFG_EONIDE (1<<8)
188#define EP93XX_SYSCON_DEVCFG_I2SONSSP (1<<7)
189#define EP93XX_SYSCON_DEVCFG_I2SONAC97 (1<<6)
190#define EP93XX_SYSCON_DEVCFG_RASONP3 (1<<4)
191#define EP93XX_SYSCON_DEVCFG_RAS (1<<3)
192#define EP93XX_SYSCON_DEVCFG_ADCPD (1<<2)
193#define EP93XX_SYSCON_DEVCFG_KEYS (1<<1)
194#define EP93XX_SYSCON_DEVCFG_SHENA (1<<0)
195#define EP93XX_SYSCON_VIDCLKDIV EP93XX_SYSCON_REG(0x84)
196#define EP93XX_SYSCON_CLKDIV_ENABLE (1<<15)
197#define EP93XX_SYSCON_CLKDIV_ESEL (1<<14)
198#define EP93XX_SYSCON_CLKDIV_PSEL (1<<13)
199#define EP93XX_SYSCON_CLKDIV_PDIV_SHIFT 8
200#define EP93XX_SYSCON_I2SCLKDIV EP93XX_SYSCON_REG(0x8c)
201#define EP93XX_SYSCON_I2SCLKDIV_SENA (1<<31)
202#define EP93XX_SYSCON_I2SCLKDIV_ORIDE (1<<29)
203#define EP93XX_SYSCON_I2SCLKDIV_SPOL (1<<19)
204#define EP93XX_I2SCLKDIV_SDIV (1 << 16)
205#define EP93XX_I2SCLKDIV_LRDIV32 (0 << 17)
206#define EP93XX_I2SCLKDIV_LRDIV64 (1 << 17)
207#define EP93XX_I2SCLKDIV_LRDIV128 (2 << 17)
208#define EP93XX_I2SCLKDIV_LRDIV_MASK (3 << 17)
209#define EP93XX_SYSCON_KEYTCHCLKDIV EP93XX_SYSCON_REG(0x90)
210#define EP93XX_SYSCON_KEYTCHCLKDIV_TSEN (1<<31)
211#define EP93XX_SYSCON_KEYTCHCLKDIV_ADIV (1<<16)
212#define EP93XX_SYSCON_KEYTCHCLKDIV_KEN (1<<15)
213#define EP93XX_SYSCON_KEYTCHCLKDIV_KDIV (1<<0)
214#define EP93XX_SYSCON_SYSCFG EP93XX_SYSCON_REG(0x9c)
215#define EP93XX_SYSCON_SYSCFG_REV_MASK (0xf0000000)
216#define EP93XX_SYSCON_SYSCFG_REV_SHIFT (28)
217#define EP93XX_SYSCON_SYSCFG_SBOOT (1<<8)
218#define EP93XX_SYSCON_SYSCFG_LCSN7 (1<<7)
219#define EP93XX_SYSCON_SYSCFG_LCSN6 (1<<6)
220#define EP93XX_SYSCON_SYSCFG_LASDO (1<<5)
221#define EP93XX_SYSCON_SYSCFG_LEEDA (1<<4)
222#define EP93XX_SYSCON_SYSCFG_LEECLK (1<<3)
223#define EP93XX_SYSCON_SYSCFG_LCSN2 (1<<1)
224#define EP93XX_SYSCON_SYSCFG_LCSN1 (1<<0)
225#define EP93XX_SYSCON_SWLOCK EP93XX_SYSCON_REG(0xc0)
226
227#define EP93XX_WATCHDOG_BASE EP93XX_APB_IOMEM(0x00140000)
228
229
41#endif 230#endif
diff --git a/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h b/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h
deleted file mode 100644
index 6d7c571a519..00000000000
--- a/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h
+++ /dev/null
@@ -1,110 +0,0 @@
1/* Include file for the EP93XX GPIO controller machine specifics */
2
3#ifndef __GPIO_EP93XX_H
4#define __GPIO_EP93XX_H
5
6#include <mach/ep93xx-regs.h>
7
8#define EP93XX_GPIO_PHYS_BASE EP93XX_APB_PHYS(0x00040000)
9#define EP93XX_GPIO_BASE EP93XX_APB_IOMEM(0x00040000)
10#define EP93XX_GPIO_REG(x) (EP93XX_GPIO_BASE + (x))
11#define EP93XX_GPIO_F_INT_STATUS EP93XX_GPIO_REG(0x5c)
12#define EP93XX_GPIO_A_INT_STATUS EP93XX_GPIO_REG(0xa0)
13#define EP93XX_GPIO_B_INT_STATUS EP93XX_GPIO_REG(0xbc)
14#define EP93XX_GPIO_EEDRIVE EP93XX_GPIO_REG(0xc8)
15
16/* GPIO port A. */
17#define EP93XX_GPIO_LINE_A(x) ((x) + 0)
18#define EP93XX_GPIO_LINE_EGPIO0 EP93XX_GPIO_LINE_A(0)
19#define EP93XX_GPIO_LINE_EGPIO1 EP93XX_GPIO_LINE_A(1)
20#define EP93XX_GPIO_LINE_EGPIO2 EP93XX_GPIO_LINE_A(2)
21#define EP93XX_GPIO_LINE_EGPIO3 EP93XX_GPIO_LINE_A(3)
22#define EP93XX_GPIO_LINE_EGPIO4 EP93XX_GPIO_LINE_A(4)
23#define EP93XX_GPIO_LINE_EGPIO5 EP93XX_GPIO_LINE_A(5)
24#define EP93XX_GPIO_LINE_EGPIO6 EP93XX_GPIO_LINE_A(6)
25#define EP93XX_GPIO_LINE_EGPIO7 EP93XX_GPIO_LINE_A(7)
26
27/* GPIO port B. */
28#define EP93XX_GPIO_LINE_B(x) ((x) + 8)
29#define EP93XX_GPIO_LINE_EGPIO8 EP93XX_GPIO_LINE_B(0)
30#define EP93XX_GPIO_LINE_EGPIO9 EP93XX_GPIO_LINE_B(1)
31#define EP93XX_GPIO_LINE_EGPIO10 EP93XX_GPIO_LINE_B(2)
32#define EP93XX_GPIO_LINE_EGPIO11 EP93XX_GPIO_LINE_B(3)
33#define EP93XX_GPIO_LINE_EGPIO12 EP93XX_GPIO_LINE_B(4)
34#define EP93XX_GPIO_LINE_EGPIO13 EP93XX_GPIO_LINE_B(5)
35#define EP93XX_GPIO_LINE_EGPIO14 EP93XX_GPIO_LINE_B(6)
36#define EP93XX_GPIO_LINE_EGPIO15 EP93XX_GPIO_LINE_B(7)
37
38/* GPIO port C. */
39#define EP93XX_GPIO_LINE_C(x) ((x) + 40)
40#define EP93XX_GPIO_LINE_ROW0 EP93XX_GPIO_LINE_C(0)
41#define EP93XX_GPIO_LINE_ROW1 EP93XX_GPIO_LINE_C(1)
42#define EP93XX_GPIO_LINE_ROW2 EP93XX_GPIO_LINE_C(2)
43#define EP93XX_GPIO_LINE_ROW3 EP93XX_GPIO_LINE_C(3)
44#define EP93XX_GPIO_LINE_ROW4 EP93XX_GPIO_LINE_C(4)
45#define EP93XX_GPIO_LINE_ROW5 EP93XX_GPIO_LINE_C(5)
46#define EP93XX_GPIO_LINE_ROW6 EP93XX_GPIO_LINE_C(6)
47#define EP93XX_GPIO_LINE_ROW7 EP93XX_GPIO_LINE_C(7)
48
49/* GPIO port D. */
50#define EP93XX_GPIO_LINE_D(x) ((x) + 24)
51#define EP93XX_GPIO_LINE_COL0 EP93XX_GPIO_LINE_D(0)
52#define EP93XX_GPIO_LINE_COL1 EP93XX_GPIO_LINE_D(1)
53#define EP93XX_GPIO_LINE_COL2 EP93XX_GPIO_LINE_D(2)
54#define EP93XX_GPIO_LINE_COL3 EP93XX_GPIO_LINE_D(3)
55#define EP93XX_GPIO_LINE_COL4 EP93XX_GPIO_LINE_D(4)
56#define EP93XX_GPIO_LINE_COL5 EP93XX_GPIO_LINE_D(5)
57#define EP93XX_GPIO_LINE_COL6 EP93XX_GPIO_LINE_D(6)
58#define EP93XX_GPIO_LINE_COL7 EP93XX_GPIO_LINE_D(7)
59
60/* GPIO port E. */
61#define EP93XX_GPIO_LINE_E(x) ((x) + 32)
62#define EP93XX_GPIO_LINE_GRLED EP93XX_GPIO_LINE_E(0)
63#define EP93XX_GPIO_LINE_RDLED EP93XX_GPIO_LINE_E(1)
64#define EP93XX_GPIO_LINE_DIORn EP93XX_GPIO_LINE_E(2)
65#define EP93XX_GPIO_LINE_IDECS1n EP93XX_GPIO_LINE_E(3)
66#define EP93XX_GPIO_LINE_IDECS2n EP93XX_GPIO_LINE_E(4)
67#define EP93XX_GPIO_LINE_IDEDA0 EP93XX_GPIO_LINE_E(5)
68#define EP93XX_GPIO_LINE_IDEDA1 EP93XX_GPIO_LINE_E(6)
69#define EP93XX_GPIO_LINE_IDEDA2 EP93XX_GPIO_LINE_E(7)
70
71/* GPIO port F. */
72#define EP93XX_GPIO_LINE_F(x) ((x) + 16)
73#define EP93XX_GPIO_LINE_WP EP93XX_GPIO_LINE_F(0)
74#define EP93XX_GPIO_LINE_MCCD1 EP93XX_GPIO_LINE_F(1)
75#define EP93XX_GPIO_LINE_MCCD2 EP93XX_GPIO_LINE_F(2)
76#define EP93XX_GPIO_LINE_MCBVD1 EP93XX_GPIO_LINE_F(3)
77#define EP93XX_GPIO_LINE_MCBVD2 EP93XX_GPIO_LINE_F(4)
78#define EP93XX_GPIO_LINE_VS1 EP93XX_GPIO_LINE_F(5)
79#define EP93XX_GPIO_LINE_READY EP93XX_GPIO_LINE_F(6)
80#define EP93XX_GPIO_LINE_VS2 EP93XX_GPIO_LINE_F(7)
81
82/* GPIO port G. */
83#define EP93XX_GPIO_LINE_G(x) ((x) + 48)
84#define EP93XX_GPIO_LINE_EECLK EP93XX_GPIO_LINE_G(0)
85#define EP93XX_GPIO_LINE_EEDAT EP93XX_GPIO_LINE_G(1)
86#define EP93XX_GPIO_LINE_SLA0 EP93XX_GPIO_LINE_G(2)
87#define EP93XX_GPIO_LINE_SLA1 EP93XX_GPIO_LINE_G(3)
88#define EP93XX_GPIO_LINE_DD12 EP93XX_GPIO_LINE_G(4)
89#define EP93XX_GPIO_LINE_DD13 EP93XX_GPIO_LINE_G(5)
90#define EP93XX_GPIO_LINE_DD14 EP93XX_GPIO_LINE_G(6)
91#define EP93XX_GPIO_LINE_DD15 EP93XX_GPIO_LINE_G(7)
92
93/* GPIO port H. */
94#define EP93XX_GPIO_LINE_H(x) ((x) + 56)
95#define EP93XX_GPIO_LINE_DD0 EP93XX_GPIO_LINE_H(0)
96#define EP93XX_GPIO_LINE_DD1 EP93XX_GPIO_LINE_H(1)
97#define EP93XX_GPIO_LINE_DD2 EP93XX_GPIO_LINE_H(2)
98#define EP93XX_GPIO_LINE_DD3 EP93XX_GPIO_LINE_H(3)
99#define EP93XX_GPIO_LINE_DD4 EP93XX_GPIO_LINE_H(4)
100#define EP93XX_GPIO_LINE_DD5 EP93XX_GPIO_LINE_H(5)
101#define EP93XX_GPIO_LINE_DD6 EP93XX_GPIO_LINE_H(6)
102#define EP93XX_GPIO_LINE_DD7 EP93XX_GPIO_LINE_H(7)
103
104/* maximum value for gpio line identifiers */
105#define EP93XX_GPIO_LINE_MAX EP93XX_GPIO_LINE_H(7)
106
107/* maximum value for irq capable line identifiers */
108#define EP93XX_GPIO_LINE_MAX_IRQ EP93XX_GPIO_LINE_F(7)
109
110#endif /* __GPIO_EP93XX_H */
diff --git a/arch/arm/mach-ep93xx/include/mach/hardware.h b/arch/arm/mach-ep93xx/include/mach/hardware.h
index efcd47815a9..4df842897ea 100644
--- a/arch/arm/mach-ep93xx/include/mach/hardware.h
+++ b/arch/arm/mach-ep93xx/include/mach/hardware.h
@@ -5,6 +5,7 @@
5#ifndef __ASM_ARCH_HARDWARE_H 5#ifndef __ASM_ARCH_HARDWARE_H
6#define __ASM_ARCH_HARDWARE_H 6#define __ASM_ARCH_HARDWARE_H
7 7
8#include <mach/ep93xx-regs.h>
8#include <mach/platform.h> 9#include <mach/platform.h>
9 10
10/* 11/*
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
index 33a5122c6dc..50660455b1d 100644
--- a/arch/arm/mach-ep93xx/include/mach/platform.h
+++ b/arch/arm/mach-ep93xx/include/mach/platform.h
@@ -21,6 +21,20 @@ struct ep93xx_eth_data
21void ep93xx_map_io(void); 21void ep93xx_map_io(void);
22void ep93xx_init_irq(void); 22void ep93xx_init_irq(void);
23 23
24/* EP93xx System Controller software locked register write */
25void ep93xx_syscon_swlocked_write(unsigned int val, void __iomem *reg);
26void ep93xx_devcfg_set_clear(unsigned int set_bits, unsigned int clear_bits);
27
28static inline void ep93xx_devcfg_set_bits(unsigned int bits)
29{
30 ep93xx_devcfg_set_clear(bits, 0x00);
31}
32
33static inline void ep93xx_devcfg_clear_bits(unsigned int bits)
34{
35 ep93xx_devcfg_set_clear(0x00, bits);
36}
37
24#define EP93XX_CHIP_REV_D0 3 38#define EP93XX_CHIP_REV_D0 3
25#define EP93XX_CHIP_REV_D1 4 39#define EP93XX_CHIP_REV_D1 4
26#define EP93XX_CHIP_REV_E0 5 40#define EP93XX_CHIP_REV_E0 5
@@ -45,23 +59,11 @@ void ep93xx_register_keypad(struct ep93xx_keypad_platform_data *data);
45int ep93xx_keypad_acquire_gpio(struct platform_device *pdev); 59int ep93xx_keypad_acquire_gpio(struct platform_device *pdev);
46void ep93xx_keypad_release_gpio(struct platform_device *pdev); 60void ep93xx_keypad_release_gpio(struct platform_device *pdev);
47void ep93xx_register_i2s(void); 61void ep93xx_register_i2s(void);
48int ep93xx_i2s_acquire(void); 62int ep93xx_i2s_acquire(unsigned i2s_pins, unsigned i2s_config);
49void ep93xx_i2s_release(void); 63void ep93xx_i2s_release(void);
50void ep93xx_register_ac97(void); 64void ep93xx_register_ac97(void);
51void ep93xx_register_ide(void);
52int ep93xx_ide_acquire_gpio(struct platform_device *pdev);
53void ep93xx_ide_release_gpio(struct platform_device *pdev);
54 65
55void ep93xx_init_devices(void); 66void ep93xx_init_devices(void);
56extern struct sys_timer ep93xx_timer; 67extern struct sys_timer ep93xx_timer;
57 68
58void ep93xx_restart(char, const char *);
59void ep93xx_init_late(void);
60
61#ifdef CONFIG_CRUNCH
62int crunch_init(void);
63#else
64static inline int crunch_init(void) { return 0; }
65#endif
66
67#endif 69#endif
diff --git a/arch/arm/mach-ep93xx/include/mach/uncompress.h b/arch/arm/mach-ep93xx/include/mach/uncompress.h
index d64274fc576..16026c2b1c8 100644
--- a/arch/arm/mach-ep93xx/include/mach/uncompress.h
+++ b/arch/arm/mach-ep93xx/include/mach/uncompress.h
@@ -47,9 +47,13 @@ static void __raw_writel(unsigned int value, unsigned int ptr)
47 47
48static inline void putc(int c) 48static inline void putc(int c)
49{ 49{
50 /* Transmit fifo not full? */ 50 int i;
51 while (__raw_readb(PHYS_UART_FLAG) & UART_FLAG_TXFF) 51
52 ; 52 for (i = 0; i < 1000; i++) {
53 /* Transmit fifo not full? */
54 if (!(__raw_readb(PHYS_UART_FLAG) & UART_FLAG_TXFF))
55 break;
56 }
53 57
54 __raw_writeb(c, PHYS_UART_DATA); 58 __raw_writeb(c, PHYS_UART_DATA);
55} 59}