diff options
Diffstat (limited to 'arch/arm/mach-ep93xx')
-rw-r--r-- | arch/arm/mach-ep93xx/Kconfig | 14 | ||||
-rw-r--r-- | arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h | 11 | ||||
-rw-r--r-- | arch/arm/mach-ep93xx/micro9.c | 108 |
3 files changed, 75 insertions, 58 deletions
diff --git a/arch/arm/mach-ep93xx/Kconfig b/arch/arm/mach-ep93xx/Kconfig index 6675c051f62f..4ad0380ff806 100644 --- a/arch/arm/mach-ep93xx/Kconfig +++ b/arch/arm/mach-ep93xx/Kconfig | |||
@@ -130,28 +130,28 @@ config MACH_MICRO9 | |||
130 | bool | 130 | bool |
131 | 131 | ||
132 | config MACH_MICRO9H | 132 | config MACH_MICRO9H |
133 | bool "Support Contec Hypercontrol Micro9-H" | 133 | bool "Support Contec Micro9-High" |
134 | depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET | 134 | depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET |
135 | select MACH_MICRO9 | 135 | select MACH_MICRO9 |
136 | help | 136 | help |
137 | Say 'Y' here if you want your kernel to support the | 137 | Say 'Y' here if you want your kernel to support the |
138 | Contec Hypercontrol Micro9-H board. | 138 | Contec Micro9-High board. |
139 | 139 | ||
140 | config MACH_MICRO9M | 140 | config MACH_MICRO9M |
141 | bool "Support Contec Hypercontrol Micro9-M" | 141 | bool "Support Contec Micro9-Mid" |
142 | depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET | 142 | depends on EP93XX_SDCE3_ASYNC_PHYS_OFFSET |
143 | select MACH_MICRO9 | 143 | select MACH_MICRO9 |
144 | help | 144 | help |
145 | Say 'Y' here if you want your kernel to support the | 145 | Say 'Y' here if you want your kernel to support the |
146 | Contec Hypercontrol Micro9-M board. | 146 | Contec Micro9-Mid board. |
147 | 147 | ||
148 | config MACH_MICRO9L | 148 | config MACH_MICRO9L |
149 | bool "Support Contec Hypercontrol Micro9-L" | 149 | bool "Support Contec Micro9-Lite" |
150 | depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET | 150 | depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET |
151 | select MACH_MICRO9 | 151 | select MACH_MICRO9 |
152 | help | 152 | help |
153 | Say 'Y' here if you want your kernel to support the | 153 | Say 'Y' here if you want your kernel to support the |
154 | Contec Hypercontrol Micro9-L board. | 154 | Contec Micro9-Lite board. |
155 | 155 | ||
156 | config MACH_TS72XX | 156 | config MACH_TS72XX |
157 | bool "Support Technologic Systems TS-72xx SBC" | 157 | bool "Support Technologic Systems TS-72xx SBC" |
diff --git a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h index 0fbf87b16338..587756dbd6f6 100644 --- a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h +++ b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h | |||
@@ -218,6 +218,17 @@ | |||
218 | #define EP93XX_SYSCON_KEYTCHCLKDIV_ADIV (1<<16) | 218 | #define EP93XX_SYSCON_KEYTCHCLKDIV_ADIV (1<<16) |
219 | #define EP93XX_SYSCON_KEYTCHCLKDIV_KEN (1<<15) | 219 | #define EP93XX_SYSCON_KEYTCHCLKDIV_KEN (1<<15) |
220 | #define EP93XX_SYSCON_KEYTCHCLKDIV_KDIV (1<<0) | 220 | #define EP93XX_SYSCON_KEYTCHCLKDIV_KDIV (1<<0) |
221 | #define EP93XX_SYSCON_SYSCFG EP93XX_SYSCON_REG(0x9c) | ||
222 | #define EP93XX_SYSCON_SYSCFG_REV_MASK (0xf0000000) | ||
223 | #define EP93XX_SYSCON_SYSCFG_REV_SHIFT (28) | ||
224 | #define EP93XX_SYSCON_SYSCFG_SBOOT (1<<8) | ||
225 | #define EP93XX_SYSCON_SYSCFG_LCSN7 (1<<7) | ||
226 | #define EP93XX_SYSCON_SYSCFG_LCSN6 (1<<6) | ||
227 | #define EP93XX_SYSCON_SYSCFG_LASDO (1<<5) | ||
228 | #define EP93XX_SYSCON_SYSCFG_LEEDA (1<<4) | ||
229 | #define EP93XX_SYSCON_SYSCFG_LEECLK (1<<3) | ||
230 | #define EP93XX_SYSCON_SYSCFG_LCSN2 (1<<1) | ||
231 | #define EP93XX_SYSCON_SYSCFG_LCSN1 (1<<0) | ||
221 | #define EP93XX_SYSCON_SWLOCK EP93XX_SYSCON_REG(0xc0) | 232 | #define EP93XX_SYSCON_SWLOCK EP93XX_SYSCON_REG(0xc0) |
222 | 233 | ||
223 | #define EP93XX_WATCHDOG_BASE EP93XX_APB_IOMEM(0x00140000) | 234 | #define EP93XX_WATCHDOG_BASE EP93XX_APB_IOMEM(0x00140000) |
diff --git a/arch/arm/mach-ep93xx/micro9.c b/arch/arm/mach-ep93xx/micro9.c index 72e7a7dfd7bf..49fbee5adde2 100644 --- a/arch/arm/mach-ep93xx/micro9.c +++ b/arch/arm/mach-ep93xx/micro9.c | |||
@@ -22,52 +22,77 @@ | |||
22 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
23 | 23 | ||
24 | 24 | ||
25 | static struct ep93xx_eth_data micro9_eth_data = { | 25 | /************************************************************************* |
26 | .phy_id = 0x1f, | 26 | * Micro9 NOR Flash |
27 | }; | 27 | * |
28 | 28 | * Micro9-High has up to 64MB of 32-bit flash on CS1 | |
29 | static void __init micro9_init(void) | 29 | * Micro9-Mid has up to 64MB of either 32-bit or 16-bit flash on CS1 |
30 | { | 30 | * Micro9-Lite uses a seperate MTD map driver for flash support |
31 | ep93xx_register_eth(µ9_eth_data, 1); | 31 | *************************************************************************/ |
32 | } | 32 | static struct physmap_flash_data micro9_flash_data; |
33 | |||
34 | /* | ||
35 | * Micro9-H | ||
36 | */ | ||
37 | #ifdef CONFIG_MACH_MICRO9H | ||
38 | static struct physmap_flash_data micro9h_flash_data = { | ||
39 | .width = 4, | ||
40 | }; | ||
41 | 33 | ||
42 | static struct resource micro9h_flash_resource = { | 34 | static struct resource micro9_flash_resource = { |
43 | .start = EP93XX_CS1_PHYS_BASE, | 35 | .start = EP93XX_CS1_PHYS_BASE, |
44 | .end = EP93XX_CS1_PHYS_BASE + SZ_64M - 1, | 36 | .end = EP93XX_CS1_PHYS_BASE + SZ_64M - 1, |
45 | .flags = IORESOURCE_MEM, | 37 | .flags = IORESOURCE_MEM, |
46 | }; | 38 | }; |
47 | 39 | ||
48 | static struct platform_device micro9h_flash = { | 40 | static struct platform_device micro9_flash = { |
49 | .name = "physmap-flash", | 41 | .name = "physmap-flash", |
50 | .id = 0, | 42 | .id = 0, |
51 | .dev = { | 43 | .dev = { |
52 | .platform_data = µ9h_flash_data, | 44 | .platform_data = µ9_flash_data, |
53 | }, | 45 | }, |
54 | .num_resources = 1, | 46 | .num_resources = 1, |
55 | .resource = µ9h_flash_resource, | 47 | .resource = µ9_flash_resource, |
56 | }; | 48 | }; |
57 | 49 | ||
58 | static void __init micro9h_init(void) | 50 | static void __init __micro9_register_flash(unsigned int width) |
51 | { | ||
52 | micro9_flash_data.width = width; | ||
53 | |||
54 | platform_device_register(µ9_flash); | ||
55 | } | ||
56 | |||
57 | static unsigned int __init micro9_detect_bootwidth(void) | ||
59 | { | 58 | { |
60 | platform_device_register(µ9h_flash); | 59 | u32 v; |
60 | |||
61 | /* Detect the bus width of the external flash memory */ | ||
62 | v = __raw_readl(EP93XX_SYSCON_SYSCFG); | ||
63 | if (v & EP93XX_SYSCON_SYSCFG_LCSN7) | ||
64 | return 4; /* 32-bit */ | ||
65 | else | ||
66 | return 2; /* 16-bit */ | ||
61 | } | 67 | } |
62 | 68 | ||
63 | static void __init micro9h_init_machine(void) | 69 | static void __init micro9_register_flash(void) |
70 | { | ||
71 | if (machine_is_micro9()) | ||
72 | __micro9_register_flash(4); | ||
73 | else if (machine_is_micro9m()) | ||
74 | __micro9_register_flash(micro9_detect_bootwidth()); | ||
75 | } | ||
76 | |||
77 | |||
78 | /************************************************************************* | ||
79 | * Micro9 Ethernet | ||
80 | *************************************************************************/ | ||
81 | static struct ep93xx_eth_data micro9_eth_data = { | ||
82 | .phy_id = 0x1f, | ||
83 | }; | ||
84 | |||
85 | |||
86 | static void __init micro9_init_machine(void) | ||
64 | { | 87 | { |
65 | ep93xx_init_devices(); | 88 | ep93xx_init_devices(); |
66 | micro9_init(); | 89 | ep93xx_register_eth(µ9_eth_data, 1); |
67 | micro9h_init(); | 90 | micro9_register_flash(); |
68 | } | 91 | } |
69 | 92 | ||
70 | MACHINE_START(MICRO9, "Contec Hypercontrol Micro9-H") | 93 | |
94 | #ifdef CONFIG_MACH_MICRO9H | ||
95 | MACHINE_START(MICRO9, "Contec Micro9-High") | ||
71 | /* Maintainer: Hubert Feurstein <hubert.feurstein@contec.at> */ | 96 | /* Maintainer: Hubert Feurstein <hubert.feurstein@contec.at> */ |
72 | .phys_io = EP93XX_APB_PHYS_BASE, | 97 | .phys_io = EP93XX_APB_PHYS_BASE, |
73 | .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, | 98 | .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, |
@@ -75,43 +100,25 @@ MACHINE_START(MICRO9, "Contec Hypercontrol Micro9-H") | |||
75 | .map_io = ep93xx_map_io, | 100 | .map_io = ep93xx_map_io, |
76 | .init_irq = ep93xx_init_irq, | 101 | .init_irq = ep93xx_init_irq, |
77 | .timer = &ep93xx_timer, | 102 | .timer = &ep93xx_timer, |
78 | .init_machine = micro9h_init_machine, | 103 | .init_machine = micro9_init_machine, |
79 | MACHINE_END | 104 | MACHINE_END |
80 | #endif | 105 | #endif |
81 | 106 | ||
82 | /* | ||
83 | * Micro9-M | ||
84 | */ | ||
85 | #ifdef CONFIG_MACH_MICRO9M | 107 | #ifdef CONFIG_MACH_MICRO9M |
86 | static void __init micro9m_init_machine(void) | 108 | MACHINE_START(MICRO9M, "Contec Micro9-Mid") |
87 | { | ||
88 | ep93xx_init_devices(); | ||
89 | micro9_init(); | ||
90 | } | ||
91 | |||
92 | MACHINE_START(MICRO9M, "Contec Hypercontrol Micro9-M") | ||
93 | /* Maintainer: Hubert Feurstein <hubert.feurstein@contec.at> */ | 109 | /* Maintainer: Hubert Feurstein <hubert.feurstein@contec.at> */ |
94 | .phys_io = EP93XX_APB_PHYS_BASE, | 110 | .phys_io = EP93XX_APB_PHYS_BASE, |
95 | .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, | 111 | .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, |
96 | .boot_params = EP93XX_SDCE3_PHYS_BASE_SYNC + 0x100, | 112 | .boot_params = EP93XX_SDCE3_PHYS_BASE_ASYNC + 0x100, |
97 | .map_io = ep93xx_map_io, | 113 | .map_io = ep93xx_map_io, |
98 | .init_irq = ep93xx_init_irq, | 114 | .init_irq = ep93xx_init_irq, |
99 | .timer = &ep93xx_timer, | 115 | .timer = &ep93xx_timer, |
100 | .init_machine = micro9m_init_machine, | 116 | .init_machine = micro9_init_machine, |
101 | MACHINE_END | 117 | MACHINE_END |
102 | #endif | 118 | #endif |
103 | 119 | ||
104 | /* | ||
105 | * Micro9-L | ||
106 | */ | ||
107 | #ifdef CONFIG_MACH_MICRO9L | 120 | #ifdef CONFIG_MACH_MICRO9L |
108 | static void __init micro9l_init_machine(void) | 121 | MACHINE_START(MICRO9L, "Contec Micro9-Lite") |
109 | { | ||
110 | ep93xx_init_devices(); | ||
111 | micro9_init(); | ||
112 | } | ||
113 | |||
114 | MACHINE_START(MICRO9L, "Contec Hypercontrol Micro9-L") | ||
115 | /* Maintainer: Hubert Feurstein <hubert.feurstein@contec.at> */ | 122 | /* Maintainer: Hubert Feurstein <hubert.feurstein@contec.at> */ |
116 | .phys_io = EP93XX_APB_PHYS_BASE, | 123 | .phys_io = EP93XX_APB_PHYS_BASE, |
117 | .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, | 124 | .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc, |
@@ -119,7 +126,6 @@ MACHINE_START(MICRO9L, "Contec Hypercontrol Micro9-L") | |||
119 | .map_io = ep93xx_map_io, | 126 | .map_io = ep93xx_map_io, |
120 | .init_irq = ep93xx_init_irq, | 127 | .init_irq = ep93xx_init_irq, |
121 | .timer = &ep93xx_timer, | 128 | .timer = &ep93xx_timer, |
122 | .init_machine = micro9l_init_machine, | 129 | .init_machine = micro9_init_machine, |
123 | MACHINE_END | 130 | MACHINE_END |
124 | #endif | 131 | #endif |
125 | |||