aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-ep93xx
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-ep93xx')
-rw-r--r--arch/arm/mach-ep93xx/Kconfig6
-rw-r--r--arch/arm/mach-ep93xx/Makefile1
-rw-r--r--arch/arm/mach-ep93xx/adssphere.c7
-rw-r--r--arch/arm/mach-ep93xx/clock.c68
-rw-r--r--arch/arm/mach-ep93xx/core.c40
-rw-r--r--arch/arm/mach-ep93xx/edb9302.c7
-rw-r--r--arch/arm/mach-ep93xx/edb9302a.c9
-rw-r--r--arch/arm/mach-ep93xx/edb9307.c9
-rw-r--r--arch/arm/mach-ep93xx/edb9307a.c68
-rw-r--r--arch/arm/mach-ep93xx/edb9312.c9
-rw-r--r--arch/arm/mach-ep93xx/edb9315.c9
-rw-r--r--arch/arm/mach-ep93xx/edb9315a.c9
-rw-r--r--arch/arm/mach-ep93xx/gesbc9312.c7
-rw-r--r--arch/arm/mach-ep93xx/include/mach/clkdev.h7
-rw-r--r--arch/arm/mach-ep93xx/include/mach/dma.h3
-rw-r--r--arch/arm/mach-ep93xx/include/mach/gpio.h2
-rw-r--r--arch/arm/mach-ep93xx/include/mach/io.h4
-rw-r--r--arch/arm/mach-ep93xx/include/mach/memory.h4
-rw-r--r--arch/arm/mach-ep93xx/include/mach/platform.h1
-rw-r--r--arch/arm/mach-ep93xx/micro9.c89
-rw-r--r--arch/arm/mach-ep93xx/ts72xx.c21
21 files changed, 243 insertions, 137 deletions
diff --git a/arch/arm/mach-ep93xx/Kconfig b/arch/arm/mach-ep93xx/Kconfig
index 5a1b8c05c958..56bddcef6905 100644
--- a/arch/arm/mach-ep93xx/Kconfig
+++ b/arch/arm/mach-ep93xx/Kconfig
@@ -33,6 +33,12 @@ config MACH_EDB9307
33 Say 'Y' here if you want your kernel to support the Cirrus 33 Say 'Y' here if you want your kernel to support the Cirrus
34 Logic EDB9307 Evaluation Board. 34 Logic EDB9307 Evaluation Board.
35 35
36config MACH_EDB9307A
37 bool "Support Cirrus Logic EDB9307A"
38 help
39 Say 'Y' here if you want your kernel to support the Cirrus
40 Logic EDB9307A Evaluation Board.
41
36config MACH_EDB9312 42config MACH_EDB9312
37 bool "Support Cirrus Logic EDB9312" 43 bool "Support Cirrus Logic EDB9312"
38 help 44 help
diff --git a/arch/arm/mach-ep93xx/Makefile b/arch/arm/mach-ep93xx/Makefile
index c1252ca9648e..944e42d51646 100644
--- a/arch/arm/mach-ep93xx/Makefile
+++ b/arch/arm/mach-ep93xx/Makefile
@@ -10,6 +10,7 @@ obj-$(CONFIG_MACH_ADSSPHERE) += adssphere.o
10obj-$(CONFIG_MACH_EDB9302) += edb9302.o 10obj-$(CONFIG_MACH_EDB9302) += edb9302.o
11obj-$(CONFIG_MACH_EDB9302A) += edb9302a.o 11obj-$(CONFIG_MACH_EDB9302A) += edb9302a.o
12obj-$(CONFIG_MACH_EDB9307) += edb9307.o 12obj-$(CONFIG_MACH_EDB9307) += edb9307.o
13obj-$(CONFIG_MACH_EDB9307A) += edb9307a.o
13obj-$(CONFIG_MACH_EDB9312) += edb9312.o 14obj-$(CONFIG_MACH_EDB9312) += edb9312.o
14obj-$(CONFIG_MACH_EDB9315) += edb9315.o 15obj-$(CONFIG_MACH_EDB9315) += edb9315.o
15obj-$(CONFIG_MACH_EDB9315A) += edb9315a.o 16obj-$(CONFIG_MACH_EDB9315A) += edb9315a.o
diff --git a/arch/arm/mach-ep93xx/adssphere.c b/arch/arm/mach-ep93xx/adssphere.c
index 561db73ec1ae..3fbd9b0fbe24 100644
--- a/arch/arm/mach-ep93xx/adssphere.c
+++ b/arch/arm/mach-ep93xx/adssphere.c
@@ -19,6 +19,7 @@
19#include <linux/mtd/physmap.h> 19#include <linux/mtd/physmap.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/i2c.h>
22#include <mach/hardware.h> 23#include <mach/hardware.h>
23#include <asm/mach-types.h> 24#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
@@ -28,8 +29,8 @@ static struct physmap_flash_data adssphere_flash_data = {
28}; 29};
29 30
30static struct resource adssphere_flash_resource = { 31static struct resource adssphere_flash_resource = {
31 .start = 0x60000000, 32 .start = EP93XX_CS6_PHYS_BASE,
32 .end = 0x61ffffff, 33 .end = EP93XX_CS6_PHYS_BASE + SZ_32M - 1,
33 .flags = IORESOURCE_MEM, 34 .flags = IORESOURCE_MEM,
34}; 35};
35 36
@@ -59,7 +60,7 @@ MACHINE_START(ADSSPHERE, "ADS Sphere board")
59 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ 60 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
60 .phys_io = EP93XX_APB_PHYS_BASE, 61 .phys_io = EP93XX_APB_PHYS_BASE,
61 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 62 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
62 .boot_params = 0x00000100, 63 .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100,
63 .map_io = ep93xx_map_io, 64 .map_io = ep93xx_map_io,
64 .init_irq = ep93xx_init_irq, 65 .init_irq = ep93xx_init_irq,
65 .timer = &ep93xx_timer, 66 .timer = &ep93xx_timer,
diff --git a/arch/arm/mach-ep93xx/clock.c b/arch/arm/mach-ep93xx/clock.c
index 8c9f2491dccc..96049283a10a 100644
--- a/arch/arm/mach-ep93xx/clock.c
+++ b/arch/arm/mach-ep93xx/clock.c
@@ -16,11 +16,12 @@
16#include <linux/module.h> 16#include <linux/module.h>
17#include <linux/string.h> 17#include <linux/string.h>
18#include <linux/io.h> 18#include <linux/io.h>
19
20#include <asm/clkdev.h>
19#include <asm/div64.h> 21#include <asm/div64.h>
20#include <mach/hardware.h> 22#include <mach/hardware.h>
21 23
22struct clk { 24struct clk {
23 char *name;
24 unsigned long rate; 25 unsigned long rate;
25 int users; 26 int users;
26 u32 enable_reg; 27 u32 enable_reg;
@@ -28,53 +29,33 @@ struct clk {
28}; 29};
29 30
30static struct clk clk_uart = { 31static struct clk clk_uart = {
31 .name = "UARTCLK",
32 .rate = 14745600, 32 .rate = 14745600,
33}; 33};
34static struct clk clk_pll1 = { 34static struct clk clk_pll1;
35 .name = "pll1", 35static struct clk clk_f;
36}; 36static struct clk clk_h;
37static struct clk clk_f = { 37static struct clk clk_p;
38 .name = "fclk", 38static struct clk clk_pll2;
39};
40static struct clk clk_h = {
41 .name = "hclk",
42};
43static struct clk clk_p = {
44 .name = "pclk",
45};
46static struct clk clk_pll2 = {
47 .name = "pll2",
48};
49static struct clk clk_usb_host = { 39static struct clk clk_usb_host = {
50 .name = "usb_host",
51 .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL, 40 .enable_reg = EP93XX_SYSCON_CLOCK_CONTROL,
52 .enable_mask = EP93XX_SYSCON_CLOCK_USH_EN, 41 .enable_mask = EP93XX_SYSCON_CLOCK_USH_EN,
53}; 42};
54 43
55 44#define INIT_CK(dev,con,ck) \
56static struct clk *clocks[] = { 45 { .dev_id = dev, .con_id = con, .clk = ck }
57 &clk_uart, 46
58 &clk_pll1, 47static struct clk_lookup clocks[] = {
59 &clk_f, 48 INIT_CK("apb:uart1", NULL, &clk_uart),
60 &clk_h, 49 INIT_CK("apb:uart2", NULL, &clk_uart),
61 &clk_p, 50 INIT_CK("apb:uart3", NULL, &clk_uart),
62 &clk_pll2, 51 INIT_CK(NULL, "pll1", &clk_pll1),
63 &clk_usb_host, 52 INIT_CK(NULL, "fclk", &clk_f),
53 INIT_CK(NULL, "hclk", &clk_h),
54 INIT_CK(NULL, "pclk", &clk_p),
55 INIT_CK(NULL, "pll2", &clk_pll2),
56 INIT_CK(NULL, "usb_host", &clk_usb_host),
64}; 57};
65 58
66struct clk *clk_get(struct device *dev, const char *id)
67{
68 int i;
69
70 for (i = 0; i < ARRAY_SIZE(clocks); i++) {
71 if (!strcmp(clocks[i]->name, id))
72 return clocks[i];
73 }
74
75 return ERR_PTR(-ENOENT);
76}
77EXPORT_SYMBOL(clk_get);
78 59
79int clk_enable(struct clk *clk) 60int clk_enable(struct clk *clk)
80{ 61{
@@ -106,12 +87,6 @@ unsigned long clk_get_rate(struct clk *clk)
106} 87}
107EXPORT_SYMBOL(clk_get_rate); 88EXPORT_SYMBOL(clk_get_rate);
108 89
109void clk_put(struct clk *clk)
110{
111}
112EXPORT_SYMBOL(clk_put);
113
114
115 90
116static char fclk_divisors[] = { 1, 2, 4, 8, 16, 1, 1, 1 }; 91static char fclk_divisors[] = { 1, 2, 4, 8, 16, 1, 1, 1 };
117static char hclk_divisors[] = { 1, 2, 4, 5, 6, 8, 16, 32 }; 92static char hclk_divisors[] = { 1, 2, 4, 5, 6, 8, 16, 32 };
@@ -138,6 +113,7 @@ static unsigned long calc_pll_rate(u32 config_word)
138static int __init ep93xx_clock_init(void) 113static int __init ep93xx_clock_init(void)
139{ 114{
140 u32 value; 115 u32 value;
116 int i;
141 117
142 value = __raw_readl(EP93XX_SYSCON_CLOCK_SET1); 118 value = __raw_readl(EP93XX_SYSCON_CLOCK_SET1);
143 if (!(value & 0x00800000)) { /* PLL1 bypassed? */ 119 if (!(value & 0x00800000)) { /* PLL1 bypassed? */
@@ -165,6 +141,8 @@ static int __init ep93xx_clock_init(void)
165 clk_f.rate / 1000000, clk_h.rate / 1000000, 141 clk_f.rate / 1000000, clk_h.rate / 1000000,
166 clk_p.rate / 1000000); 142 clk_p.rate / 1000000);
167 143
144 for (i = 0; i < ARRAY_SIZE(clocks); i++)
145 clkdev_add(&clocks[i]);
168 return 0; 146 return 0;
169} 147}
170arch_initcall(ep93xx_clock_init); 148arch_initcall(ep93xx_clock_init);
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index 48345fb34613..4781f323703b 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -34,6 +34,8 @@
34#include <linux/amba/bus.h> 34#include <linux/amba/bus.h>
35#include <linux/amba/serial.h> 35#include <linux/amba/serial.h>
36#include <linux/io.h> 36#include <linux/io.h>
37#include <linux/i2c.h>
38#include <linux/i2c-gpio.h>
37 39
38#include <asm/types.h> 40#include <asm/types.h>
39#include <asm/setup.h> 41#include <asm/setup.h>
@@ -153,12 +155,14 @@ static unsigned char gpio_int_unmasked[3];
153static unsigned char gpio_int_enabled[3]; 155static unsigned char gpio_int_enabled[3];
154static unsigned char gpio_int_type1[3]; 156static unsigned char gpio_int_type1[3];
155static unsigned char gpio_int_type2[3]; 157static unsigned char gpio_int_type2[3];
158static unsigned char gpio_int_debouce[3];
156 159
157/* Port ordering is: A B F */ 160/* Port ordering is: A B F */
158static const u8 int_type1_register_offset[3] = { 0x90, 0xac, 0x4c }; 161static const u8 int_type1_register_offset[3] = { 0x90, 0xac, 0x4c };
159static const u8 int_type2_register_offset[3] = { 0x94, 0xb0, 0x50 }; 162static const u8 int_type2_register_offset[3] = { 0x94, 0xb0, 0x50 };
160static const u8 eoi_register_offset[3] = { 0x98, 0xb4, 0x54 }; 163static const u8 eoi_register_offset[3] = { 0x98, 0xb4, 0x54 };
161static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x58 }; 164static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x58 };
165static const u8 int_debounce_register_offset[3] = { 0xa8, 0xc4, 0x64 };
162 166
163void ep93xx_gpio_update_int_params(unsigned port) 167void ep93xx_gpio_update_int_params(unsigned port)
164{ 168{
@@ -181,6 +185,22 @@ void ep93xx_gpio_int_mask(unsigned line)
181 gpio_int_unmasked[line >> 3] &= ~(1 << (line & 7)); 185 gpio_int_unmasked[line >> 3] &= ~(1 << (line & 7));
182} 186}
183 187
188void ep93xx_gpio_int_debounce(unsigned int irq, int enable)
189{
190 int line = irq_to_gpio(irq);
191 int port = line >> 3;
192 int port_mask = 1 << (line & 7);
193
194 if (enable)
195 gpio_int_debouce[port] |= port_mask;
196 else
197 gpio_int_debouce[port] &= ~port_mask;
198
199 __raw_writeb(gpio_int_debouce[port],
200 EP93XX_GPIO_REG(int_debounce_register_offset[port]));
201}
202EXPORT_SYMBOL(ep93xx_gpio_int_debounce);
203
184/************************************************************************* 204/*************************************************************************
185 * EP93xx IRQ handling 205 * EP93xx IRQ handling
186 *************************************************************************/ 206 *************************************************************************/
@@ -497,6 +517,26 @@ void __init ep93xx_register_eth(struct ep93xx_eth_data *data, int copy_addr)
497 platform_device_register(&ep93xx_eth_device); 517 platform_device_register(&ep93xx_eth_device);
498} 518}
499 519
520static struct i2c_gpio_platform_data ep93xx_i2c_data = {
521 .sda_pin = EP93XX_GPIO_LINE_EEDAT,
522 .sda_is_open_drain = 0,
523 .scl_pin = EP93XX_GPIO_LINE_EECLK,
524 .scl_is_open_drain = 0,
525 .udelay = 2,
526};
527
528static struct platform_device ep93xx_i2c_device = {
529 .name = "i2c-gpio",
530 .id = 0,
531 .dev.platform_data = &ep93xx_i2c_data,
532};
533
534void __init ep93xx_register_i2c(struct i2c_board_info *devices, int num)
535{
536 i2c_register_board_info(0, devices, num);
537 platform_device_register(&ep93xx_i2c_device);
538}
539
500extern void ep93xx_gpio_init(void); 540extern void ep93xx_gpio_init(void);
501 541
502void __init ep93xx_init_devices(void) 542void __init ep93xx_init_devices(void)
diff --git a/arch/arm/mach-ep93xx/edb9302.c b/arch/arm/mach-ep93xx/edb9302.c
index e4add5bdccfd..8bf8d7c78f1a 100644
--- a/arch/arm/mach-ep93xx/edb9302.c
+++ b/arch/arm/mach-ep93xx/edb9302.c
@@ -19,6 +19,7 @@
19#include <linux/mtd/physmap.h> 19#include <linux/mtd/physmap.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/i2c.h>
22#include <mach/hardware.h> 23#include <mach/hardware.h>
23#include <asm/mach-types.h> 24#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
@@ -28,8 +29,8 @@ static struct physmap_flash_data edb9302_flash_data = {
28}; 29};
29 30
30static struct resource edb9302_flash_resource = { 31static struct resource edb9302_flash_resource = {
31 .start = 0x60000000, 32 .start = EP93XX_CS6_PHYS_BASE,
32 .end = 0x60ffffff, 33 .end = EP93XX_CS6_PHYS_BASE + SZ_16M - 1,
33 .flags = IORESOURCE_MEM, 34 .flags = IORESOURCE_MEM,
34}; 35};
35 36
@@ -59,7 +60,7 @@ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board")
59 /* Maintainer: George Kashperko <george@chas.com.ua> */ 60 /* Maintainer: George Kashperko <george@chas.com.ua> */
60 .phys_io = EP93XX_APB_PHYS_BASE, 61 .phys_io = EP93XX_APB_PHYS_BASE,
61 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 62 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
62 .boot_params = 0x00000100, 63 .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100,
63 .map_io = ep93xx_map_io, 64 .map_io = ep93xx_map_io,
64 .init_irq = ep93xx_init_irq, 65 .init_irq = ep93xx_init_irq,
65 .timer = &ep93xx_timer, 66 .timer = &ep93xx_timer,
diff --git a/arch/arm/mach-ep93xx/edb9302a.c b/arch/arm/mach-ep93xx/edb9302a.c
index 02c4405afed7..a352c57c7b46 100644
--- a/arch/arm/mach-ep93xx/edb9302a.c
+++ b/arch/arm/mach-ep93xx/edb9302a.c
@@ -19,6 +19,7 @@
19#include <linux/mtd/physmap.h> 19#include <linux/mtd/physmap.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/i2c.h>
22#include <mach/hardware.h> 23#include <mach/hardware.h>
23#include <asm/mach-types.h> 24#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
@@ -28,8 +29,8 @@ static struct physmap_flash_data edb9302a_flash_data = {
28}; 29};
29 30
30static struct resource edb9302a_flash_resource = { 31static struct resource edb9302a_flash_resource = {
31 .start = 0x60000000, 32 .start = EP93XX_CS6_PHYS_BASE,
32 .end = 0x60ffffff, 33 .end = EP93XX_CS6_PHYS_BASE + SZ_16M - 1,
33 .flags = IORESOURCE_MEM, 34 .flags = IORESOURCE_MEM,
34}; 35};
35 36
@@ -44,7 +45,7 @@ static struct platform_device edb9302a_flash = {
44}; 45};
45 46
46static struct ep93xx_eth_data edb9302a_eth_data = { 47static struct ep93xx_eth_data edb9302a_eth_data = {
47 .phy_id = 1, 48 .phy_id = 1,
48}; 49};
49 50
50static void __init edb9302a_init_machine(void) 51static void __init edb9302a_init_machine(void)
@@ -59,7 +60,7 @@ MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board")
59 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ 60 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
60 .phys_io = EP93XX_APB_PHYS_BASE, 61 .phys_io = EP93XX_APB_PHYS_BASE,
61 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 62 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
62 .boot_params = 0xc0000100, 63 .boot_params = EP93XX_SDCE0_PHYS_BASE + 0x100,
63 .map_io = ep93xx_map_io, 64 .map_io = ep93xx_map_io,
64 .init_irq = ep93xx_init_irq, 65 .init_irq = ep93xx_init_irq,
65 .timer = &ep93xx_timer, 66 .timer = &ep93xx_timer,
diff --git a/arch/arm/mach-ep93xx/edb9307.c b/arch/arm/mach-ep93xx/edb9307.c
index 040edbd2ea05..5ab22f63a4eb 100644
--- a/arch/arm/mach-ep93xx/edb9307.c
+++ b/arch/arm/mach-ep93xx/edb9307.c
@@ -19,6 +19,7 @@
19#include <linux/mtd/physmap.h> 19#include <linux/mtd/physmap.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/i2c.h>
22#include <mach/hardware.h> 23#include <mach/hardware.h>
23#include <asm/mach-types.h> 24#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
@@ -28,8 +29,8 @@ static struct physmap_flash_data edb9307_flash_data = {
28}; 29};
29 30
30static struct resource edb9307_flash_resource = { 31static struct resource edb9307_flash_resource = {
31 .start = 0x60000000, 32 .start = EP93XX_CS6_PHYS_BASE,
32 .end = 0x61ffffff, 33 .end = EP93XX_CS6_PHYS_BASE + SZ_32M - 1,
33 .flags = IORESOURCE_MEM, 34 .flags = IORESOURCE_MEM,
34}; 35};
35 36
@@ -44,7 +45,7 @@ static struct platform_device edb9307_flash = {
44}; 45};
45 46
46static struct ep93xx_eth_data edb9307_eth_data = { 47static struct ep93xx_eth_data edb9307_eth_data = {
47 .phy_id = 1, 48 .phy_id = 1,
48}; 49};
49 50
50static void __init edb9307_init_machine(void) 51static void __init edb9307_init_machine(void)
@@ -59,7 +60,7 @@ MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board")
59 /* Maintainer: Herbert Valerio Riedel <hvr@gnu.org> */ 60 /* Maintainer: Herbert Valerio Riedel <hvr@gnu.org> */
60 .phys_io = EP93XX_APB_PHYS_BASE, 61 .phys_io = EP93XX_APB_PHYS_BASE,
61 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 62 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
62 .boot_params = 0x00000100, 63 .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100,
63 .map_io = ep93xx_map_io, 64 .map_io = ep93xx_map_io,
64 .init_irq = ep93xx_init_irq, 65 .init_irq = ep93xx_init_irq,
65 .timer = &ep93xx_timer, 66 .timer = &ep93xx_timer,
diff --git a/arch/arm/mach-ep93xx/edb9307a.c b/arch/arm/mach-ep93xx/edb9307a.c
new file mode 100644
index 000000000000..5b5c22b681be
--- /dev/null
+++ b/arch/arm/mach-ep93xx/edb9307a.c
@@ -0,0 +1,68 @@
1/*
2 * arch/arm/mach-ep93xx/edb9307a.c
3 * Cirrus Logic EDB9307A support.
4 *
5 * Copyright (C) 2008 H Hartley Sweeten <hsweeten@visionengravers.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or (at
10 * your option) any later version.
11 */
12
13#include <linux/kernel.h>
14#include <linux/init.h>
15#include <linux/mm.h>
16#include <linux/sched.h>
17#include <linux/interrupt.h>
18#include <linux/ioport.h>
19#include <linux/mtd/physmap.h>
20#include <linux/platform_device.h>
21#include <linux/io.h>
22#include <linux/i2c.h>
23#include <mach/hardware.h>
24#include <asm/mach-types.h>
25#include <asm/mach/arch.h>
26
27static struct physmap_flash_data edb9307a_flash_data = {
28 .width = 2,
29};
30
31static struct resource edb9307a_flash_resource = {
32 .start = EP93XX_CS6_PHYS_BASE,
33 .end = EP93XX_CS6_PHYS_BASE + SZ_16M - 1,
34 .flags = IORESOURCE_MEM,
35};
36
37static struct platform_device edb9307a_flash = {
38 .name = "physmap-flash",
39 .id = 0,
40 .dev = {
41 .platform_data = &edb9307a_flash_data,
42 },
43 .num_resources = 1,
44 .resource = &edb9307a_flash_resource,
45};
46
47static struct ep93xx_eth_data edb9307a_eth_data = {
48 .phy_id = 1,
49};
50
51static void __init edb9307a_init_machine(void)
52{
53 ep93xx_init_devices();
54 platform_device_register(&edb9307a_flash);
55
56 ep93xx_register_eth(&edb9307a_eth_data, 1);
57}
58
59MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board")
60 /* Maintainer: H Hartley Sweeten <hsweeten@visionengravers.com> */
61 .phys_io = EP93XX_APB_PHYS_BASE,
62 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
63 .boot_params = EP93XX_SDCE0_PHYS_BASE + 0x100,
64 .map_io = ep93xx_map_io,
65 .init_irq = ep93xx_init_irq,
66 .timer = &ep93xx_timer,
67 .init_machine = edb9307a_init_machine,
68MACHINE_END
diff --git a/arch/arm/mach-ep93xx/edb9312.c b/arch/arm/mach-ep93xx/edb9312.c
index 6853e302bc3a..d7179f66d804 100644
--- a/arch/arm/mach-ep93xx/edb9312.c
+++ b/arch/arm/mach-ep93xx/edb9312.c
@@ -20,6 +20,7 @@
20#include <linux/mtd/physmap.h> 20#include <linux/mtd/physmap.h>
21#include <linux/platform_device.h> 21#include <linux/platform_device.h>
22#include <linux/io.h> 22#include <linux/io.h>
23#include <linux/i2c.h>
23#include <mach/hardware.h> 24#include <mach/hardware.h>
24#include <asm/mach-types.h> 25#include <asm/mach-types.h>
25#include <asm/mach/arch.h> 26#include <asm/mach/arch.h>
@@ -29,8 +30,8 @@ static struct physmap_flash_data edb9312_flash_data = {
29}; 30};
30 31
31static struct resource edb9312_flash_resource = { 32static struct resource edb9312_flash_resource = {
32 .start = 0x60000000, 33 .start = EP93XX_CS6_PHYS_BASE,
33 .end = 0x61ffffff, 34 .end = EP93XX_CS6_PHYS_BASE + SZ_32M - 1,
34 .flags = IORESOURCE_MEM, 35 .flags = IORESOURCE_MEM,
35}; 36};
36 37
@@ -45,7 +46,7 @@ static struct platform_device edb9312_flash = {
45}; 46};
46 47
47static struct ep93xx_eth_data edb9312_eth_data = { 48static struct ep93xx_eth_data edb9312_eth_data = {
48 .phy_id = 1, 49 .phy_id = 1,
49}; 50};
50 51
51static void __init edb9312_init_machine(void) 52static void __init edb9312_init_machine(void)
@@ -60,7 +61,7 @@ MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board")
60 /* Maintainer: Toufeeq Hussain <toufeeq_hussain@infosys.com> */ 61 /* Maintainer: Toufeeq Hussain <toufeeq_hussain@infosys.com> */
61 .phys_io = EP93XX_APB_PHYS_BASE, 62 .phys_io = EP93XX_APB_PHYS_BASE,
62 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 63 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
63 .boot_params = 0x00000100, 64 .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100,
64 .map_io = ep93xx_map_io, 65 .map_io = ep93xx_map_io,
65 .init_irq = ep93xx_init_irq, 66 .init_irq = ep93xx_init_irq,
66 .timer = &ep93xx_timer, 67 .timer = &ep93xx_timer,
diff --git a/arch/arm/mach-ep93xx/edb9315.c b/arch/arm/mach-ep93xx/edb9315.c
index 9469b350d253..025af6eaca10 100644
--- a/arch/arm/mach-ep93xx/edb9315.c
+++ b/arch/arm/mach-ep93xx/edb9315.c
@@ -19,6 +19,7 @@
19#include <linux/mtd/physmap.h> 19#include <linux/mtd/physmap.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/i2c.h>
22#include <mach/hardware.h> 23#include <mach/hardware.h>
23#include <asm/mach-types.h> 24#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
@@ -28,8 +29,8 @@ static struct physmap_flash_data edb9315_flash_data = {
28}; 29};
29 30
30static struct resource edb9315_flash_resource = { 31static struct resource edb9315_flash_resource = {
31 .start = 0x60000000, 32 .start = EP93XX_CS6_PHYS_BASE,
32 .end = 0x61ffffff, 33 .end = EP93XX_CS6_PHYS_BASE + SZ_32M - 1,
33 .flags = IORESOURCE_MEM, 34 .flags = IORESOURCE_MEM,
34}; 35};
35 36
@@ -44,7 +45,7 @@ static struct platform_device edb9315_flash = {
44}; 45};
45 46
46static struct ep93xx_eth_data edb9315_eth_data = { 47static struct ep93xx_eth_data edb9315_eth_data = {
47 .phy_id = 1, 48 .phy_id = 1,
48}; 49};
49 50
50static void __init edb9315_init_machine(void) 51static void __init edb9315_init_machine(void)
@@ -59,7 +60,7 @@ MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board")
59 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ 60 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
60 .phys_io = EP93XX_APB_PHYS_BASE, 61 .phys_io = EP93XX_APB_PHYS_BASE,
61 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 62 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
62 .boot_params = 0x00000100, 63 .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100,
63 .map_io = ep93xx_map_io, 64 .map_io = ep93xx_map_io,
64 .init_irq = ep93xx_init_irq, 65 .init_irq = ep93xx_init_irq,
65 .timer = &ep93xx_timer, 66 .timer = &ep93xx_timer,
diff --git a/arch/arm/mach-ep93xx/edb9315a.c b/arch/arm/mach-ep93xx/edb9315a.c
index 584457ce7c80..4c9cc8a39f5c 100644
--- a/arch/arm/mach-ep93xx/edb9315a.c
+++ b/arch/arm/mach-ep93xx/edb9315a.c
@@ -19,6 +19,7 @@
19#include <linux/mtd/physmap.h> 19#include <linux/mtd/physmap.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/i2c.h>
22#include <mach/hardware.h> 23#include <mach/hardware.h>
23#include <asm/mach-types.h> 24#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
@@ -28,8 +29,8 @@ static struct physmap_flash_data edb9315a_flash_data = {
28}; 29};
29 30
30static struct resource edb9315a_flash_resource = { 31static struct resource edb9315a_flash_resource = {
31 .start = 0x60000000, 32 .start = EP93XX_CS6_PHYS_BASE,
32 .end = 0x60ffffff, 33 .end = EP93XX_CS6_PHYS_BASE + SZ_16M - 1,
33 .flags = IORESOURCE_MEM, 34 .flags = IORESOURCE_MEM,
34}; 35};
35 36
@@ -44,7 +45,7 @@ static struct platform_device edb9315a_flash = {
44}; 45};
45 46
46static struct ep93xx_eth_data edb9315a_eth_data = { 47static struct ep93xx_eth_data edb9315a_eth_data = {
47 .phy_id = 1, 48 .phy_id = 1,
48}; 49};
49 50
50static void __init edb9315a_init_machine(void) 51static void __init edb9315a_init_machine(void)
@@ -59,7 +60,7 @@ MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board")
59 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ 60 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
60 .phys_io = EP93XX_APB_PHYS_BASE, 61 .phys_io = EP93XX_APB_PHYS_BASE,
61 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 62 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
62 .boot_params = 0xc0000100, 63 .boot_params = EP93XX_SDCE0_PHYS_BASE + 0x100,
63 .map_io = ep93xx_map_io, 64 .map_io = ep93xx_map_io,
64 .init_irq = ep93xx_init_irq, 65 .init_irq = ep93xx_init_irq,
65 .timer = &ep93xx_timer, 66 .timer = &ep93xx_timer,
diff --git a/arch/arm/mach-ep93xx/gesbc9312.c b/arch/arm/mach-ep93xx/gesbc9312.c
index 035b24e31b64..3bad500b71b6 100644
--- a/arch/arm/mach-ep93xx/gesbc9312.c
+++ b/arch/arm/mach-ep93xx/gesbc9312.c
@@ -19,6 +19,7 @@
19#include <linux/mtd/physmap.h> 19#include <linux/mtd/physmap.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/i2c.h>
22#include <mach/hardware.h> 23#include <mach/hardware.h>
23#include <asm/mach-types.h> 24#include <asm/mach-types.h>
24#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
@@ -28,8 +29,8 @@ static struct physmap_flash_data gesbc9312_flash_data = {
28}; 29};
29 30
30static struct resource gesbc9312_flash_resource = { 31static struct resource gesbc9312_flash_resource = {
31 .start = 0x60000000, 32 .start = EP93XX_CS6_PHYS_BASE,
32 .end = 0x607fffff, 33 .end = EP93XX_CS6_PHYS_BASE + SZ_8M - 1,
33 .flags = IORESOURCE_MEM, 34 .flags = IORESOURCE_MEM,
34}; 35};
35 36
@@ -59,7 +60,7 @@ MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx")
59 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ 60 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
60 .phys_io = EP93XX_APB_PHYS_BASE, 61 .phys_io = EP93XX_APB_PHYS_BASE,
61 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 62 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
62 .boot_params = 0x00000100, 63 .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100,
63 .map_io = ep93xx_map_io, 64 .map_io = ep93xx_map_io,
64 .init_irq = ep93xx_init_irq, 65 .init_irq = ep93xx_init_irq,
65 .timer = &ep93xx_timer, 66 .timer = &ep93xx_timer,
diff --git a/arch/arm/mach-ep93xx/include/mach/clkdev.h b/arch/arm/mach-ep93xx/include/mach/clkdev.h
new file mode 100644
index 000000000000..04b37a89801c
--- /dev/null
+++ b/arch/arm/mach-ep93xx/include/mach/clkdev.h
@@ -0,0 +1,7 @@
1#ifndef __ASM_MACH_CLKDEV_H
2#define __ASM_MACH_CLKDEV_H
3
4#define __clk_get(clk) ({ 1; })
5#define __clk_put(clk) do { } while (0)
6
7#endif
diff --git a/arch/arm/mach-ep93xx/include/mach/dma.h b/arch/arm/mach-ep93xx/include/mach/dma.h
deleted file mode 100644
index d0fa9656e92f..000000000000
--- a/arch/arm/mach-ep93xx/include/mach/dma.h
+++ /dev/null
@@ -1,3 +0,0 @@
1/*
2 * arch/arm/mach-ep93xx/include/mach/dma.h
3 */
diff --git a/arch/arm/mach-ep93xx/include/mach/gpio.h b/arch/arm/mach-ep93xx/include/mach/gpio.h
index f7020414c5df..0a1498ae899a 100644
--- a/arch/arm/mach-ep93xx/include/mach/gpio.h
+++ b/arch/arm/mach-ep93xx/include/mach/gpio.h
@@ -99,6 +99,8 @@
99/* maximum value for irq capable line identifiers */ 99/* maximum value for irq capable line identifiers */
100#define EP93XX_GPIO_LINE_MAX_IRQ EP93XX_GPIO_LINE_F(7) 100#define EP93XX_GPIO_LINE_MAX_IRQ EP93XX_GPIO_LINE_F(7)
101 101
102extern void ep93xx_gpio_int_debounce(unsigned int irq, int enable);
103
102/* new generic GPIO API - see Documentation/gpio.txt */ 104/* new generic GPIO API - see Documentation/gpio.txt */
103 105
104#include <asm-generic/gpio.h> 106#include <asm-generic/gpio.h>
diff --git a/arch/arm/mach-ep93xx/include/mach/io.h b/arch/arm/mach-ep93xx/include/mach/io.h
index 1ab9a90ad339..fd5f081cc8b7 100644
--- a/arch/arm/mach-ep93xx/include/mach/io.h
+++ b/arch/arm/mach-ep93xx/include/mach/io.h
@@ -4,5 +4,5 @@
4 4
5#define IO_SPACE_LIMIT 0xffffffff 5#define IO_SPACE_LIMIT 0xffffffff
6 6
7#define __io(p) ((void __iomem *)(p)) 7#define __io(p) __typesafe_io(p)
8#define __mem_pci(p) (p) 8#define __mem_pci(p) (p)
diff --git a/arch/arm/mach-ep93xx/include/mach/memory.h b/arch/arm/mach-ep93xx/include/mach/memory.h
index f1b633590752..5c80c3c8158d 100644
--- a/arch/arm/mach-ep93xx/include/mach/memory.h
+++ b/arch/arm/mach-ep93xx/include/mach/memory.h
@@ -7,8 +7,4 @@
7 7
8#define PHYS_OFFSET UL(0x00000000) 8#define PHYS_OFFSET UL(0x00000000)
9 9
10#define __bus_to_virt(x) __phys_to_virt(x)
11#define __virt_to_bus(x) __virt_to_phys(x)
12
13
14#endif 10#endif
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
index db2489d3bda7..88f7e88f152f 100644
--- a/arch/arm/mach-ep93xx/include/mach/platform.h
+++ b/arch/arm/mach-ep93xx/include/mach/platform.h
@@ -14,6 +14,7 @@ void ep93xx_map_io(void);
14void ep93xx_init_irq(void); 14void ep93xx_init_irq(void);
15void ep93xx_init_time(unsigned long); 15void ep93xx_init_time(unsigned long);
16void ep93xx_register_eth(struct ep93xx_eth_data *data, int copy_addr); 16void ep93xx_register_eth(struct ep93xx_eth_data *data, int copy_addr);
17void ep93xx_register_i2c(struct i2c_board_info *devices, int num);
17void ep93xx_init_devices(void); 18void ep93xx_init_devices(void);
18extern struct sys_timer ep93xx_timer; 19extern struct sys_timer ep93xx_timer;
19 20
diff --git a/arch/arm/mach-ep93xx/micro9.c b/arch/arm/mach-ep93xx/micro9.c
index c2197236b632..15d6815d78c4 100644
--- a/arch/arm/mach-ep93xx/micro9.c
+++ b/arch/arm/mach-ep93xx/micro9.c
@@ -17,6 +17,7 @@
17#include <linux/platform_device.h> 17#include <linux/platform_device.h>
18#include <linux/sched.h> 18#include <linux/sched.h>
19#include <linux/io.h> 19#include <linux/io.h>
20#include <linux/i2c.h>
20#include <linux/mtd/physmap.h> 21#include <linux/mtd/physmap.h>
21 22
22#include <mach/hardware.h> 23#include <mach/hardware.h>
@@ -25,7 +26,7 @@
25#include <asm/mach-types.h> 26#include <asm/mach-types.h>
26 27
27static struct ep93xx_eth_data micro9_eth_data = { 28static struct ep93xx_eth_data micro9_eth_data = {
28 .phy_id = 0x1f, 29 .phy_id = 0x1f,
29}; 30};
30 31
31static void __init micro9_init(void) 32static void __init micro9_init(void)
@@ -38,46 +39,46 @@ static void __init micro9_init(void)
38 */ 39 */
39#ifdef CONFIG_MACH_MICRO9H 40#ifdef CONFIG_MACH_MICRO9H
40static struct physmap_flash_data micro9h_flash_data = { 41static struct physmap_flash_data micro9h_flash_data = {
41 .width = 4, 42 .width = 4,
42}; 43};
43 44
44static struct resource micro9h_flash_resource = { 45static struct resource micro9h_flash_resource = {
45 .start = 0x10000000, 46 .start = EP93XX_CS1_PHYS_BASE,
46 .end = 0x13ffffff, 47 .end = EP93XX_CS1_PHYS_BASE + SZ_64M - 1,
47 .flags = IORESOURCE_MEM, 48 .flags = IORESOURCE_MEM,
48}; 49};
49 50
50static struct platform_device micro9h_flash = { 51static struct platform_device micro9h_flash = {
51 .name = "physmap-flash", 52 .name = "physmap-flash",
52 .id = 0, 53 .id = 0,
53 .dev = { 54 .dev = {
54 .platform_data = &micro9h_flash_data, 55 .platform_data = &micro9h_flash_data,
55 }, 56 },
56 .num_resources = 1, 57 .num_resources = 1,
57 .resource = &micro9h_flash_resource, 58 .resource = &micro9h_flash_resource,
58}; 59};
59 60
60static void __init micro9h_init(void) 61static void __init micro9h_init(void)
61{ 62{
62 platform_device_register(&micro9h_flash); 63 platform_device_register(&micro9h_flash);
63} 64}
64 65
65static void __init micro9h_init_machine(void) 66static void __init micro9h_init_machine(void)
66{ 67{
67 ep93xx_init_devices(); 68 ep93xx_init_devices();
68 micro9_init(); 69 micro9_init();
69 micro9h_init(); 70 micro9h_init();
70} 71}
71 72
72MACHINE_START(MICRO9, "Contec Hypercontrol Micro9-H") 73MACHINE_START(MICRO9, "Contec Hypercontrol Micro9-H")
73 /* Maintainer: Manfred Gruber <manfred.gruber@contec.at> */ 74 /* Maintainer: Manfred Gruber <manfred.gruber@contec.at> */
74 .phys_io = EP93XX_APB_PHYS_BASE, 75 .phys_io = EP93XX_APB_PHYS_BASE,
75 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 76 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
76 .boot_params = 0x00000100, 77 .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100,
77 .map_io = ep93xx_map_io, 78 .map_io = ep93xx_map_io,
78 .init_irq = ep93xx_init_irq, 79 .init_irq = ep93xx_init_irq,
79 .timer = &ep93xx_timer, 80 .timer = &ep93xx_timer,
80 .init_machine = micro9h_init_machine, 81 .init_machine = micro9h_init_machine,
81MACHINE_END 82MACHINE_END
82#endif 83#endif
83 84
@@ -87,19 +88,19 @@ MACHINE_END
87#ifdef CONFIG_MACH_MICRO9M 88#ifdef CONFIG_MACH_MICRO9M
88static void __init micro9m_init_machine(void) 89static void __init micro9m_init_machine(void)
89{ 90{
90 ep93xx_init_devices(); 91 ep93xx_init_devices();
91 micro9_init(); 92 micro9_init();
92} 93}
93 94
94MACHINE_START(MICRO9M, "Contec Hypercontrol Micro9-M") 95MACHINE_START(MICRO9M, "Contec Hypercontrol Micro9-M")
95 /* Maintainer: Manfred Gruber <manfred.gruber@contec.at> */ 96 /* Maintainer: Manfred Gruber <manfred.gruber@contec.at> */
96 .phys_io = EP93XX_APB_PHYS_BASE, 97 .phys_io = EP93XX_APB_PHYS_BASE,
97 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 98 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
98 .boot_params = 0x00000100, 99 .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100,
99 .map_io = ep93xx_map_io, 100 .map_io = ep93xx_map_io,
100 .init_irq = ep93xx_init_irq, 101 .init_irq = ep93xx_init_irq,
101 .timer = &ep93xx_timer, 102 .timer = &ep93xx_timer,
102 .init_machine = micro9m_init_machine, 103 .init_machine = micro9m_init_machine,
103MACHINE_END 104MACHINE_END
104#endif 105#endif
105 106
@@ -109,19 +110,19 @@ MACHINE_END
109#ifdef CONFIG_MACH_MICRO9L 110#ifdef CONFIG_MACH_MICRO9L
110static void __init micro9l_init_machine(void) 111static void __init micro9l_init_machine(void)
111{ 112{
112 ep93xx_init_devices(); 113 ep93xx_init_devices();
113 micro9_init(); 114 micro9_init();
114} 115}
115 116
116MACHINE_START(MICRO9L, "Contec Hypercontrol Micro9-L") 117MACHINE_START(MICRO9L, "Contec Hypercontrol Micro9-L")
117 /* Maintainer: Manfred Gruber <manfred.gruber@contec.at> */ 118 /* Maintainer: Manfred Gruber <manfred.gruber@contec.at> */
118 .phys_io = EP93XX_APB_PHYS_BASE, 119 .phys_io = EP93XX_APB_PHYS_BASE,
119 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 120 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
120 .boot_params = 0x00000100, 121 .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100,
121 .map_io = ep93xx_map_io, 122 .map_io = ep93xx_map_io,
122 .init_irq = ep93xx_init_irq, 123 .init_irq = ep93xx_init_irq,
123 .timer = &ep93xx_timer, 124 .timer = &ep93xx_timer,
124 .init_machine = micro9l_init_machine, 125 .init_machine = micro9l_init_machine,
125MACHINE_END 126MACHINE_END
126#endif 127#endif
127 128
diff --git a/arch/arm/mach-ep93xx/ts72xx.c b/arch/arm/mach-ep93xx/ts72xx.c
index b4aa4c054276..7ee024d34829 100644
--- a/arch/arm/mach-ep93xx/ts72xx.c
+++ b/arch/arm/mach-ep93xx/ts72xx.c
@@ -20,6 +20,7 @@
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/m48t86.h> 21#include <linux/m48t86.h>
22#include <linux/io.h> 22#include <linux/io.h>
23#include <linux/i2c.h>
23#include <mach/hardware.h> 24#include <mach/hardware.h>
24#include <asm/mach-types.h> 25#include <asm/mach-types.h>
25#include <asm/mach/arch.h> 26#include <asm/mach/arch.h>
@@ -117,7 +118,7 @@ static struct physmap_flash_data ts72xx_flash_data = {
117 118
118static struct resource ts72xx_flash_resource = { 119static struct resource ts72xx_flash_resource = {
119 .start = TS72XX_NOR_PHYS_BASE, 120 .start = TS72XX_NOR_PHYS_BASE,
120 .end = TS72XX_NOR_PHYS_BASE + 0x00ffffff, 121 .end = TS72XX_NOR_PHYS_BASE + SZ_16M - 1,
121 .flags = IORESOURCE_MEM, 122 .flags = IORESOURCE_MEM,
122}; 123};
123 124
@@ -144,21 +145,21 @@ static void ts72xx_rtc_writebyte(unsigned char value, unsigned long addr)
144} 145}
145 146
146static struct m48t86_ops ts72xx_rtc_ops = { 147static struct m48t86_ops ts72xx_rtc_ops = {
147 .readbyte = ts72xx_rtc_readbyte, 148 .readbyte = ts72xx_rtc_readbyte,
148 .writebyte = ts72xx_rtc_writebyte, 149 .writebyte = ts72xx_rtc_writebyte,
149}; 150};
150 151
151static struct platform_device ts72xx_rtc_device = { 152static struct platform_device ts72xx_rtc_device = {
152 .name = "rtc-m48t86", 153 .name = "rtc-m48t86",
153 .id = -1, 154 .id = -1,
154 .dev = { 155 .dev = {
155 .platform_data = &ts72xx_rtc_ops, 156 .platform_data = &ts72xx_rtc_ops,
156 }, 157 },
157 .num_resources = 0, 158 .num_resources = 0,
158}; 159};
159 160
160static struct ep93xx_eth_data ts72xx_eth_data = { 161static struct ep93xx_eth_data ts72xx_eth_data = {
161 .phy_id = 1, 162 .phy_id = 1,
162}; 163};
163 164
164static void __init ts72xx_init_machine(void) 165static void __init ts72xx_init_machine(void)
@@ -175,7 +176,7 @@ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")
175 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ 176 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
176 .phys_io = EP93XX_APB_PHYS_BASE, 177 .phys_io = EP93XX_APB_PHYS_BASE,
177 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, 178 .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
178 .boot_params = 0x00000100, 179 .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100,
179 .map_io = ts72xx_map_io, 180 .map_io = ts72xx_map_io,
180 .init_irq = ep93xx_init_irq, 181 .init_irq = ep93xx_init_irq,
181 .timer = &ep93xx_timer, 182 .timer = &ep93xx_timer,