aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap1/Makefile2
-rw-r--r--arch/arm/mach-omap1/board-ams-delta.c16
-rw-r--r--arch/arm/mach-omap1/board-fsample.c4
-rw-r--r--arch/arm/mach-omap1/board-h2.c2
-rw-r--r--arch/arm/mach-omap1/board-h3.c2
-rw-r--r--arch/arm/mach-omap1/board-htcherald.c4
-rw-r--r--arch/arm/mach-omap1/board-innovator.c2
-rw-r--r--arch/arm/mach-omap1/board-nokia770.c6
-rw-r--r--arch/arm/mach-omap1/board-palmte.c13
-rw-r--r--arch/arm/mach-omap1/board-voiceblue.c107
-rw-r--r--arch/arm/mach-omap1/reset.c25
-rw-r--r--arch/arm/mach-omap2/Kconfig26
-rw-r--r--arch/arm/mach-omap2/Makefile21
-rw-r--r--arch/arm/mach-omap2/board-2430sdp.c8
-rw-r--r--arch/arm/mach-omap2/board-3430sdp.c8
-rw-r--r--arch/arm/mach-omap2/board-3630sdp.c8
-rw-r--r--arch/arm/mach-omap2/board-4430sdp.c8
-rw-r--r--arch/arm/mach-omap2/board-am3517crane.c8
-rw-r--r--arch/arm/mach-omap2/board-am3517evm.c8
-rw-r--r--arch/arm/mach-omap2/board-apollon.c8
-rw-r--r--arch/arm/mach-omap2/board-cm-t35.c8
-rw-r--r--arch/arm/mach-omap2/board-cm-t3517.c8
-rw-r--r--arch/arm/mach-omap2/board-devkit8000.c9
-rw-r--r--arch/arm/mach-omap2/board-generic.c8
-rw-r--r--arch/arm/mach-omap2/board-h4.c9
-rw-r--r--arch/arm/mach-omap2/board-igep0020.c8
-rw-r--r--arch/arm/mach-omap2/board-igep0030.c6
-rw-r--r--arch/arm/mach-omap2/board-ldp.c8
-rw-r--r--arch/arm/mach-omap2/board-n8x0.c18
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c9
-rw-r--r--arch/arm/mach-omap2/board-omap3evm.c8
-rw-r--r--arch/arm/mach-omap2/board-omap3logic.c9
-rw-r--r--arch/arm/mach-omap2/board-omap3pandora.c8
-rw-r--r--arch/arm/mach-omap2/board-omap3stalker.c7
-rw-r--r--arch/arm/mach-omap2/board-omap3touchbook.c9
-rw-r--r--arch/arm/mach-omap2/board-omap4panda.c6
-rw-r--r--arch/arm/mach-omap2/board-overo.c8
-rw-r--r--arch/arm/mach-omap2/board-rm680.c8
-rw-r--r--arch/arm/mach-omap2/board-rx51.c8
-rw-r--r--arch/arm/mach-omap2/board-ti8168evm.c62
-rw-r--r--arch/arm/mach-omap2/board-zoom.c14
-rw-r--r--arch/arm/mach-omap2/clock2xxx.h4
-rw-r--r--arch/arm/mach-omap2/clock3xxx_data.c5
-rw-r--r--arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c16
-rw-r--r--arch/arm/mach-omap2/common.c25
-rw-r--r--arch/arm/mach-omap2/control.h6
-rw-r--r--arch/arm/mach-omap2/devices.c6
-rw-r--r--arch/arm/mach-omap2/id.c33
-rw-r--r--arch/arm/mach-omap2/include/mach/debug-macro.S12
-rw-r--r--arch/arm/mach-omap2/include/mach/entry-macro.S13
-rw-r--r--arch/arm/mach-omap2/io.c34
-rw-r--r--arch/arm/mach-omap2/irq.c9
-rw-r--r--arch/arm/mach-omap2/mailbox.c2
-rw-r--r--arch/arm/mach-omap2/mcbsp.c4
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c31
-rw-r--r--arch/arm/mach-omap2/opp2xxx.h2
-rw-r--r--arch/arm/mach-omap2/powerdomains2xxx_data.c6
-rw-r--r--arch/arm/mach-omap2/prcm.c5
-rw-r--r--arch/arm/mach-omap2/serial.c15
-rw-r--r--arch/arm/plat-omap/common.c11
-rw-r--r--arch/arm/plat-omap/counter_32k.c4
-rw-r--r--arch/arm/plat-omap/dma.c2
-rw-r--r--arch/arm/plat-omap/i2c.c2
-rw-r--r--arch/arm/plat-omap/include/plat/board.h4
-rw-r--r--arch/arm/plat-omap/include/plat/clkdev_omap.h1
-rw-r--r--arch/arm/plat-omap/include/plat/clock.h1
-rw-r--r--arch/arm/plat-omap/include/plat/common.h1
-rw-r--r--arch/arm/plat-omap/include/plat/cpu.h28
-rw-r--r--arch/arm/plat-omap/include/plat/fpga.h92
-rw-r--r--arch/arm/plat-omap/include/plat/hardware.h1
-rw-r--r--arch/arm/plat-omap/include/plat/io.h12
-rw-r--r--arch/arm/plat-omap/include/plat/mcbsp.h14
-rw-r--r--arch/arm/plat-omap/include/plat/multi.h4
-rw-r--r--arch/arm/plat-omap/include/plat/omap_hwmod.h1
-rw-r--r--arch/arm/plat-omap/include/plat/prcm.h1
-rw-r--r--arch/arm/plat-omap/include/plat/serial.h9
-rw-r--r--arch/arm/plat-omap/include/plat/system.h38
-rw-r--r--arch/arm/plat-omap/include/plat/ti816x.h27
-rw-r--r--arch/arm/plat-omap/include/plat/uncompress.h7
-rw-r--r--arch/arm/plat-omap/io.c5
-rw-r--r--arch/arm/plat-omap/sram.c4
-rw-r--r--drivers/mmc/host/Kconfig2
-rw-r--r--drivers/spi/omap2_mcspi.c4
-rw-r--r--drivers/usb/musb/musb_core.c2
-rw-r--r--drivers/usb/musb/musb_core.h6
-rw-r--r--drivers/usb/musb/musbhsdma.h2
-rw-r--r--drivers/usb/otg/isp1301_omap.c2
-rw-r--r--drivers/w1/masters/Kconfig2
-rw-r--r--sound/soc/omap/omap-mcbsp.c6
-rw-r--r--sound/soc/omap/omap-mcbsp.h4
90 files changed, 665 insertions, 386 deletions
diff --git a/arch/arm/mach-omap1/Makefile b/arch/arm/mach-omap1/Makefile
index ba6009f27677..af98117043d2 100644
--- a/arch/arm/mach-omap1/Makefile
+++ b/arch/arm/mach-omap1/Makefile
@@ -4,7 +4,7 @@
4 4
5# Common support 5# Common support
6obj-y := io.o id.o sram.o time.o irq.o mux.o flash.o serial.o devices.o dma.o 6obj-y := io.o id.o sram.o time.o irq.o mux.o flash.o serial.o devices.o dma.o
7obj-y += clock.o clock_data.o opp_data.o 7obj-y += clock.o clock_data.o opp_data.o reset.o
8 8
9obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o 9obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
10 10
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index 22cc8c8df6cb..de88c9297b68 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -165,7 +165,7 @@ static struct map_desc ams_delta_io_desc[] __initdata = {
165 } 165 }
166}; 166};
167 167
168static struct omap_lcd_config ams_delta_lcd_config __initdata = { 168static struct omap_lcd_config ams_delta_lcd_config = {
169 .ctrl_name = "internal", 169 .ctrl_name = "internal",
170}; 170};
171 171
@@ -175,7 +175,7 @@ static struct omap_usb_config ams_delta_usb_config __initdata = {
175 .pins[0] = 2, 175 .pins[0] = 2,
176}; 176};
177 177
178static struct omap_board_config_kernel ams_delta_config[] = { 178static struct omap_board_config_kernel ams_delta_config[] __initdata = {
179 { OMAP_TAG_LCD, &ams_delta_lcd_config }, 179 { OMAP_TAG_LCD, &ams_delta_lcd_config },
180}; 180};
181 181
@@ -208,14 +208,14 @@ static const struct matrix_keymap_data ams_delta_keymap_data = {
208 .keymap_size = ARRAY_SIZE(ams_delta_keymap), 208 .keymap_size = ARRAY_SIZE(ams_delta_keymap),
209}; 209};
210 210
211static struct omap_kp_platform_data ams_delta_kp_data = { 211static struct omap_kp_platform_data ams_delta_kp_data __initdata = {
212 .rows = 8, 212 .rows = 8,
213 .cols = 8, 213 .cols = 8,
214 .keymap_data = &ams_delta_keymap_data, 214 .keymap_data = &ams_delta_keymap_data,
215 .delay = 9, 215 .delay = 9,
216}; 216};
217 217
218static struct platform_device ams_delta_kp_device = { 218static struct platform_device ams_delta_kp_device __initdata = {
219 .name = "omap-keypad", 219 .name = "omap-keypad",
220 .id = -1, 220 .id = -1,
221 .dev = { 221 .dev = {
@@ -225,12 +225,12 @@ static struct platform_device ams_delta_kp_device = {
225 .resource = ams_delta_kp_resources, 225 .resource = ams_delta_kp_resources,
226}; 226};
227 227
228static struct platform_device ams_delta_lcd_device = { 228static struct platform_device ams_delta_lcd_device __initdata = {
229 .name = "lcd_ams_delta", 229 .name = "lcd_ams_delta",
230 .id = -1, 230 .id = -1,
231}; 231};
232 232
233static struct platform_device ams_delta_led_device = { 233static struct platform_device ams_delta_led_device __initdata = {
234 .name = "ams-delta-led", 234 .name = "ams-delta-led",
235 .id = -1 235 .id = -1
236}; 236};
@@ -259,7 +259,7 @@ static int ams_delta_camera_power(struct device *dev, int power)
259#define ams_delta_camera_power NULL 259#define ams_delta_camera_power NULL
260#endif 260#endif
261 261
262static struct soc_camera_link __initdata ams_delta_iclink = { 262static struct soc_camera_link ams_delta_iclink = {
263 .bus_id = 0, /* OMAP1 SoC camera bus */ 263 .bus_id = 0, /* OMAP1 SoC camera bus */
264 .i2c_adapter_id = 1, 264 .i2c_adapter_id = 1,
265 .board_info = &ams_delta_camera_board_info[0], 265 .board_info = &ams_delta_camera_board_info[0],
@@ -267,7 +267,7 @@ static struct soc_camera_link __initdata ams_delta_iclink = {
267 .power = ams_delta_camera_power, 267 .power = ams_delta_camera_power,
268}; 268};
269 269
270static struct platform_device ams_delta_camera_device = { 270static struct platform_device ams_delta_camera_device __initdata = {
271 .name = "soc-camera-pdrv", 271 .name = "soc-camera-pdrv",
272 .id = 0, 272 .id = 0,
273 .dev = { 273 .dev = {
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c
index 0efb9dbae44c..87f173d93557 100644
--- a/arch/arm/mach-omap1/board-fsample.c
+++ b/arch/arm/mach-omap1/board-fsample.c
@@ -287,11 +287,11 @@ static struct platform_device *devices[] __initdata = {
287 &lcd_device, 287 &lcd_device,
288}; 288};
289 289
290static struct omap_lcd_config fsample_lcd_config __initdata = { 290static struct omap_lcd_config fsample_lcd_config = {
291 .ctrl_name = "internal", 291 .ctrl_name = "internal",
292}; 292};
293 293
294static struct omap_board_config_kernel fsample_config[] = { 294static struct omap_board_config_kernel fsample_config[] __initdata = {
295 { OMAP_TAG_LCD, &fsample_lcd_config }, 295 { OMAP_TAG_LCD, &fsample_lcd_config },
296}; 296};
297 297
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
index 28b84aa9bdba..ba3bd09c4754 100644
--- a/arch/arm/mach-omap1/board-h2.c
+++ b/arch/arm/mach-omap1/board-h2.c
@@ -202,7 +202,7 @@ static int h2_nand_dev_ready(struct mtd_info *mtd)
202 202
203static const char *h2_part_probes[] = { "cmdlinepart", NULL }; 203static const char *h2_part_probes[] = { "cmdlinepart", NULL };
204 204
205struct platform_nand_data h2_nand_platdata = { 205static struct platform_nand_data h2_nand_platdata = {
206 .chip = { 206 .chip = {
207 .nr_chips = 1, 207 .nr_chips = 1,
208 .chip_offset = 0, 208 .chip_offset = 0,
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c
index dbc8b8d882ba..ac48677672ee 100644
--- a/arch/arm/mach-omap1/board-h3.c
+++ b/arch/arm/mach-omap1/board-h3.c
@@ -204,7 +204,7 @@ static int nand_dev_ready(struct mtd_info *mtd)
204 204
205static const char *part_probes[] = { "cmdlinepart", NULL }; 205static const char *part_probes[] = { "cmdlinepart", NULL };
206 206
207struct platform_nand_data nand_platdata = { 207static struct platform_nand_data nand_platdata = {
208 .chip = { 208 .chip = {
209 .nr_chips = 1, 209 .nr_chips = 1,
210 .chip_offset = 0, 210 .chip_offset = 0,
diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c
index f2c5c585bc83..ba05a51f9408 100644
--- a/arch/arm/mach-omap1/board-htcherald.c
+++ b/arch/arm/mach-omap1/board-htcherald.c
@@ -331,7 +331,7 @@ static struct resource htcpld_resources[] = {
331 }, 331 },
332}; 332};
333 333
334struct htcpld_chip_platform_data htcpld_chips[] = { 334static struct htcpld_chip_platform_data htcpld_chips[] = {
335 [0] = { 335 [0] = {
336 .addr = 0x03, 336 .addr = 0x03,
337 .reset = 0x04, 337 .reset = 0x04,
@@ -366,7 +366,7 @@ struct htcpld_chip_platform_data htcpld_chips[] = {
366 }, 366 },
367}; 367};
368 368
369struct htcpld_core_platform_data htcpld_pfdata = { 369static struct htcpld_core_platform_data htcpld_pfdata = {
370 .int_reset_gpio_hi = HTCPLD_GPIO_INT_RESET_HI, 370 .int_reset_gpio_hi = HTCPLD_GPIO_INT_RESET_HI,
371 .int_reset_gpio_lo = HTCPLD_GPIO_INT_RESET_LO, 371 .int_reset_gpio_lo = HTCPLD_GPIO_INT_RESET_LO,
372 .i2c_adapter_id = 1, 372 .i2c_adapter_id = 1,
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c
index a36e6742bf9b..2d9b8cbd7a14 100644
--- a/arch/arm/mach-omap1/board-innovator.c
+++ b/arch/arm/mach-omap1/board-innovator.c
@@ -365,7 +365,7 @@ static struct omap_mmc_platform_data mmc1_data = {
365 365
366static struct omap_mmc_platform_data *mmc_data[OMAP16XX_NR_MMC]; 366static struct omap_mmc_platform_data *mmc_data[OMAP16XX_NR_MMC];
367 367
368void __init innovator_mmc_init(void) 368static void __init innovator_mmc_init(void)
369{ 369{
370 mmc_data[0] = &mmc1_data; 370 mmc_data[0] = &mmc1_data;
371 omap1_init_mmc(mmc_data, OMAP15XX_NR_MMC); 371 omap1_init_mmc(mmc_data, OMAP15XX_NR_MMC);
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c
index d21f09dc78f4..cfd084926146 100644
--- a/arch/arm/mach-omap1/board-nokia770.c
+++ b/arch/arm/mach-omap1/board-nokia770.c
@@ -115,7 +115,7 @@ static struct mipid_platform_data nokia770_mipid_platform_data = {
115 .shutdown = mipid_shutdown, 115 .shutdown = mipid_shutdown,
116}; 116};
117 117
118static void mipid_dev_init(void) 118static void __init mipid_dev_init(void)
119{ 119{
120 const struct omap_lcd_config *conf; 120 const struct omap_lcd_config *conf;
121 121
@@ -126,7 +126,7 @@ static void mipid_dev_init(void)
126 } 126 }
127} 127}
128 128
129static void ads7846_dev_init(void) 129static void __init ads7846_dev_init(void)
130{ 130{
131 if (gpio_request(ADS7846_PENDOWN_GPIO, "ADS7846 pendown") < 0) 131 if (gpio_request(ADS7846_PENDOWN_GPIO, "ADS7846 pendown") < 0)
132 printk(KERN_ERR "can't get ads7846 pen down GPIO\n"); 132 printk(KERN_ERR "can't get ads7846 pen down GPIO\n");
@@ -170,7 +170,7 @@ static struct hwa742_platform_data nokia770_hwa742_platform_data = {
170 .te_connected = 1, 170 .te_connected = 1,
171}; 171};
172 172
173static void hwa742_dev_init(void) 173static void __init hwa742_dev_init(void)
174{ 174{
175 clk_add_alias("hwa_sys_ck", NULL, "bclk", NULL); 175 clk_add_alias("hwa_sys_ck", NULL, "bclk", NULL);
176 omapfb_set_ctrl_platform_data(&nokia770_hwa742_platform_data); 176 omapfb_set_ctrl_platform_data(&nokia770_hwa742_platform_data);
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c
index fb51ce6123d8..c9d38f47845f 100644
--- a/arch/arm/mach-omap1/board-palmte.c
+++ b/arch/arm/mach-omap1/board-palmte.c
@@ -230,19 +230,6 @@ static struct spi_board_info palmte_spi_info[] __initdata = {
230 }, 230 },
231}; 231};
232 232
233static void palmte_headphones_detect(void *data, int state)
234{
235 if (state) {
236 /* Headphones connected, disable speaker */
237 gpio_set_value(PALMTE_SPEAKER_GPIO, 0);
238 printk(KERN_INFO "PM: speaker off\n");
239 } else {
240 /* Headphones unplugged, re-enable speaker */
241 gpio_set_value(PALMTE_SPEAKER_GPIO, 1);
242 printk(KERN_INFO "PM: speaker on\n");
243 }
244}
245
246static void __init palmte_misc_gpio_setup(void) 233static void __init palmte_misc_gpio_setup(void)
247{ 234{
248 /* Set TSC2102 PINTDAV pin as input (used by TSC2102 driver) */ 235 /* Set TSC2102 PINTDAV pin as input (used by TSC2102 driver) */
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c
index 815a69ce821d..bdc0ac8dc21f 100644
--- a/arch/arm/mach-omap1/board-voiceblue.c
+++ b/arch/arm/mach-omap1/board-voiceblue.c
@@ -26,10 +26,12 @@
26#include <linux/smc91x.h> 26#include <linux/smc91x.h>
27 27
28#include <mach/hardware.h> 28#include <mach/hardware.h>
29#include <mach/system.h>
29#include <asm/mach-types.h> 30#include <asm/mach-types.h>
30#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
31#include <asm/mach/map.h> 32#include <asm/mach/map.h>
32 33
34#include <plat/board-voiceblue.h>
33#include <plat/common.h> 35#include <plat/common.h>
34#include <mach/gpio.h> 36#include <mach/gpio.h>
35#include <plat/flash.h> 37#include <plat/flash.h>
@@ -163,52 +165,6 @@ static void __init voiceblue_init_irq(void)
163 omap_init_irq(); 165 omap_init_irq();
164} 166}
165 167
166static void __init voiceblue_init(void)
167{
168 /* mux pins for uarts */
169 omap_cfg_reg(UART1_TX);
170 omap_cfg_reg(UART1_RTS);
171 omap_cfg_reg(UART2_TX);
172 omap_cfg_reg(UART2_RTS);
173 omap_cfg_reg(UART3_TX);
174 omap_cfg_reg(UART3_RX);
175
176 /* Watchdog */
177 gpio_request(0, "Watchdog");
178 /* smc91x reset */
179 gpio_request(7, "SMC91x reset");
180 gpio_direction_output(7, 1);
181 udelay(2); /* wait at least 100ns */
182 gpio_set_value(7, 0);
183 mdelay(50); /* 50ms until PHY ready */
184 /* smc91x interrupt pin */
185 gpio_request(8, "SMC91x irq");
186 /* 16C554 reset*/
187 gpio_request(6, "16C554 reset");
188 gpio_direction_output(6, 0);
189 /* 16C554 interrupt pins */
190 gpio_request(12, "16C554 irq");
191 gpio_request(13, "16C554 irq");
192 gpio_request(14, "16C554 irq");
193 gpio_request(15, "16C554 irq");
194 set_irq_type(gpio_to_irq(12), IRQ_TYPE_EDGE_RISING);
195 set_irq_type(gpio_to_irq(13), IRQ_TYPE_EDGE_RISING);
196 set_irq_type(gpio_to_irq(14), IRQ_TYPE_EDGE_RISING);
197 set_irq_type(gpio_to_irq(15), IRQ_TYPE_EDGE_RISING);
198
199 platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
200 omap_board_config = voiceblue_config;
201 omap_board_config_size = ARRAY_SIZE(voiceblue_config);
202 omap_serial_init();
203 omap1_usb_init(&voiceblue_usb_config);
204 omap_register_i2c_bus(1, 100, NULL, 0);
205
206 /* There is a good chance board is going up, so enable power LED
207 * (it is connected through invertor) */
208 omap_writeb(0x00, OMAP_LPG1_LCR);
209 omap_writeb(0x00, OMAP_LPG1_PMR); /* Disable clock */
210}
211
212static void __init voiceblue_map_io(void) 168static void __init voiceblue_map_io(void)
213{ 169{
214 omap1_map_common_io(); 170 omap1_map_common_io();
@@ -275,8 +231,17 @@ void voiceblue_wdt_ping(void)
275 gpio_set_value(0, wdt_gpio_state); 231 gpio_set_value(0, wdt_gpio_state);
276} 232}
277 233
278void voiceblue_reset(void) 234static void voiceblue_reset(char mode, const char *cmd)
279{ 235{
236 /*
237 * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28
238 * "Global Software Reset Affects Traffic Controller Frequency".
239 */
240 if (cpu_is_omap5912()) {
241 omap_writew(omap_readw(DPLL_CTL) & ~(1 << 4), DPLL_CTL);
242 omap_writew(0x8, ARM_RSTCT1);
243 }
244
280 set_bit(MACHINE_REBOOT, &machine_state); 245 set_bit(MACHINE_REBOOT, &machine_state);
281 voiceblue_wdt_enable(); 246 voiceblue_wdt_enable();
282 while (1) ; 247 while (1) ;
@@ -286,6 +251,54 @@ EXPORT_SYMBOL(voiceblue_wdt_enable);
286EXPORT_SYMBOL(voiceblue_wdt_disable); 251EXPORT_SYMBOL(voiceblue_wdt_disable);
287EXPORT_SYMBOL(voiceblue_wdt_ping); 252EXPORT_SYMBOL(voiceblue_wdt_ping);
288 253
254static void __init voiceblue_init(void)
255{
256 /* mux pins for uarts */
257 omap_cfg_reg(UART1_TX);
258 omap_cfg_reg(UART1_RTS);
259 omap_cfg_reg(UART2_TX);
260 omap_cfg_reg(UART2_RTS);
261 omap_cfg_reg(UART3_TX);
262 omap_cfg_reg(UART3_RX);
263
264 /* Watchdog */
265 gpio_request(0, "Watchdog");
266 /* smc91x reset */
267 gpio_request(7, "SMC91x reset");
268 gpio_direction_output(7, 1);
269 udelay(2); /* wait at least 100ns */
270 gpio_set_value(7, 0);
271 mdelay(50); /* 50ms until PHY ready */
272 /* smc91x interrupt pin */
273 gpio_request(8, "SMC91x irq");
274 /* 16C554 reset*/
275 gpio_request(6, "16C554 reset");
276 gpio_direction_output(6, 0);
277 /* 16C554 interrupt pins */
278 gpio_request(12, "16C554 irq");
279 gpio_request(13, "16C554 irq");
280 gpio_request(14, "16C554 irq");
281 gpio_request(15, "16C554 irq");
282 set_irq_type(gpio_to_irq(12), IRQ_TYPE_EDGE_RISING);
283 set_irq_type(gpio_to_irq(13), IRQ_TYPE_EDGE_RISING);
284 set_irq_type(gpio_to_irq(14), IRQ_TYPE_EDGE_RISING);
285 set_irq_type(gpio_to_irq(15), IRQ_TYPE_EDGE_RISING);
286
287 platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
288 omap_board_config = voiceblue_config;
289 omap_board_config_size = ARRAY_SIZE(voiceblue_config);
290 omap_serial_init();
291 omap1_usb_init(&voiceblue_usb_config);
292 omap_register_i2c_bus(1, 100, NULL, 0);
293
294 /* There is a good chance board is going up, so enable power LED
295 * (it is connected through invertor) */
296 omap_writeb(0x00, OMAP_LPG1_LCR);
297 omap_writeb(0x00, OMAP_LPG1_PMR); /* Disable clock */
298
299 arch_reset = voiceblue_reset;
300}
301
289MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910") 302MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
290 /* Maintainer: Ladislav Michl <michl@2n.cz> */ 303 /* Maintainer: Ladislav Michl <michl@2n.cz> */
291 .boot_params = 0x10000100, 304 .boot_params = 0x10000100,
diff --git a/arch/arm/mach-omap1/reset.c b/arch/arm/mach-omap1/reset.c
new file mode 100644
index 000000000000..ad951ee69205
--- /dev/null
+++ b/arch/arm/mach-omap1/reset.c
@@ -0,0 +1,25 @@
1/*
2 * OMAP1 reset support
3 */
4#include <linux/kernel.h>
5#include <linux/io.h>
6
7#include <mach/hardware.h>
8#include <mach/system.h>
9#include <plat/prcm.h>
10
11void omap1_arch_reset(char mode, const char *cmd)
12{
13 /*
14 * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28
15 * "Global Software Reset Affects Traffic Controller Frequency".
16 */
17 if (cpu_is_omap5912()) {
18 omap_writew(omap_readw(DPLL_CTL) & ~(1 << 4), DPLL_CTL);
19 omap_writew(0x8, ARM_RSTCT1);
20 }
21
22 omap_writew(1, ARM_RSTCT1);
23}
24
25void (*arch_reset)(char, const char *) = omap1_arch_reset;
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 1a2cf6226a55..9b4e78fe3d1c 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -53,25 +53,30 @@ config ARCH_OMAP4
53comment "OMAP Core Type" 53comment "OMAP Core Type"
54 depends on ARCH_OMAP2 54 depends on ARCH_OMAP2
55 55
56config ARCH_OMAP2420 56config SOC_OMAP2420
57 bool "OMAP2420 support" 57 bool "OMAP2420 support"
58 depends on ARCH_OMAP2 58 depends on ARCH_OMAP2
59 default y 59 default y
60 select OMAP_DM_TIMER 60 select OMAP_DM_TIMER
61 select ARCH_OMAP_OTG 61 select ARCH_OMAP_OTG
62 62
63config ARCH_OMAP2430 63config SOC_OMAP2430
64 bool "OMAP2430 support" 64 bool "OMAP2430 support"
65 depends on ARCH_OMAP2 65 depends on ARCH_OMAP2
66 default y 66 default y
67 select ARCH_OMAP_OTG 67 select ARCH_OMAP_OTG
68 68
69config ARCH_OMAP3430 69config SOC_OMAP3430
70 bool "OMAP3430 support" 70 bool "OMAP3430 support"
71 depends on ARCH_OMAP3 71 depends on ARCH_OMAP3
72 default y 72 default y
73 select ARCH_OMAP_OTG 73 select ARCH_OMAP_OTG
74 74
75config SOC_OMAPTI816X
76 bool "TI816X support"
77 depends on ARCH_OMAP3
78 default y
79
75config OMAP_PACKAGE_ZAF 80config OMAP_PACKAGE_ZAF
76 bool 81 bool
77 82
@@ -106,25 +111,25 @@ config MACH_OMAP_GENERIC
106 111
107config MACH_OMAP2_TUSB6010 112config MACH_OMAP2_TUSB6010
108 bool 113 bool
109 depends on ARCH_OMAP2 && ARCH_OMAP2420 114 depends on ARCH_OMAP2 && SOC_OMAP2420
110 default y if MACH_NOKIA_N8X0 115 default y if MACH_NOKIA_N8X0
111 116
112config MACH_OMAP_H4 117config MACH_OMAP_H4
113 bool "OMAP 2420 H4 board" 118 bool "OMAP 2420 H4 board"
114 depends on ARCH_OMAP2420 119 depends on SOC_OMAP2420
115 default y 120 default y
116 select OMAP_PACKAGE_ZAF 121 select OMAP_PACKAGE_ZAF
117 select OMAP_DEBUG_DEVICES 122 select OMAP_DEBUG_DEVICES
118 123
119config MACH_OMAP_APOLLON 124config MACH_OMAP_APOLLON
120 bool "OMAP 2420 Apollon board" 125 bool "OMAP 2420 Apollon board"
121 depends on ARCH_OMAP2420 126 depends on SOC_OMAP2420
122 default y 127 default y
123 select OMAP_PACKAGE_ZAC 128 select OMAP_PACKAGE_ZAC
124 129
125config MACH_OMAP_2430SDP 130config MACH_OMAP_2430SDP
126 bool "OMAP 2430 SDP board" 131 bool "OMAP 2430 SDP board"
127 depends on ARCH_OMAP2430 132 depends on SOC_OMAP2430
128 default y 133 default y
129 select OMAP_PACKAGE_ZAC 134 select OMAP_PACKAGE_ZAC
130 135
@@ -219,7 +224,7 @@ config MACH_NOKIA_N810_WIMAX
219 224
220config MACH_NOKIA_N8X0 225config MACH_NOKIA_N8X0
221 bool "Nokia N800/N810" 226 bool "Nokia N800/N810"
222 depends on ARCH_OMAP2420 227 depends on SOC_OMAP2420
223 default y 228 default y
224 select OMAP_PACKAGE_ZAC 229 select OMAP_PACKAGE_ZAC
225 select MACH_NOKIA_N800 230 select MACH_NOKIA_N800
@@ -294,6 +299,11 @@ config MACH_OMAP_3630SDP
294 default y 299 default y
295 select OMAP_PACKAGE_CBP 300 select OMAP_PACKAGE_CBP
296 301
302config MACH_TI8168EVM
303 bool "TI8168 Evaluation Module"
304 depends on SOC_OMAPTI816X
305 default y
306
297config MACH_OMAP_4430SDP 307config MACH_OMAP_4430SDP
298 bool "OMAP 4430 SDP board" 308 bool "OMAP 4430 SDP board"
299 default y 309 default y
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 1c0c2b02d870..a9e3974d015f 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -31,8 +31,8 @@ AFLAGS_omap-headsmp.o :=-Wa,-march=armv7-a$(plus_sec)
31AFLAGS_omap44xx-smc.o :=-Wa,-march=armv7-a$(plus_sec) 31AFLAGS_omap44xx-smc.o :=-Wa,-march=armv7-a$(plus_sec)
32 32
33# Functions loaded to SRAM 33# Functions loaded to SRAM
34obj-$(CONFIG_ARCH_OMAP2420) += sram242x.o 34obj-$(CONFIG_SOC_OMAP2420) += sram242x.o
35obj-$(CONFIG_ARCH_OMAP2430) += sram243x.o 35obj-$(CONFIG_SOC_OMAP2430) += sram243x.o
36obj-$(CONFIG_ARCH_OMAP3) += sram34xx.o 36obj-$(CONFIG_ARCH_OMAP3) += sram34xx.o
37 37
38AFLAGS_sram242x.o :=-Wa,-march=armv6 38AFLAGS_sram242x.o :=-Wa,-march=armv6
@@ -40,8 +40,8 @@ AFLAGS_sram243x.o :=-Wa,-march=armv6
40AFLAGS_sram34xx.o :=-Wa,-march=armv7-a 40AFLAGS_sram34xx.o :=-Wa,-march=armv7-a
41 41
42# Pin multiplexing 42# Pin multiplexing
43obj-$(CONFIG_ARCH_OMAP2420) += mux2420.o 43obj-$(CONFIG_SOC_OMAP2420) += mux2420.o
44obj-$(CONFIG_ARCH_OMAP2430) += mux2430.o 44obj-$(CONFIG_SOC_OMAP2430) += mux2430.o
45obj-$(CONFIG_ARCH_OMAP3) += mux34xx.o 45obj-$(CONFIG_ARCH_OMAP3) += mux34xx.o
46obj-$(CONFIG_ARCH_OMAP4) += mux44xx.o 46obj-$(CONFIG_ARCH_OMAP4) += mux44xx.o
47 47
@@ -113,8 +113,8 @@ obj-$(CONFIG_ARCH_OMAP2) += $(clock-common) clock2xxx.o \
113 clkt2xxx_dpllcore.o \ 113 clkt2xxx_dpllcore.o \
114 clkt2xxx_virt_prcm_set.o \ 114 clkt2xxx_virt_prcm_set.o \
115 clkt2xxx_apll.o clkt2xxx_osc.o 115 clkt2xxx_apll.o clkt2xxx_osc.o
116obj-$(CONFIG_ARCH_OMAP2420) += clock2420_data.o 116obj-$(CONFIG_SOC_OMAP2420) += clock2420_data.o
117obj-$(CONFIG_ARCH_OMAP2430) += clock2430.o clock2430_data.o 117obj-$(CONFIG_SOC_OMAP2430) += clock2430.o clock2430_data.o
118obj-$(CONFIG_ARCH_OMAP3) += $(clock-common) clock3xxx.o \ 118obj-$(CONFIG_ARCH_OMAP3) += $(clock-common) clock3xxx.o \
119 clock34xx.o clkt34xx_dpll3m2.o \ 119 clock34xx.o clkt34xx_dpll3m2.o \
120 clock3517.o clock36xx.o \ 120 clock3517.o clock36xx.o \
@@ -123,12 +123,12 @@ obj-$(CONFIG_ARCH_OMAP4) += $(clock-common) clock44xx_data.o \
123 dpll3xxx.o 123 dpll3xxx.o
124 124
125# OMAP2 clock rate set data (old "OPP" data) 125# OMAP2 clock rate set data (old "OPP" data)
126obj-$(CONFIG_ARCH_OMAP2420) += opp2420_data.o 126obj-$(CONFIG_SOC_OMAP2420) += opp2420_data.o
127obj-$(CONFIG_ARCH_OMAP2430) += opp2430_data.o 127obj-$(CONFIG_SOC_OMAP2430) += opp2430_data.o
128 128
129# hwmod data 129# hwmod data
130obj-$(CONFIG_ARCH_OMAP2420) += omap_hwmod_2420_data.o 130obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2420_data.o
131obj-$(CONFIG_ARCH_OMAP2430) += omap_hwmod_2430_data.o 131obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2430_data.o
132obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_3xxx_data.o 132obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_3xxx_data.o
133obj-$(CONFIG_ARCH_OMAP4) += omap_hwmod_44xx_data.o 133obj-$(CONFIG_ARCH_OMAP4) += omap_hwmod_44xx_data.o
134 134
@@ -224,6 +224,7 @@ obj-$(CONFIG_MACH_CRANEBOARD) += board-am3517crane.o
224 224
225obj-$(CONFIG_MACH_SBC3530) += board-omap3stalker.o \ 225obj-$(CONFIG_MACH_SBC3530) += board-omap3stalker.o \
226 hsmmc.o 226 hsmmc.o
227obj-$(CONFIG_MACH_TI8168EVM) += board-ti8168evm.o
227# Platform specific device init code 228# Platform specific device init code
228usbfs-$(CONFIG_ARCH_OMAP_OTG) := usb-fs.o 229usbfs-$(CONFIG_ARCH_OMAP_OTG) := usb-fs.o
229obj-y += $(usbfs-m) $(usbfs-y) 230obj-y += $(usbfs-m) $(usbfs-y)
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c
index e0661777f599..ec74c0f2051c 100644
--- a/arch/arm/mach-omap2/board-2430sdp.c
+++ b/arch/arm/mach-omap2/board-2430sdp.c
@@ -139,13 +139,12 @@ static struct omap_board_config_kernel sdp2430_config[] __initdata = {
139 {OMAP_TAG_LCD, &sdp2430_lcd_config}, 139 {OMAP_TAG_LCD, &sdp2430_lcd_config},
140}; 140};
141 141
142static void __init omap_2430sdp_init_irq(void) 142static void __init omap_2430sdp_init_early(void)
143{ 143{
144 omap_board_config = sdp2430_config; 144 omap_board_config = sdp2430_config;
145 omap_board_config_size = ARRAY_SIZE(sdp2430_config); 145 omap_board_config_size = ARRAY_SIZE(sdp2430_config);
146 omap2_init_common_infrastructure(); 146 omap2_init_common_infrastructure();
147 omap2_init_common_devices(NULL, NULL); 147 omap2_init_common_devices(NULL, NULL);
148 omap_init_irq();
149} 148}
150 149
151static struct twl4030_gpio_platform_data sdp2430_gpio_data = { 150static struct twl4030_gpio_platform_data sdp2430_gpio_data = {
@@ -253,9 +252,10 @@ static void __init omap_2430sdp_map_io(void)
253MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board") 252MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
254 /* Maintainer: Syed Khasim - Texas Instruments Inc */ 253 /* Maintainer: Syed Khasim - Texas Instruments Inc */
255 .boot_params = 0x80000100, 254 .boot_params = 0x80000100,
256 .map_io = omap_2430sdp_map_io,
257 .reserve = omap_reserve, 255 .reserve = omap_reserve,
258 .init_irq = omap_2430sdp_init_irq, 256 .map_io = omap_2430sdp_map_io,
257 .init_early = omap_2430sdp_init_early,
258 .init_irq = omap_init_irq,
259 .init_machine = omap_2430sdp_init, 259 .init_machine = omap_2430sdp_init,
260 .timer = &omap_timer, 260 .timer = &omap_timer,
261MACHINE_END 261MACHINE_END
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
index d4e41ef86aa5..31085883199e 100644
--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -327,14 +327,13 @@ static struct platform_device *sdp3430_devices[] __initdata = {
327static struct omap_board_config_kernel sdp3430_config[] __initdata = { 327static struct omap_board_config_kernel sdp3430_config[] __initdata = {
328}; 328};
329 329
330static void __init omap_3430sdp_init_irq(void) 330static void __init omap_3430sdp_init_early(void)
331{ 331{
332 omap_board_config = sdp3430_config; 332 omap_board_config = sdp3430_config;
333 omap_board_config_size = ARRAY_SIZE(sdp3430_config); 333 omap_board_config_size = ARRAY_SIZE(sdp3430_config);
334 omap3_pm_init_cpuidle(omap3_cpuidle_params_table); 334 omap3_pm_init_cpuidle(omap3_cpuidle_params_table);
335 omap2_init_common_infrastructure(); 335 omap2_init_common_infrastructure();
336 omap2_init_common_devices(hyb18m512160af6_sdrc_params, NULL); 336 omap2_init_common_devices(hyb18m512160af6_sdrc_params, NULL);
337 omap_init_irq();
338} 337}
339 338
340static int sdp3430_batt_table[] = { 339static int sdp3430_batt_table[] = {
@@ -822,9 +821,10 @@ static void __init omap_3430sdp_init(void)
822MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board") 821MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
823 /* Maintainer: Syed Khasim - Texas Instruments Inc */ 822 /* Maintainer: Syed Khasim - Texas Instruments Inc */
824 .boot_params = 0x80000100, 823 .boot_params = 0x80000100,
825 .map_io = omap3_map_io,
826 .reserve = omap_reserve, 824 .reserve = omap_reserve,
827 .init_irq = omap_3430sdp_init_irq, 825 .map_io = omap3_map_io,
826 .init_early = omap_3430sdp_init_early,
827 .init_irq = omap_init_irq,
828 .init_machine = omap_3430sdp_init, 828 .init_machine = omap_3430sdp_init,
829 .timer = &omap_timer, 829 .timer = &omap_timer,
830MACHINE_END 830MACHINE_END
diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c
index 62645640f5e4..16538757291a 100644
--- a/arch/arm/mach-omap2/board-3630sdp.c
+++ b/arch/arm/mach-omap2/board-3630sdp.c
@@ -69,14 +69,13 @@ static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
69static struct omap_board_config_kernel sdp_config[] __initdata = { 69static struct omap_board_config_kernel sdp_config[] __initdata = {
70}; 70};
71 71
72static void __init omap_sdp_init_irq(void) 72static void __init omap_sdp_init_early(void)
73{ 73{
74 omap_board_config = sdp_config; 74 omap_board_config = sdp_config;
75 omap_board_config_size = ARRAY_SIZE(sdp_config); 75 omap_board_config_size = ARRAY_SIZE(sdp_config);
76 omap2_init_common_infrastructure(); 76 omap2_init_common_infrastructure();
77 omap2_init_common_devices(h8mbx00u0mer0em_sdrc_params, 77 omap2_init_common_devices(h8mbx00u0mer0em_sdrc_params,
78 h8mbx00u0mer0em_sdrc_params); 78 h8mbx00u0mer0em_sdrc_params);
79 omap_init_irq();
80} 79}
81 80
82#ifdef CONFIG_OMAP_MUX 81#ifdef CONFIG_OMAP_MUX
@@ -216,9 +215,10 @@ static void __init omap_sdp_init(void)
216 215
217MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board") 216MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board")
218 .boot_params = 0x80000100, 217 .boot_params = 0x80000100,
219 .map_io = omap3_map_io,
220 .reserve = omap_reserve, 218 .reserve = omap_reserve,
221 .init_irq = omap_sdp_init_irq, 219 .map_io = omap3_map_io,
220 .init_early = omap_sdp_init_early,
221 .init_irq = omap_init_irq,
222 .init_machine = omap_sdp_init, 222 .init_machine = omap_sdp_init,
223 .timer = &omap_timer, 223 .timer = &omap_timer,
224MACHINE_END 224MACHINE_END
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index 07d1b20b1148..12d99e582cd6 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -239,7 +239,7 @@ static struct omap_board_config_kernel sdp4430_config[] __initdata = {
239 { OMAP_TAG_LCD, &sdp4430_lcd_config }, 239 { OMAP_TAG_LCD, &sdp4430_lcd_config },
240}; 240};
241 241
242static void __init omap_4430sdp_init_irq(void) 242static void __init omap_4430sdp_init_early(void)
243{ 243{
244 omap_board_config = sdp4430_config; 244 omap_board_config = sdp4430_config;
245 omap_board_config_size = ARRAY_SIZE(sdp4430_config); 245 omap_board_config_size = ARRAY_SIZE(sdp4430_config);
@@ -248,7 +248,6 @@ static void __init omap_4430sdp_init_irq(void)
248#ifdef CONFIG_OMAP_32K_TIMER 248#ifdef CONFIG_OMAP_32K_TIMER
249 omap2_gp_clockevent_set_gptimer(1); 249 omap2_gp_clockevent_set_gptimer(1);
250#endif 250#endif
251 gic_init_irq();
252} 251}
253 252
254static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 253static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
@@ -605,9 +604,10 @@ static void __init omap_4430sdp_map_io(void)
605MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board") 604MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
606 /* Maintainer: Santosh Shilimkar - Texas Instruments Inc */ 605 /* Maintainer: Santosh Shilimkar - Texas Instruments Inc */
607 .boot_params = 0x80000100, 606 .boot_params = 0x80000100,
608 .map_io = omap_4430sdp_map_io,
609 .reserve = omap_reserve, 607 .reserve = omap_reserve,
610 .init_irq = omap_4430sdp_init_irq, 608 .map_io = omap_4430sdp_map_io,
609 .init_early = omap_4430sdp_init_early,
610 .init_irq = gic_init_irq,
611 .init_machine = omap_4430sdp_init, 611 .init_machine = omap_4430sdp_init,
612 .timer = &omap_timer, 612 .timer = &omap_timer,
613MACHINE_END 613MACHINE_END
diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c
index 71acb5ab281c..ae3a83d47dab 100644
--- a/arch/arm/mach-omap2/board-am3517crane.c
+++ b/arch/arm/mach-omap2/board-am3517crane.c
@@ -49,14 +49,13 @@ static struct omap_board_mux board_mux[] __initdata = {
49#define board_mux NULL 49#define board_mux NULL
50#endif 50#endif
51 51
52static void __init am3517_crane_init_irq(void) 52static void __init am3517_crane_init_early(void)
53{ 53{
54 omap_board_config = am3517_crane_config; 54 omap_board_config = am3517_crane_config;
55 omap_board_config_size = ARRAY_SIZE(am3517_crane_config); 55 omap_board_config_size = ARRAY_SIZE(am3517_crane_config);
56 56
57 omap2_init_common_infrastructure(); 57 omap2_init_common_infrastructure();
58 omap2_init_common_devices(NULL, NULL); 58 omap2_init_common_devices(NULL, NULL);
59 omap_init_irq();
60} 59}
61 60
62static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { 61static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = {
@@ -108,9 +107,10 @@ static void __init am3517_crane_init(void)
108 107
109MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD") 108MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")
110 .boot_params = 0x80000100, 109 .boot_params = 0x80000100,
111 .map_io = omap3_map_io,
112 .reserve = omap_reserve, 110 .reserve = omap_reserve,
113 .init_irq = am3517_crane_init_irq, 111 .map_io = omap3_map_io,
112 .init_early = am3517_crane_init_early,
113 .init_irq = omap_init_irq,
114 .init_machine = am3517_crane_init, 114 .init_machine = am3517_crane_init,
115 .timer = &omap_timer, 115 .timer = &omap_timer,
116MACHINE_END 116MACHINE_END
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c
index 10d60b7743cf..d0d0f5528132 100644
--- a/arch/arm/mach-omap2/board-am3517evm.c
+++ b/arch/arm/mach-omap2/board-am3517evm.c
@@ -396,13 +396,12 @@ static struct platform_device *am3517_evm_devices[] __initdata = {
396 &am3517_evm_dss_device, 396 &am3517_evm_dss_device,
397}; 397};
398 398
399static void __init am3517_evm_init_irq(void) 399static void __init am3517_evm_init_early(void)
400{ 400{
401 omap_board_config = am3517_evm_config; 401 omap_board_config = am3517_evm_config;
402 omap_board_config_size = ARRAY_SIZE(am3517_evm_config); 402 omap_board_config_size = ARRAY_SIZE(am3517_evm_config);
403 omap2_init_common_infrastructure(); 403 omap2_init_common_infrastructure();
404 omap2_init_common_devices(NULL, NULL); 404 omap2_init_common_devices(NULL, NULL);
405 omap_init_irq();
406} 405}
407 406
408static struct omap_musb_board_data musb_board_data = { 407static struct omap_musb_board_data musb_board_data = {
@@ -521,9 +520,10 @@ static void __init am3517_evm_init(void)
521 520
522MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM") 521MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM")
523 .boot_params = 0x80000100, 522 .boot_params = 0x80000100,
524 .map_io = omap3_map_io,
525 .reserve = omap_reserve, 523 .reserve = omap_reserve,
526 .init_irq = am3517_evm_init_irq, 524 .map_io = omap3_map_io,
525 .init_early = am3517_evm_init_early,
526 .init_irq = omap_init_irq,
527 .init_machine = am3517_evm_init, 527 .init_machine = am3517_evm_init,
528 .timer = &omap_timer, 528 .timer = &omap_timer,
529MACHINE_END 529MACHINE_END
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c
index 9f55b68687f7..4ef4aad4e719 100644
--- a/arch/arm/mach-omap2/board-apollon.c
+++ b/arch/arm/mach-omap2/board-apollon.c
@@ -274,13 +274,12 @@ static struct omap_board_config_kernel apollon_config[] __initdata = {
274 { OMAP_TAG_LCD, &apollon_lcd_config }, 274 { OMAP_TAG_LCD, &apollon_lcd_config },
275}; 275};
276 276
277static void __init omap_apollon_init_irq(void) 277static void __init omap_apollon_init_early(void)
278{ 278{
279 omap_board_config = apollon_config; 279 omap_board_config = apollon_config;
280 omap_board_config_size = ARRAY_SIZE(apollon_config); 280 omap_board_config_size = ARRAY_SIZE(apollon_config);
281 omap2_init_common_infrastructure(); 281 omap2_init_common_infrastructure();
282 omap2_init_common_devices(NULL, NULL); 282 omap2_init_common_devices(NULL, NULL);
283 omap_init_irq();
284} 283}
285 284
286static void __init apollon_led_init(void) 285static void __init apollon_led_init(void)
@@ -355,9 +354,10 @@ static void __init omap_apollon_map_io(void)
355MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon") 354MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")
356 /* Maintainer: Kyungmin Park <kyungmin.park@samsung.com> */ 355 /* Maintainer: Kyungmin Park <kyungmin.park@samsung.com> */
357 .boot_params = 0x80000100, 356 .boot_params = 0x80000100,
358 .map_io = omap_apollon_map_io,
359 .reserve = omap_reserve, 357 .reserve = omap_reserve,
360 .init_irq = omap_apollon_init_irq, 358 .map_io = omap_apollon_map_io,
359 .init_early = omap_apollon_init_early,
360 .init_irq = omap_init_irq,
361 .init_machine = omap_apollon_init, 361 .init_machine = omap_apollon_init,
362 .timer = &omap_timer, 362 .timer = &omap_timer,
363MACHINE_END 363MACHINE_END
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c
index dac141610666..9e4de92a5798 100644
--- a/arch/arm/mach-omap2/board-cm-t35.c
+++ b/arch/arm/mach-omap2/board-cm-t35.c
@@ -683,7 +683,7 @@ static void __init cm_t35_init_i2c(void)
683static struct omap_board_config_kernel cm_t35_config[] __initdata = { 683static struct omap_board_config_kernel cm_t35_config[] __initdata = {
684}; 684};
685 685
686static void __init cm_t35_init_irq(void) 686static void __init cm_t35_init_early(void)
687{ 687{
688 omap_board_config = cm_t35_config; 688 omap_board_config = cm_t35_config;
689 omap_board_config_size = ARRAY_SIZE(cm_t35_config); 689 omap_board_config_size = ARRAY_SIZE(cm_t35_config);
@@ -691,7 +691,6 @@ static void __init cm_t35_init_irq(void)
691 omap2_init_common_infrastructure(); 691 omap2_init_common_infrastructure();
692 omap2_init_common_devices(mt46h32m32lf6_sdrc_params, 692 omap2_init_common_devices(mt46h32m32lf6_sdrc_params,
693 mt46h32m32lf6_sdrc_params); 693 mt46h32m32lf6_sdrc_params);
694 omap_init_irq();
695} 694}
696 695
697static struct omap_board_mux board_mux[] __initdata = { 696static struct omap_board_mux board_mux[] __initdata = {
@@ -815,9 +814,10 @@ static void __init cm_t35_init(void)
815 814
816MACHINE_START(CM_T35, "Compulab CM-T35") 815MACHINE_START(CM_T35, "Compulab CM-T35")
817 .boot_params = 0x80000100, 816 .boot_params = 0x80000100,
818 .map_io = omap3_map_io,
819 .reserve = omap_reserve, 817 .reserve = omap_reserve,
820 .init_irq = cm_t35_init_irq, 818 .map_io = omap3_map_io,
819 .init_early = cm_t35_init_early,
820 .init_irq = omap_init_irq,
821 .init_machine = cm_t35_init, 821 .init_machine = cm_t35_init,
822 .timer = &omap_timer, 822 .timer = &omap_timer,
823MACHINE_END 823MACHINE_END
diff --git a/arch/arm/mach-omap2/board-cm-t3517.c b/arch/arm/mach-omap2/board-cm-t3517.c
index 8f9a64d650ee..38bef6d004c9 100644
--- a/arch/arm/mach-omap2/board-cm-t3517.c
+++ b/arch/arm/mach-omap2/board-cm-t3517.c
@@ -254,14 +254,13 @@ static inline void cm_t3517_init_nand(void) {}
254static struct omap_board_config_kernel cm_t3517_config[] __initdata = { 254static struct omap_board_config_kernel cm_t3517_config[] __initdata = {
255}; 255};
256 256
257static void __init cm_t3517_init_irq(void) 257static void __init cm_t3517_init_early(void)
258{ 258{
259 omap_board_config = cm_t3517_config; 259 omap_board_config = cm_t3517_config;
260 omap_board_config_size = ARRAY_SIZE(cm_t3517_config); 260 omap_board_config_size = ARRAY_SIZE(cm_t3517_config);
261 261
262 omap2_init_common_infrastructure(); 262 omap2_init_common_infrastructure();
263 omap2_init_common_devices(NULL, NULL); 263 omap2_init_common_devices(NULL, NULL);
264 omap_init_irq();
265} 264}
266 265
267static struct omap_board_mux board_mux[] __initdata = { 266static struct omap_board_mux board_mux[] __initdata = {
@@ -303,9 +302,10 @@ static void __init cm_t3517_init(void)
303 302
304MACHINE_START(CM_T3517, "Compulab CM-T3517") 303MACHINE_START(CM_T3517, "Compulab CM-T3517")
305 .boot_params = 0x80000100, 304 .boot_params = 0x80000100,
306 .map_io = omap3_map_io,
307 .reserve = omap_reserve, 305 .reserve = omap_reserve,
308 .init_irq = cm_t3517_init_irq, 306 .map_io = omap3_map_io,
307 .init_early = cm_t3517_init_early,
308 .init_irq = omap_init_irq,
309 .init_machine = cm_t3517_init, 309 .init_machine = cm_t3517_init,
310 .timer = &omap_timer, 310 .timer = &omap_timer,
311MACHINE_END 311MACHINE_END
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c
index 9a2a31e011ce..af742887e834 100644
--- a/arch/arm/mach-omap2/board-devkit8000.c
+++ b/arch/arm/mach-omap2/board-devkit8000.c
@@ -456,11 +456,15 @@ static struct platform_device keys_gpio = {
456}; 456};
457 457
458 458
459static void __init devkit8000_init_irq(void) 459static void __init devkit8000_init_early(void)
460{ 460{
461 omap2_init_common_infrastructure(); 461 omap2_init_common_infrastructure();
462 omap2_init_common_devices(mt46h32m32lf6_sdrc_params, 462 omap2_init_common_devices(mt46h32m32lf6_sdrc_params,
463 mt46h32m32lf6_sdrc_params); 463 mt46h32m32lf6_sdrc_params);
464}
465
466static void __init devkit8000_init_irq(void)
467{
464 omap_init_irq(); 468 omap_init_irq();
465#ifdef CONFIG_OMAP_32K_TIMER 469#ifdef CONFIG_OMAP_32K_TIMER
466 omap2_gp_clockevent_set_gptimer(12); 470 omap2_gp_clockevent_set_gptimer(12);
@@ -813,8 +817,9 @@ static void __init devkit8000_init(void)
813 817
814MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000") 818MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000")
815 .boot_params = 0x80000100, 819 .boot_params = 0x80000100,
816 .map_io = omap3_map_io,
817 .reserve = omap_reserve, 820 .reserve = omap_reserve,
821 .map_io = omap3_map_io,
822 .init_early = devkit8000_init_early,
818 .init_irq = devkit8000_init_irq, 823 .init_irq = devkit8000_init_irq,
819 .init_machine = devkit8000_init, 824 .init_machine = devkit8000_init,
820 .timer = &omap_timer, 825 .timer = &omap_timer,
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 0e3d81e09f89..682da9251db6 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -33,13 +33,12 @@
33static struct omap_board_config_kernel generic_config[] = { 33static struct omap_board_config_kernel generic_config[] = {
34}; 34};
35 35
36static void __init omap_generic_init_irq(void) 36static void __init omap_generic_init_early(void)
37{ 37{
38 omap_board_config = generic_config; 38 omap_board_config = generic_config;
39 omap_board_config_size = ARRAY_SIZE(generic_config); 39 omap_board_config_size = ARRAY_SIZE(generic_config);
40 omap2_init_common_infrastructure(); 40 omap2_init_common_infrastructure();
41 omap2_init_common_devices(NULL, NULL); 41 omap2_init_common_devices(NULL, NULL);
42 omap_init_irq();
43} 42}
44 43
45static void __init omap_generic_init(void) 44static void __init omap_generic_init(void)
@@ -68,9 +67,10 @@ static void __init omap_generic_map_io(void)
68MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx") 67MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx")
69 /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */ 68 /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */
70 .boot_params = 0x80000100, 69 .boot_params = 0x80000100,
71 .map_io = omap_generic_map_io,
72 .reserve = omap_reserve, 70 .reserve = omap_reserve,
73 .init_irq = omap_generic_init_irq, 71 .map_io = omap_generic_map_io,
72 .init_early = omap_generic_init_early,
73 .init_irq = omap_init_irq,
74 .init_machine = omap_generic_init, 74 .init_machine = omap_generic_init,
75 .timer = &omap_timer, 75 .timer = &omap_timer,
76MACHINE_END 76MACHINE_END
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c
index 25cc9dad4b02..f6a3872f72fa 100644
--- a/arch/arm/mach-omap2/board-h4.c
+++ b/arch/arm/mach-omap2/board-h4.c
@@ -290,12 +290,16 @@ static struct omap_board_config_kernel h4_config[] __initdata = {
290 { OMAP_TAG_LCD, &h4_lcd_config }, 290 { OMAP_TAG_LCD, &h4_lcd_config },
291}; 291};
292 292
293static void __init omap_h4_init_irq(void) 293static void __init omap_h4_init_early(void)
294{ 294{
295 omap_board_config = h4_config; 295 omap_board_config = h4_config;
296 omap_board_config_size = ARRAY_SIZE(h4_config); 296 omap_board_config_size = ARRAY_SIZE(h4_config);
297 omap2_init_common_infrastructure(); 297 omap2_init_common_infrastructure();
298 omap2_init_common_devices(NULL, NULL); 298 omap2_init_common_devices(NULL, NULL);
299}
300
301static void __init omap_h4_init_irq(void)
302{
299 omap_init_irq(); 303 omap_init_irq();
300 h4_init_flash(); 304 h4_init_flash();
301} 305}
@@ -378,8 +382,9 @@ static void __init omap_h4_map_io(void)
378MACHINE_START(OMAP_H4, "OMAP2420 H4 board") 382MACHINE_START(OMAP_H4, "OMAP2420 H4 board")
379 /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */ 383 /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */
380 .boot_params = 0x80000100, 384 .boot_params = 0x80000100,
381 .map_io = omap_h4_map_io,
382 .reserve = omap_reserve, 385 .reserve = omap_reserve,
386 .map_io = omap_h4_map_io,
387 .init_early = omap_h4_init_early,
383 .init_irq = omap_h4_init_irq, 388 .init_irq = omap_h4_init_irq,
384 .init_machine = omap_h4_init, 389 .init_machine = omap_h4_init,
385 .timer = &omap_timer, 390 .timer = &omap_timer,
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index 3be85a1f55f4..dd0b1ac3b662 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -525,12 +525,11 @@ static struct platform_device *igep2_devices[] __initdata = {
525 &igep2_vwlan_device, 525 &igep2_vwlan_device,
526}; 526};
527 527
528static void __init igep2_init_irq(void) 528static void __init igep2_init_early(void)
529{ 529{
530 omap2_init_common_infrastructure(); 530 omap2_init_common_infrastructure();
531 omap2_init_common_devices(m65kxxxxam_sdrc_params, 531 omap2_init_common_devices(m65kxxxxam_sdrc_params,
532 m65kxxxxam_sdrc_params); 532 m65kxxxxam_sdrc_params);
533 omap_init_irq();
534} 533}
535 534
536static struct twl4030_codec_audio_data igep2_audio_data = { 535static struct twl4030_codec_audio_data igep2_audio_data = {
@@ -716,9 +715,10 @@ static void __init igep2_init(void)
716 715
717MACHINE_START(IGEP0020, "IGEP v2 board") 716MACHINE_START(IGEP0020, "IGEP v2 board")
718 .boot_params = 0x80000100, 717 .boot_params = 0x80000100,
719 .map_io = omap3_map_io,
720 .reserve = omap_reserve, 718 .reserve = omap_reserve,
721 .init_irq = igep2_init_irq, 719 .map_io = omap3_map_io,
720 .init_early = igep2_init_early,
721 .init_irq = omap_init_irq,
722 .init_machine = igep2_init, 722 .init_machine = igep2_init,
723 .timer = &omap_timer, 723 .timer = &omap_timer,
724MACHINE_END 724MACHINE_END
diff --git a/arch/arm/mach-omap2/board-igep0030.c b/arch/arm/mach-omap2/board-igep0030.c
index 4dc62a9b9cb2..d75028e48f5d 100644
--- a/arch/arm/mach-omap2/board-igep0030.c
+++ b/arch/arm/mach-omap2/board-igep0030.c
@@ -331,12 +331,11 @@ static struct platform_device *igep3_devices[] __initdata = {
331 &igep3_vwlan_device, 331 &igep3_vwlan_device,
332}; 332};
333 333
334static void __init igep3_init_irq(void) 334static void __init igep3_init_early(void)
335{ 335{
336 omap2_init_common_infrastructure(); 336 omap2_init_common_infrastructure();
337 omap2_init_common_devices(m65kxxxxam_sdrc_params, 337 omap2_init_common_devices(m65kxxxxam_sdrc_params,
338 m65kxxxxam_sdrc_params); 338 m65kxxxxam_sdrc_params);
339 omap_init_irq();
340} 339}
341 340
342static struct twl4030_platform_data igep3_twl4030_pdata = { 341static struct twl4030_platform_data igep3_twl4030_pdata = {
@@ -452,7 +451,8 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module")
452 .boot_params = 0x80000100, 451 .boot_params = 0x80000100,
453 .reserve = omap_reserve, 452 .reserve = omap_reserve,
454 .map_io = omap3_map_io, 453 .map_io = omap3_map_io,
455 .init_irq = igep3_init_irq, 454 .init_early = igep3_init_early,
455 .init_irq = omap_init_irq,
456 .init_machine = igep3_init, 456 .init_machine = igep3_init,
457 .timer = &omap_timer, 457 .timer = &omap_timer,
458MACHINE_END 458MACHINE_END
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
index e5dc74875f9d..d8eb2cb7cbc7 100644
--- a/arch/arm/mach-omap2/board-ldp.c
+++ b/arch/arm/mach-omap2/board-ldp.c
@@ -288,13 +288,12 @@ static struct omap_board_config_kernel ldp_config[] __initdata = {
288 { OMAP_TAG_LCD, &ldp_lcd_config }, 288 { OMAP_TAG_LCD, &ldp_lcd_config },
289}; 289};
290 290
291static void __init omap_ldp_init_irq(void) 291static void __init omap_ldp_init_early(void)
292{ 292{
293 omap_board_config = ldp_config; 293 omap_board_config = ldp_config;
294 omap_board_config_size = ARRAY_SIZE(ldp_config); 294 omap_board_config_size = ARRAY_SIZE(ldp_config);
295 omap2_init_common_infrastructure(); 295 omap2_init_common_infrastructure();
296 omap2_init_common_devices(NULL, NULL); 296 omap2_init_common_devices(NULL, NULL);
297 omap_init_irq();
298} 297}
299 298
300static struct twl4030_usb_data ldp_usb_data = { 299static struct twl4030_usb_data ldp_usb_data = {
@@ -443,9 +442,10 @@ static void __init omap_ldp_init(void)
443 442
444MACHINE_START(OMAP_LDP, "OMAP LDP board") 443MACHINE_START(OMAP_LDP, "OMAP LDP board")
445 .boot_params = 0x80000100, 444 .boot_params = 0x80000100,
446 .map_io = omap3_map_io,
447 .reserve = omap_reserve, 445 .reserve = omap_reserve,
448 .init_irq = omap_ldp_init_irq, 446 .map_io = omap3_map_io,
447 .init_early = omap_ldp_init_early,
448 .init_irq = omap_init_irq,
449 .init_machine = omap_ldp_init, 449 .init_machine = omap_ldp_init,
450 .timer = &omap_timer, 450 .timer = &omap_timer,
451MACHINE_END 451MACHINE_END
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
index f396756872b7..b36cbd21e2d0 100644
--- a/arch/arm/mach-omap2/board-n8x0.c
+++ b/arch/arm/mach-omap2/board-n8x0.c
@@ -628,11 +628,10 @@ static void __init n8x0_map_io(void)
628 omap242x_map_common_io(); 628 omap242x_map_common_io();
629} 629}
630 630
631static void __init n8x0_init_irq(void) 631static void __init n8x0_init_early(void)
632{ 632{
633 omap2_init_common_infrastructure(); 633 omap2_init_common_infrastructure();
634 omap2_init_common_devices(NULL, NULL); 634 omap2_init_common_devices(NULL, NULL);
635 omap_init_irq();
636} 635}
637 636
638#ifdef CONFIG_OMAP_MUX 637#ifdef CONFIG_OMAP_MUX
@@ -703,27 +702,30 @@ static void __init n8x0_init_machine(void)
703 702
704MACHINE_START(NOKIA_N800, "Nokia N800") 703MACHINE_START(NOKIA_N800, "Nokia N800")
705 .boot_params = 0x80000100, 704 .boot_params = 0x80000100,
706 .map_io = n8x0_map_io,
707 .reserve = omap_reserve, 705 .reserve = omap_reserve,
708 .init_irq = n8x0_init_irq, 706 .map_io = n8x0_map_io,
707 .init_early = n8x0_init_early,
708 .init_irq = omap_init_irq,
709 .init_machine = n8x0_init_machine, 709 .init_machine = n8x0_init_machine,
710 .timer = &omap_timer, 710 .timer = &omap_timer,
711MACHINE_END 711MACHINE_END
712 712
713MACHINE_START(NOKIA_N810, "Nokia N810") 713MACHINE_START(NOKIA_N810, "Nokia N810")
714 .boot_params = 0x80000100, 714 .boot_params = 0x80000100,
715 .map_io = n8x0_map_io,
716 .reserve = omap_reserve, 715 .reserve = omap_reserve,
717 .init_irq = n8x0_init_irq, 716 .map_io = n8x0_map_io,
717 .init_early = n8x0_init_early,
718 .init_irq = omap_init_irq,
718 .init_machine = n8x0_init_machine, 719 .init_machine = n8x0_init_machine,
719 .timer = &omap_timer, 720 .timer = &omap_timer,
720MACHINE_END 721MACHINE_END
721 722
722MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX") 723MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
723 .boot_params = 0x80000100, 724 .boot_params = 0x80000100,
724 .map_io = n8x0_map_io,
725 .reserve = omap_reserve, 725 .reserve = omap_reserve,
726 .init_irq = n8x0_init_irq, 726 .map_io = n8x0_map_io,
727 .init_early = n8x0_init_early,
728 .init_irq = omap_init_irq,
727 .init_machine = n8x0_init_machine, 729 .init_machine = n8x0_init_machine,
728 .timer = &omap_timer, 730 .timer = &omap_timer,
729MACHINE_END 731MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 46d814ab5656..19bcd004d604 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -536,11 +536,15 @@ static struct platform_device keys_gpio = {
536 }, 536 },
537}; 537};
538 538
539static void __init omap3_beagle_init_irq(void) 539static void __init omap3_beagle_init_early(void)
540{ 540{
541 omap2_init_common_infrastructure(); 541 omap2_init_common_infrastructure();
542 omap2_init_common_devices(mt46h32m32lf6_sdrc_params, 542 omap2_init_common_devices(mt46h32m32lf6_sdrc_params,
543 mt46h32m32lf6_sdrc_params); 543 mt46h32m32lf6_sdrc_params);
544}
545
546static void __init omap3_beagle_init_irq(void)
547{
544 omap_init_irq(); 548 omap_init_irq();
545#ifdef CONFIG_OMAP_32K_TIMER 549#ifdef CONFIG_OMAP_32K_TIMER
546 omap2_gp_clockevent_set_gptimer(12); 550 omap2_gp_clockevent_set_gptimer(12);
@@ -638,8 +642,9 @@ static void __init omap3_beagle_init(void)
638MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board") 642MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
639 /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */ 643 /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
640 .boot_params = 0x80000100, 644 .boot_params = 0x80000100,
641 .map_io = omap3_map_io,
642 .reserve = omap_reserve, 645 .reserve = omap_reserve,
646 .map_io = omap3_map_io,
647 .init_early = omap3_beagle_init_early,
643 .init_irq = omap3_beagle_init_irq, 648 .init_irq = omap3_beagle_init_irq,
644 .init_machine = omap3_beagle_init, 649 .init_machine = omap3_beagle_init,
645 .timer = &omap_timer, 650 .timer = &omap_timer,
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index 323c3809ce39..c2a0fca4aa53 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -625,13 +625,12 @@ static struct spi_board_info omap3evm_spi_board_info[] = {
625static struct omap_board_config_kernel omap3_evm_config[] __initdata = { 625static struct omap_board_config_kernel omap3_evm_config[] __initdata = {
626}; 626};
627 627
628static void __init omap3_evm_init_irq(void) 628static void __init omap3_evm_init_early(void)
629{ 629{
630 omap_board_config = omap3_evm_config; 630 omap_board_config = omap3_evm_config;
631 omap_board_config_size = ARRAY_SIZE(omap3_evm_config); 631 omap_board_config_size = ARRAY_SIZE(omap3_evm_config);
632 omap2_init_common_infrastructure(); 632 omap2_init_common_infrastructure();
633 omap2_init_common_devices(mt46h32m32lf6_sdrc_params, NULL); 633 omap2_init_common_devices(mt46h32m32lf6_sdrc_params, NULL);
634 omap_init_irq();
635} 634}
636 635
637static struct platform_device *omap3_evm_devices[] __initdata = { 636static struct platform_device *omap3_evm_devices[] __initdata = {
@@ -720,9 +719,10 @@ static void __init omap3_evm_init(void)
720MACHINE_START(OMAP3EVM, "OMAP3 EVM") 719MACHINE_START(OMAP3EVM, "OMAP3 EVM")
721 /* Maintainer: Syed Mohammed Khasim - Texas Instruments */ 720 /* Maintainer: Syed Mohammed Khasim - Texas Instruments */
722 .boot_params = 0x80000100, 721 .boot_params = 0x80000100,
723 .map_io = omap3_map_io,
724 .reserve = omap_reserve, 722 .reserve = omap_reserve,
725 .init_irq = omap3_evm_init_irq, 723 .map_io = omap3_map_io,
724 .init_early = omap3_evm_init_early,
725 .init_irq = omap_init_irq,
726 .init_machine = omap3_evm_init, 726 .init_machine = omap3_evm_init,
727 .timer = &omap_timer, 727 .timer = &omap_timer,
728MACHINE_END 728MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
index 15e4b08e99ba..b726943d7c93 100644
--- a/arch/arm/mach-omap2/board-omap3logic.c
+++ b/arch/arm/mach-omap2/board-omap3logic.c
@@ -195,11 +195,10 @@ static inline void __init board_smsc911x_init(void)
195 gpmc_smsc911x_init(&board_smsc911x_data); 195 gpmc_smsc911x_init(&board_smsc911x_data);
196} 196}
197 197
198static void __init omap3logic_init_irq(void) 198static void __init omap3logic_init_early(void)
199{ 199{
200 omap2_init_common_infrastructure(); 200 omap2_init_common_infrastructure();
201 omap2_init_common_devices(NULL, NULL); 201 omap2_init_common_devices(NULL, NULL);
202 omap_init_irq();
203} 202}
204 203
205#ifdef CONFIG_OMAP_MUX 204#ifdef CONFIG_OMAP_MUX
@@ -225,7 +224,8 @@ static void __init omap3logic_init(void)
225MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board") 224MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")
226 .boot_params = 0x80000100, 225 .boot_params = 0x80000100,
227 .map_io = omap3_map_io, 226 .map_io = omap3_map_io,
228 .init_irq = omap3logic_init_irq, 227 .init_early = omap3logic_init_early,
228 .init_irq = omap_init_irq,
229 .init_machine = omap3logic_init, 229 .init_machine = omap3logic_init,
230 .timer = &omap_timer, 230 .timer = &omap_timer,
231MACHINE_END 231MACHINE_END
@@ -233,7 +233,8 @@ MACHINE_END
233MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board") 233MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
234 .boot_params = 0x80000100, 234 .boot_params = 0x80000100,
235 .map_io = omap3_map_io, 235 .map_io = omap3_map_io,
236 .init_irq = omap3logic_init_irq, 236 .init_early = omap3logic_init_early,
237 .init_irq = omap_init_irq,
237 .init_machine = omap3logic_init, 238 .init_machine = omap3logic_init,
238 .timer = &omap_timer, 239 .timer = &omap_timer,
239MACHINE_END 240MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
index 0b34beded11f..b91f74ce3a9f 100644
--- a/arch/arm/mach-omap2/board-omap3pandora.c
+++ b/arch/arm/mach-omap2/board-omap3pandora.c
@@ -634,12 +634,11 @@ static struct spi_board_info omap3pandora_spi_board_info[] __initdata = {
634 } 634 }
635}; 635};
636 636
637static void __init omap3pandora_init_irq(void) 637static void __init omap3pandora_init_early(void)
638{ 638{
639 omap2_init_common_infrastructure(); 639 omap2_init_common_infrastructure();
640 omap2_init_common_devices(mt46h32m32lf6_sdrc_params, 640 omap2_init_common_devices(mt46h32m32lf6_sdrc_params,
641 mt46h32m32lf6_sdrc_params); 641 mt46h32m32lf6_sdrc_params);
642 omap_init_irq();
643} 642}
644 643
645static void __init pandora_wl1251_init(void) 644static void __init pandora_wl1251_init(void)
@@ -727,9 +726,10 @@ static void __init omap3pandora_init(void)
727 726
728MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console") 727MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")
729 .boot_params = 0x80000100, 728 .boot_params = 0x80000100,
730 .map_io = omap3_map_io,
731 .reserve = omap_reserve, 729 .reserve = omap_reserve,
732 .init_irq = omap3pandora_init_irq, 730 .map_io = omap3_map_io,
731 .init_early = omap3pandora_init_early,
732 .init_irq = omap_init_irq,
733 .init_machine = omap3pandora_init, 733 .init_machine = omap3pandora_init,
734 .timer = &omap_timer, 734 .timer = &omap_timer,
735MACHINE_END 735MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c
index 2a2dad447e86..5d1ccef69164 100644
--- a/arch/arm/mach-omap2/board-omap3stalker.c
+++ b/arch/arm/mach-omap2/board-omap3stalker.c
@@ -591,12 +591,16 @@ static struct spi_board_info omap3stalker_spi_board_info[] = {
591static struct omap_board_config_kernel omap3_stalker_config[] __initdata = { 591static struct omap_board_config_kernel omap3_stalker_config[] __initdata = {
592}; 592};
593 593
594static void __init omap3_stalker_init_irq(void) 594static void __init omap3_stalker_init_early(void)
595{ 595{
596 omap_board_config = omap3_stalker_config; 596 omap_board_config = omap3_stalker_config;
597 omap_board_config_size = ARRAY_SIZE(omap3_stalker_config); 597 omap_board_config_size = ARRAY_SIZE(omap3_stalker_config);
598 omap2_init_common_infrastructure(); 598 omap2_init_common_infrastructure();
599 omap2_init_common_devices(mt46h32m32lf6_sdrc_params, NULL); 599 omap2_init_common_devices(mt46h32m32lf6_sdrc_params, NULL);
600}
601
602static void __init omap3_stalker_init_irq(void)
603{
600 omap_init_irq(); 604 omap_init_irq();
601#ifdef CONFIG_OMAP_32K_TIMER 605#ifdef CONFIG_OMAP_32K_TIMER
602 omap2_gp_clockevent_set_gptimer(12); 606 omap2_gp_clockevent_set_gptimer(12);
@@ -666,6 +670,7 @@ MACHINE_START(SBC3530, "OMAP3 STALKER")
666 /* Maintainer: Jason Lam -lzg@ema-tech.com */ 670 /* Maintainer: Jason Lam -lzg@ema-tech.com */
667 .boot_params = 0x80000100, 671 .boot_params = 0x80000100,
668 .map_io = omap3_map_io, 672 .map_io = omap3_map_io,
673 .init_early = omap3_stalker_init_early,
669 .init_irq = omap3_stalker_init_irq, 674 .init_irq = omap3_stalker_init_irq,
670 .init_machine = omap3_stalker_init, 675 .init_machine = omap3_stalker_init,
671 .timer = &omap_timer, 676 .timer = &omap_timer,
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
index db1f74fe6c4f..6a60f79dcccb 100644
--- a/arch/arm/mach-omap2/board-omap3touchbook.c
+++ b/arch/arm/mach-omap2/board-omap3touchbook.c
@@ -415,7 +415,7 @@ static struct omap_board_mux board_mux[] __initdata = {
415}; 415};
416#endif 416#endif
417 417
418static void __init omap3_touchbook_init_irq(void) 418static void __init omap3_touchbook_init_early(void)
419{ 419{
420 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); 420 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
421 omap_board_config = omap3_touchbook_config; 421 omap_board_config = omap3_touchbook_config;
@@ -423,6 +423,10 @@ static void __init omap3_touchbook_init_irq(void)
423 omap2_init_common_infrastructure(); 423 omap2_init_common_infrastructure();
424 omap2_init_common_devices(mt46h32m32lf6_sdrc_params, 424 omap2_init_common_devices(mt46h32m32lf6_sdrc_params,
425 mt46h32m32lf6_sdrc_params); 425 mt46h32m32lf6_sdrc_params);
426}
427
428static void __init omap3_touchbook_init_irq(void)
429{
426 omap_init_irq(); 430 omap_init_irq();
427#ifdef CONFIG_OMAP_32K_TIMER 431#ifdef CONFIG_OMAP_32K_TIMER
428 omap2_gp_clockevent_set_gptimer(12); 432 omap2_gp_clockevent_set_gptimer(12);
@@ -538,8 +542,9 @@ static void __init omap3_touchbook_init(void)
538MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board") 542MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")
539 /* Maintainer: Gregoire Gentil - http://www.alwaysinnovating.com */ 543 /* Maintainer: Gregoire Gentil - http://www.alwaysinnovating.com */
540 .boot_params = 0x80000100, 544 .boot_params = 0x80000100,
541 .map_io = omap3_map_io,
542 .reserve = omap_reserve, 545 .reserve = omap_reserve,
546 .map_io = omap3_map_io,
547 .init_early = omap3_touchbook_init_early,
543 .init_irq = omap3_touchbook_init_irq, 548 .init_irq = omap3_touchbook_init_irq,
544 .init_machine = omap3_touchbook_init, 549 .init_machine = omap3_touchbook_init,
545 .timer = &omap_timer, 550 .timer = &omap_timer,
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index e944025d5ef8..fca5b9e80c18 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -76,11 +76,10 @@ static struct platform_device *panda_devices[] __initdata = {
76 &leds_gpio, 76 &leds_gpio,
77}; 77};
78 78
79static void __init omap4_panda_init_irq(void) 79static void __init omap4_panda_init_early(void)
80{ 80{
81 omap2_init_common_infrastructure(); 81 omap2_init_common_infrastructure();
82 omap2_init_common_devices(NULL, NULL); 82 omap2_init_common_devices(NULL, NULL);
83 gic_init_irq();
84} 83}
85 84
86static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 85static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
@@ -424,7 +423,8 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
424 .boot_params = 0x80000100, 423 .boot_params = 0x80000100,
425 .reserve = omap_reserve, 424 .reserve = omap_reserve,
426 .map_io = omap4_panda_map_io, 425 .map_io = omap4_panda_map_io,
427 .init_irq = omap4_panda_init_irq, 426 .init_early = omap4_panda_init_early,
427 .init_irq = gic_init_irq,
428 .init_machine = omap4_panda_init, 428 .init_machine = omap4_panda_init,
429 .timer = &omap_timer, 429 .timer = &omap_timer,
430MACHINE_END 430MACHINE_END
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index cb26e5d8268d..a33ec0edec13 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -409,14 +409,13 @@ static struct omap_board_config_kernel overo_config[] __initdata = {
409 { OMAP_TAG_LCD, &overo_lcd_config }, 409 { OMAP_TAG_LCD, &overo_lcd_config },
410}; 410};
411 411
412static void __init overo_init_irq(void) 412static void __init overo_init_early(void)
413{ 413{
414 omap_board_config = overo_config; 414 omap_board_config = overo_config;
415 omap_board_config_size = ARRAY_SIZE(overo_config); 415 omap_board_config_size = ARRAY_SIZE(overo_config);
416 omap2_init_common_infrastructure(); 416 omap2_init_common_infrastructure();
417 omap2_init_common_devices(mt46h32m32lf6_sdrc_params, 417 omap2_init_common_devices(mt46h32m32lf6_sdrc_params,
418 mt46h32m32lf6_sdrc_params); 418 mt46h32m32lf6_sdrc_params);
419 omap_init_irq();
420} 419}
421 420
422static struct platform_device *overo_devices[] __initdata = { 421static struct platform_device *overo_devices[] __initdata = {
@@ -501,9 +500,10 @@ static void __init overo_init(void)
501 500
502MACHINE_START(OVERO, "Gumstix Overo") 501MACHINE_START(OVERO, "Gumstix Overo")
503 .boot_params = 0x80000100, 502 .boot_params = 0x80000100,
504 .map_io = omap3_map_io,
505 .reserve = omap_reserve, 503 .reserve = omap_reserve,
506 .init_irq = overo_init_irq, 504 .map_io = omap3_map_io,
505 .init_early = overo_init_early,
506 .init_irq = omap_init_irq,
507 .init_machine = overo_init, 507 .init_machine = overo_init,
508 .timer = &omap_timer, 508 .timer = &omap_timer,
509MACHINE_END 509MACHINE_END
diff --git a/arch/arm/mach-omap2/board-rm680.c b/arch/arm/mach-omap2/board-rm680.c
index 39a71bb8a308..bdebcb7328e6 100644
--- a/arch/arm/mach-omap2/board-rm680.c
+++ b/arch/arm/mach-omap2/board-rm680.c
@@ -138,14 +138,13 @@ static void __init rm680_peripherals_init(void)
138 omap2_hsmmc_init(mmc); 138 omap2_hsmmc_init(mmc);
139} 139}
140 140
141static void __init rm680_init_irq(void) 141static void __init rm680_init_early(void)
142{ 142{
143 struct omap_sdrc_params *sdrc_params; 143 struct omap_sdrc_params *sdrc_params;
144 144
145 omap2_init_common_infrastructure(); 145 omap2_init_common_infrastructure();
146 sdrc_params = nokia_get_sdram_timings(); 146 sdrc_params = nokia_get_sdram_timings();
147 omap2_init_common_devices(sdrc_params, sdrc_params); 147 omap2_init_common_devices(sdrc_params, sdrc_params);
148 omap_init_irq();
149} 148}
150 149
151#ifdef CONFIG_OMAP_MUX 150#ifdef CONFIG_OMAP_MUX
@@ -176,9 +175,10 @@ static void __init rm680_map_io(void)
176 175
177MACHINE_START(NOKIA_RM680, "Nokia RM-680 board") 176MACHINE_START(NOKIA_RM680, "Nokia RM-680 board")
178 .boot_params = 0x80000100, 177 .boot_params = 0x80000100,
179 .map_io = rm680_map_io,
180 .reserve = omap_reserve, 178 .reserve = omap_reserve,
181 .init_irq = rm680_init_irq, 179 .map_io = rm680_map_io,
180 .init_early = rm680_init_early,
181 .init_irq = omap_init_irq,
182 .init_machine = rm680_init, 182 .init_machine = rm680_init,
183 .timer = &omap_timer, 183 .timer = &omap_timer,
184MACHINE_END 184MACHINE_END
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index f53fc551c58f..3cf72fe6d75b 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -98,7 +98,7 @@ static struct omap_board_config_kernel rx51_config[] = {
98 { OMAP_TAG_LCD, &rx51_lcd_config }, 98 { OMAP_TAG_LCD, &rx51_lcd_config },
99}; 99};
100 100
101static void __init rx51_init_irq(void) 101static void __init rx51_init_early(void)
102{ 102{
103 struct omap_sdrc_params *sdrc_params; 103 struct omap_sdrc_params *sdrc_params;
104 104
@@ -108,7 +108,6 @@ static void __init rx51_init_irq(void)
108 omap2_init_common_infrastructure(); 108 omap2_init_common_infrastructure();
109 sdrc_params = nokia_get_sdram_timings(); 109 sdrc_params = nokia_get_sdram_timings();
110 omap2_init_common_devices(sdrc_params, sdrc_params); 110 omap2_init_common_devices(sdrc_params, sdrc_params);
111 omap_init_irq();
112} 111}
113 112
114extern void __init rx51_peripherals_init(void); 113extern void __init rx51_peripherals_init(void);
@@ -149,9 +148,10 @@ static void __init rx51_map_io(void)
149MACHINE_START(NOKIA_RX51, "Nokia RX-51 board") 148MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
150 /* Maintainer: Lauri Leukkunen <lauri.leukkunen@nokia.com> */ 149 /* Maintainer: Lauri Leukkunen <lauri.leukkunen@nokia.com> */
151 .boot_params = 0x80000100, 150 .boot_params = 0x80000100,
152 .map_io = rx51_map_io,
153 .reserve = omap_reserve, 151 .reserve = omap_reserve,
154 .init_irq = rx51_init_irq, 152 .map_io = rx51_map_io,
153 .init_early = rx51_init_early,
154 .init_irq = omap_init_irq,
155 .init_machine = rx51_init, 155 .init_machine = rx51_init,
156 .timer = &omap_timer, 156 .timer = &omap_timer,
157MACHINE_END 157MACHINE_END
diff --git a/arch/arm/mach-omap2/board-ti8168evm.c b/arch/arm/mach-omap2/board-ti8168evm.c
new file mode 100644
index 000000000000..f2b097190e07
--- /dev/null
+++ b/arch/arm/mach-omap2/board-ti8168evm.c
@@ -0,0 +1,62 @@
1/*
2 * Code for TI8168 EVM.
3 *
4 * Copyright (C) 2010 Texas Instruments, Inc. - http://www.ti.com/
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation version 2.
9 *
10 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
11 * kind, whether express or implied; without even the implied warranty
12 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15#include <linux/kernel.h>
16#include <linux/init.h>
17
18#include <mach/hardware.h>
19#include <asm/mach-types.h>
20#include <asm/mach/arch.h>
21#include <asm/mach/map.h>
22
23#include <plat/irqs.h>
24#include <plat/board.h>
25#include <plat/common.h>
26
27static struct omap_board_config_kernel ti8168_evm_config[] __initdata = {
28};
29
30static void __init ti8168_init_early(void)
31{
32 omap_board_config = ti8168_evm_config;
33 omap_board_config_size = ARRAY_SIZE(ti8168_evm_config);
34 omap2_init_common_infrastructure();
35 omap2_init_common_devices(NULL, NULL);
36}
37
38static void __init ti8168_evm_init_irq(void)
39{
40 omap_init_irq();
41}
42
43static void __init ti8168_evm_init(void)
44{
45 omap_serial_init();
46}
47
48static void __init ti8168_evm_map_io(void)
49{
50 omap2_set_globals_ti816x();
51 omapti816x_map_common_io();
52}
53
54MACHINE_START(TI8168EVM, "ti8168evm")
55 /* Maintainer: Texas Instruments */
56 .boot_params = 0x80000100,
57 .map_io = ti8168_evm_map_io,
58 .init_early = ti8168_init_early,
59 .init_irq = ti8168_evm_init_irq,
60 .timer = &omap_timer,
61 .init_machine = ti8168_evm_init,
62MACHINE_END
diff --git a/arch/arm/mach-omap2/board-zoom.c b/arch/arm/mach-omap2/board-zoom.c
index e26754c24ee8..85d4170f30ab 100644
--- a/arch/arm/mach-omap2/board-zoom.c
+++ b/arch/arm/mach-omap2/board-zoom.c
@@ -33,7 +33,7 @@
33 33
34#define ZOOM3_EHCI_RESET_GPIO 64 34#define ZOOM3_EHCI_RESET_GPIO 64
35 35
36static void __init omap_zoom_init_irq(void) 36static void __init omap_zoom_init_early(void)
37{ 37{
38 omap2_init_common_infrastructure(); 38 omap2_init_common_infrastructure();
39 if (machine_is_omap_zoom2()) 39 if (machine_is_omap_zoom2())
@@ -42,8 +42,6 @@ static void __init omap_zoom_init_irq(void)
42 else if (machine_is_omap_zoom3()) 42 else if (machine_is_omap_zoom3())
43 omap2_init_common_devices(h8mbx00u0mer0em_sdrc_params, 43 omap2_init_common_devices(h8mbx00u0mer0em_sdrc_params,
44 h8mbx00u0mer0em_sdrc_params); 44 h8mbx00u0mer0em_sdrc_params);
45
46 omap_init_irq();
47} 45}
48 46
49#ifdef CONFIG_OMAP_MUX 47#ifdef CONFIG_OMAP_MUX
@@ -135,18 +133,20 @@ static void __init omap_zoom_init(void)
135 133
136MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board") 134MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
137 .boot_params = 0x80000100, 135 .boot_params = 0x80000100,
138 .map_io = omap3_map_io,
139 .reserve = omap_reserve, 136 .reserve = omap_reserve,
140 .init_irq = omap_zoom_init_irq, 137 .map_io = omap3_map_io,
138 .init_early = omap_zoom_init_early,
139 .init_irq = omap_init_irq,
141 .init_machine = omap_zoom_init, 140 .init_machine = omap_zoom_init,
142 .timer = &omap_timer, 141 .timer = &omap_timer,
143MACHINE_END 142MACHINE_END
144 143
145MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board") 144MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
146 .boot_params = 0x80000100, 145 .boot_params = 0x80000100,
147 .map_io = omap3_map_io,
148 .reserve = omap_reserve, 146 .reserve = omap_reserve,
149 .init_irq = omap_zoom_init_irq, 147 .map_io = omap3_map_io,
148 .init_early = omap_zoom_init_early,
149 .init_irq = omap_init_irq,
150 .init_machine = omap_zoom_init, 150 .init_machine = omap_zoom_init,
151 .timer = &omap_timer, 151 .timer = &omap_timer,
152MACHINE_END 152MACHINE_END
diff --git a/arch/arm/mach-omap2/clock2xxx.h b/arch/arm/mach-omap2/clock2xxx.h
index 6a658b890c17..cc5c8d422c5b 100644
--- a/arch/arm/mach-omap2/clock2xxx.h
+++ b/arch/arm/mach-omap2/clock2xxx.h
@@ -20,13 +20,13 @@ u32 omap2xxx_get_apll_clkin(void);
20u32 omap2xxx_get_sysclkdiv(void); 20u32 omap2xxx_get_sysclkdiv(void);
21void omap2xxx_clk_prepare_for_reboot(void); 21void omap2xxx_clk_prepare_for_reboot(void);
22 22
23#ifdef CONFIG_ARCH_OMAP2420 23#ifdef CONFIG_SOC_OMAP2420
24int omap2420_clk_init(void); 24int omap2420_clk_init(void);
25#else 25#else
26#define omap2420_clk_init() 0 26#define omap2420_clk_init() 0
27#endif 27#endif
28 28
29#ifdef CONFIG_ARCH_OMAP2430 29#ifdef CONFIG_SOC_OMAP2430
30int omap2430_clk_init(void); 30int omap2430_clk_init(void);
31#else 31#else
32#define omap2430_clk_init() 0 32#define omap2430_clk_init() 0
diff --git a/arch/arm/mach-omap2/clock3xxx_data.c b/arch/arm/mach-omap2/clock3xxx_data.c
index 403a4a1d3f9c..f14d986f0b5d 100644
--- a/arch/arm/mach-omap2/clock3xxx_data.c
+++ b/arch/arm/mach-omap2/clock3xxx_data.c
@@ -3471,6 +3471,9 @@ int __init omap3xxx_clk_init(void)
3471 } else if (cpu_is_omap3630()) { 3471 } else if (cpu_is_omap3630()) {
3472 cpu_mask = (RATE_IN_34XX | RATE_IN_36XX); 3472 cpu_mask = (RATE_IN_34XX | RATE_IN_36XX);
3473 cpu_clkflg = CK_36XX; 3473 cpu_clkflg = CK_36XX;
3474 } else if (cpu_is_ti816x()) {
3475 cpu_mask = RATE_IN_TI816X;
3476 cpu_clkflg = CK_TI816X;
3474 } else if (cpu_is_omap34xx()) { 3477 } else if (cpu_is_omap34xx()) {
3475 if (omap_rev() == OMAP3430_REV_ES1_0) { 3478 if (omap_rev() == OMAP3430_REV_ES1_0) {
3476 cpu_mask = RATE_IN_3430ES1; 3479 cpu_mask = RATE_IN_3430ES1;
@@ -3550,7 +3553,7 @@ int __init omap3xxx_clk_init(void)
3550 /* 3553 /*
3551 * Lock DPLL5 and put it in autoidle. 3554 * Lock DPLL5 and put it in autoidle.
3552 */ 3555 */
3553 if (omap_rev() >= OMAP3430_REV_ES2_0) 3556 if (!cpu_is_ti816x() && (omap_rev() >= OMAP3430_REV_ES2_0))
3554 omap3_clk_lock_dpll5(); 3557 omap3_clk_lock_dpll5();
3555 3558
3556 /* Avoid sleeping during omap3_core_dpll_m2_set_rate() */ 3559 /* Avoid sleeping during omap3_core_dpll_m2_set_rate() */
diff --git a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
index e4a7133ea3b3..e6f0d18d5e8d 100644
--- a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
+++ b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
@@ -171,7 +171,7 @@ static struct clkdm_dep core_24xx_wkdeps[] = {
171 171
172/* 2430-specific possible wakeup dependencies */ 172/* 2430-specific possible wakeup dependencies */
173 173
174#ifdef CONFIG_ARCH_OMAP2430 174#ifdef CONFIG_SOC_OMAP2430
175 175
176/* 2430 PM_WKDEP_MDM: CORE, MPU, WKUP */ 176/* 2430 PM_WKDEP_MDM: CORE, MPU, WKUP */
177static struct clkdm_dep mdm_2430_wkdeps[] = { 177static struct clkdm_dep mdm_2430_wkdeps[] = {
@@ -194,7 +194,7 @@ static struct clkdm_dep mdm_2430_wkdeps[] = {
194 { NULL }, 194 { NULL },
195}; 195};
196 196
197#endif /* CONFIG_ARCH_OMAP2430 */ 197#endif /* CONFIG_SOC_OMAP2430 */
198 198
199 199
200/* OMAP3-specific possible dependencies */ 200/* OMAP3-specific possible dependencies */
@@ -450,7 +450,7 @@ static struct clockdomain cm_clkdm = {
450 * 2420-only clockdomains 450 * 2420-only clockdomains
451 */ 451 */
452 452
453#if defined(CONFIG_ARCH_OMAP2420) 453#if defined(CONFIG_SOC_OMAP2420)
454 454
455static struct clockdomain mpu_2420_clkdm = { 455static struct clockdomain mpu_2420_clkdm = {
456 .name = "mpu_clkdm", 456 .name = "mpu_clkdm",
@@ -514,14 +514,14 @@ static struct clockdomain dss_2420_clkdm = {
514 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), 514 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
515}; 515};
516 516
517#endif /* CONFIG_ARCH_OMAP2420 */ 517#endif /* CONFIG_SOC_OMAP2420 */
518 518
519 519
520/* 520/*
521 * 2430-only clockdomains 521 * 2430-only clockdomains
522 */ 522 */
523 523
524#if defined(CONFIG_ARCH_OMAP2430) 524#if defined(CONFIG_SOC_OMAP2430)
525 525
526static struct clockdomain mpu_2430_clkdm = { 526static struct clockdomain mpu_2430_clkdm = {
527 .name = "mpu_clkdm", 527 .name = "mpu_clkdm",
@@ -600,7 +600,7 @@ static struct clockdomain dss_2430_clkdm = {
600 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), 600 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
601}; 601};
602 602
603#endif /* CONFIG_ARCH_OMAP2430 */ 603#endif /* CONFIG_SOC_OMAP2430 */
604 604
605 605
606/* 606/*
@@ -811,7 +811,7 @@ static struct clockdomain *clockdomains_omap2[] __initdata = {
811 &cm_clkdm, 811 &cm_clkdm,
812 &prm_clkdm, 812 &prm_clkdm,
813 813
814#ifdef CONFIG_ARCH_OMAP2420 814#ifdef CONFIG_SOC_OMAP2420
815 &mpu_2420_clkdm, 815 &mpu_2420_clkdm,
816 &iva1_2420_clkdm, 816 &iva1_2420_clkdm,
817 &dsp_2420_clkdm, 817 &dsp_2420_clkdm,
@@ -821,7 +821,7 @@ static struct clockdomain *clockdomains_omap2[] __initdata = {
821 &dss_2420_clkdm, 821 &dss_2420_clkdm,
822#endif 822#endif
823 823
824#ifdef CONFIG_ARCH_OMAP2430 824#ifdef CONFIG_SOC_OMAP2430
825 &mpu_2430_clkdm, 825 &mpu_2430_clkdm,
826 &mdm_clkdm, 826 &mdm_clkdm,
827 &dsp_2430_clkdm, 827 &dsp_2430_clkdm,
diff --git a/arch/arm/mach-omap2/common.c b/arch/arm/mach-omap2/common.c
index 778929f7e92d..48de4513de49 100644
--- a/arch/arm/mach-omap2/common.c
+++ b/arch/arm/mach-omap2/common.c
@@ -40,7 +40,7 @@ static void __init __omap2_set_globals(struct omap_globals *omap2_globals)
40 40
41#endif 41#endif
42 42
43#if defined(CONFIG_ARCH_OMAP2420) 43#if defined(CONFIG_SOC_OMAP2420)
44 44
45static struct omap_globals omap242x_globals = { 45static struct omap_globals omap242x_globals = {
46 .class = OMAP242X_CLASS, 46 .class = OMAP242X_CLASS,
@@ -61,7 +61,7 @@ void __init omap2_set_globals_242x(void)
61} 61}
62#endif 62#endif
63 63
64#if defined(CONFIG_ARCH_OMAP2430) 64#if defined(CONFIG_SOC_OMAP2430)
65 65
66static struct omap_globals omap243x_globals = { 66static struct omap_globals omap243x_globals = {
67 .class = OMAP243X_CLASS, 67 .class = OMAP243X_CLASS,
@@ -108,6 +108,27 @@ void __init omap3_map_io(void)
108 omap2_set_globals_3xxx(); 108 omap2_set_globals_3xxx();
109 omap34xx_map_common_io(); 109 omap34xx_map_common_io();
110} 110}
111
112/*
113 * Adjust TAP register base such that omap3_check_revision accesses the correct
114 * TI816X register for checking device ID (it adds 0x204 to tap base while
115 * TI816X DEVICE ID register is at offset 0x600 from control base).
116 */
117#define TI816X_TAP_BASE (TI816X_CTRL_BASE + \
118 TI816X_CONTROL_DEVICE_ID - 0x204)
119
120static struct omap_globals ti816x_globals = {
121 .class = OMAP343X_CLASS,
122 .tap = OMAP2_L4_IO_ADDRESS(TI816X_TAP_BASE),
123 .ctrl = TI816X_CTRL_BASE,
124 .prm = TI816X_PRCM_BASE,
125 .cm = TI816X_PRCM_BASE,
126};
127
128void __init omap2_set_globals_ti816x(void)
129{
130 __omap2_set_globals(&ti816x_globals);
131}
111#endif 132#endif
112 133
113#if defined(CONFIG_ARCH_OMAP4) 134#if defined(CONFIG_ARCH_OMAP4)
diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h
index f0629ae04102..c2804c1c4efd 100644
--- a/arch/arm/mach-omap2/control.h
+++ b/arch/arm/mach-omap2/control.h
@@ -52,6 +52,9 @@
52#define OMAP343X_CONTROL_PADCONFS_WKUP 0xa00 52#define OMAP343X_CONTROL_PADCONFS_WKUP 0xa00
53#define OMAP343X_CONTROL_GENERAL_WKUP 0xa60 53#define OMAP343X_CONTROL_GENERAL_WKUP 0xa60
54 54
55/* TI816X spefic control submodules */
56#define TI816X_CONTROL_DEVCONF 0x600
57
55/* Control register offsets - read/write with omap_ctrl_{read,write}{bwl}() */ 58/* Control register offsets - read/write with omap_ctrl_{read,write}{bwl}() */
56 59
57#define OMAP2_CONTROL_SYSCONFIG (OMAP2_CONTROL_INTERFACE + 0x10) 60#define OMAP2_CONTROL_SYSCONFIG (OMAP2_CONTROL_INTERFACE + 0x10)
@@ -241,6 +244,9 @@
241#define OMAP3_PADCONF_SAD2D_MSTANDBY 0x250 244#define OMAP3_PADCONF_SAD2D_MSTANDBY 0x250
242#define OMAP3_PADCONF_SAD2D_IDLEACK 0x254 245#define OMAP3_PADCONF_SAD2D_IDLEACK 0x254
243 246
247/* TI816X CONTROL_DEVCONF register offsets */
248#define TI816X_CONTROL_DEVICE_ID (TI816X_CONTROL_DEVCONF + 0x000)
249
244/* 250/*
245 * REVISIT: This list of registers is not comprehensive - there are more 251 * REVISIT: This list of registers is not comprehensive - there are more
246 * that should be added. 252 * that should be added.
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 2c9c912f2c42..e0f0ef952bc9 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -333,7 +333,7 @@ static struct platform_device omap2_mcspi2 = {
333 }, 333 },
334}; 334};
335 335
336#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \ 336#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \
337 defined(CONFIG_ARCH_OMAP4) 337 defined(CONFIG_ARCH_OMAP4)
338static struct omap2_mcspi_platform_config omap2_mcspi3_config = { 338static struct omap2_mcspi_platform_config omap2_mcspi3_config = {
339 .num_cs = 2, 339 .num_cs = 2,
@@ -400,7 +400,7 @@ static inline void omap4_mcspi_fixup(void)
400} 400}
401#endif 401#endif
402 402
403#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \ 403#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \
404 defined(CONFIG_ARCH_OMAP4) 404 defined(CONFIG_ARCH_OMAP4)
405static inline void omap2_mcspi3_init(void) 405static inline void omap2_mcspi3_init(void)
406{ 406{
@@ -895,7 +895,7 @@ void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data,
895/*-------------------------------------------------------------------------*/ 895/*-------------------------------------------------------------------------*/
896 896
897#if defined(CONFIG_HDQ_MASTER_OMAP) || defined(CONFIG_HDQ_MASTER_OMAP_MODULE) 897#if defined(CONFIG_HDQ_MASTER_OMAP) || defined(CONFIG_HDQ_MASTER_OMAP_MODULE)
898#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430) 898#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_SOC_OMAP3430)
899#define OMAP_HDQ_BASE 0x480B2000 899#define OMAP_HDQ_BASE 0x480B2000
900#endif 900#endif
901static struct resource omap_hdq_resources[] = { 901static struct resource omap_hdq_resources[] = {
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index 5f9086c65e48..5c25f1b55235 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -191,12 +191,19 @@ static void __init omap3_check_features(void)
191 if (!cpu_is_omap3505() && !cpu_is_omap3517()) 191 if (!cpu_is_omap3505() && !cpu_is_omap3517())
192 omap3_features |= OMAP3_HAS_IO_WAKEUP; 192 omap3_features |= OMAP3_HAS_IO_WAKEUP;
193 193
194 omap3_features |= OMAP3_HAS_SDRC;
195
194 /* 196 /*
195 * TODO: Get additional info (where applicable) 197 * TODO: Get additional info (where applicable)
196 * e.g. Size of L2 cache. 198 * e.g. Size of L2 cache.
197 */ 199 */
198} 200}
199 201
202static void __init ti816x_check_features(void)
203{
204 omap3_features = OMAP3_HAS_NEON;
205}
206
200static void __init omap3_check_revision(void) 207static void __init omap3_check_revision(void)
201{ 208{
202 u32 cpuid, idcode; 209 u32 cpuid, idcode;
@@ -287,6 +294,20 @@ static void __init omap3_check_revision(void)
287 omap_chip.oc |= CHIP_IS_OMAP3630ES1_2; 294 omap_chip.oc |= CHIP_IS_OMAP3630ES1_2;
288 } 295 }
289 break; 296 break;
297 case 0xb81e:
298 omap_chip.oc = CHIP_IS_TI816X;
299
300 switch (rev) {
301 case 0:
302 omap_revision = TI8168_REV_ES1_0;
303 break;
304 case 1:
305 omap_revision = TI8168_REV_ES1_1;
306 break;
307 default:
308 omap_revision = TI8168_REV_ES1_1;
309 }
310 break;
290 default: 311 default:
291 /* Unknown default to latest silicon rev as default*/ 312 /* Unknown default to latest silicon rev as default*/
292 omap_revision = OMAP3630_REV_ES1_2; 313 omap_revision = OMAP3630_REV_ES1_2;
@@ -372,6 +393,8 @@ static void __init omap3_cpuinfo(void)
372 /* Already set in omap3_check_revision() */ 393 /* Already set in omap3_check_revision() */
373 strcpy(cpu_name, "AM3505"); 394 strcpy(cpu_name, "AM3505");
374 } 395 }
396 } else if (cpu_is_ti816x()) {
397 strcpy(cpu_name, "TI816X");
375 } else if (omap3_has_iva() && omap3_has_sgx()) { 398 } else if (omap3_has_iva() && omap3_has_sgx()) {
376 /* OMAP3430, OMAP3525, OMAP3515, OMAP3503 devices */ 399 /* OMAP3430, OMAP3525, OMAP3515, OMAP3503 devices */
377 strcpy(cpu_name, "OMAP3430/3530"); 400 strcpy(cpu_name, "OMAP3430/3530");
@@ -386,7 +409,7 @@ static void __init omap3_cpuinfo(void)
386 strcpy(cpu_name, "OMAP3503"); 409 strcpy(cpu_name, "OMAP3503");
387 } 410 }
388 411
389 if (cpu_is_omap3630()) { 412 if (cpu_is_omap3630() || cpu_is_ti816x()) {
390 switch (rev) { 413 switch (rev) {
391 case OMAP_REVBITS_00: 414 case OMAP_REVBITS_00:
392 strcpy(cpu_rev, "1.0"); 415 strcpy(cpu_rev, "1.0");
@@ -462,7 +485,13 @@ void __init omap2_check_revision(void)
462 omap24xx_check_revision(); 485 omap24xx_check_revision();
463 } else if (cpu_is_omap34xx()) { 486 } else if (cpu_is_omap34xx()) {
464 omap3_check_revision(); 487 omap3_check_revision();
465 omap3_check_features(); 488
489 /* TI816X doesn't have feature register */
490 if (!cpu_is_ti816x())
491 omap3_check_features();
492 else
493 ti816x_check_features();
494
466 omap3_cpuinfo(); 495 omap3_cpuinfo();
467 return; 496 return;
468 } else if (cpu_is_omap44xx()) { 497 } else if (cpu_is_omap44xx()) {
diff --git a/arch/arm/mach-omap2/include/mach/debug-macro.S b/arch/arm/mach-omap2/include/mach/debug-macro.S
index 6a4d4136002e..e1b0f17b0927 100644
--- a/arch/arm/mach-omap2/include/mach/debug-macro.S
+++ b/arch/arm/mach-omap2/include/mach/debug-macro.S
@@ -69,6 +69,12 @@ omap_uart_lsr: .word 0
69 beq 34f @ configure OMAP3UART4 69 beq 34f @ configure OMAP3UART4
70 cmp \rp, #OMAP4UART4 @ only on 44xx 70 cmp \rp, #OMAP4UART4 @ only on 44xx
71 beq 44f @ configure OMAP4UART4 71 beq 44f @ configure OMAP4UART4
72 cmp \rp, #TI816XUART1 @ ti816x UART offsets different
73 beq 81f @ configure UART1
74 cmp \rp, #TI816XUART2 @ ti816x UART offsets different
75 beq 82f @ configure UART2
76 cmp \rp, #TI816XUART3 @ ti816x UART offsets different
77 beq 83f @ configure UART3
72 cmp \rp, #ZOOM_UART @ only on zoom2/3 78 cmp \rp, #ZOOM_UART @ only on zoom2/3
73 beq 95f @ configure ZOOM_UART 79 beq 95f @ configure ZOOM_UART
74 80
@@ -91,6 +97,12 @@ omap_uart_lsr: .word 0
91 b 98f 97 b 98f
9244: mov \rp, #UART_OFFSET(OMAP4_UART4_BASE) 9844: mov \rp, #UART_OFFSET(OMAP4_UART4_BASE)
93 b 98f 99 b 98f
10081: mov \rp, #UART_OFFSET(TI816X_UART1_BASE)
101 b 98f
10282: mov \rp, #UART_OFFSET(TI816X_UART2_BASE)
103 b 98f
10483: mov \rp, #UART_OFFSET(TI816X_UART3_BASE)
105 b 98f
9495: ldr \rp, =ZOOM_UART_BASE 10695: ldr \rp, =ZOOM_UART_BASE
95 mrc p15, 0, \rv, c1, c0 107 mrc p15, 0, \rv, c1, c0
96 tst \rv, #1 @ MMU enabled? 108 tst \rv, #1 @ MMU enabled?
diff --git a/arch/arm/mach-omap2/include/mach/entry-macro.S b/arch/arm/mach-omap2/include/mach/entry-macro.S
index 81985a665cb3..a48690b90990 100644
--- a/arch/arm/mach-omap2/include/mach/entry-macro.S
+++ b/arch/arm/mach-omap2/include/mach/entry-macro.S
@@ -61,6 +61,14 @@
61 bne 9998f 61 bne 9998f
62 ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */ 62 ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */
63 cmp \irqnr, #0x0 63 cmp \irqnr, #0x0
64 bne 9998f
65
66 /*
67 * ti816x has additional IRQ pending register. Checking this
68 * register on omap2 & omap3 has no effect (read as 0).
69 */
70 ldr \irqnr, [\base, #0xf8] /* IRQ pending reg 4 */
71 cmp \irqnr, #0x0
649998: 729998:
65 ldrne \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET] 73 ldrne \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET]
66 and \irqnr, \irqnr, #ACTIVEIRQ_MASK /* Clear spurious bits */ 74 and \irqnr, \irqnr, #ACTIVEIRQ_MASK /* Clear spurious bits */
@@ -133,6 +141,11 @@
133 bne 9999f 141 bne 9999f
134 ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */ 142 ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */
135 cmp \irqnr, #0x0 143 cmp \irqnr, #0x0
144#ifdef CONFIG_SOC_OMAPTI816X
145 bne 9999f
146 ldr \irqnr, [\base, #0xf8] /* IRQ pending reg 4 */
147 cmp \irqnr, #0x0
148#endif
1369999: 1499999:
137 ldrne \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET] 150 ldrne \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET]
138 and \irqnr, \irqnr, #ACTIVEIRQ_MASK /* Clear spurious bits */ 151 and \irqnr, \irqnr, #ACTIVEIRQ_MASK /* Clear spurious bits */
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index c2032041d26f..b8b49e4ae928 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -66,7 +66,7 @@ static struct map_desc omap24xx_io_desc[] __initdata = {
66 }, 66 },
67}; 67};
68 68
69#ifdef CONFIG_ARCH_OMAP2420 69#ifdef CONFIG_SOC_OMAP2420
70static struct map_desc omap242x_io_desc[] __initdata = { 70static struct map_desc omap242x_io_desc[] __initdata = {
71 { 71 {
72 .virtual = DSP_MEM_2420_VIRT, 72 .virtual = DSP_MEM_2420_VIRT,
@@ -90,7 +90,7 @@ static struct map_desc omap242x_io_desc[] __initdata = {
90 90
91#endif 91#endif
92 92
93#ifdef CONFIG_ARCH_OMAP2430 93#ifdef CONFIG_SOC_OMAP2430
94static struct map_desc omap243x_io_desc[] __initdata = { 94static struct map_desc omap243x_io_desc[] __initdata = {
95 { 95 {
96 .virtual = L4_WK_243X_VIRT, 96 .virtual = L4_WK_243X_VIRT,
@@ -175,6 +175,18 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
175#endif 175#endif
176}; 176};
177#endif 177#endif
178
179#ifdef CONFIG_SOC_OMAPTI816X
180static struct map_desc omapti816x_io_desc[] __initdata = {
181 {
182 .virtual = L4_34XX_VIRT,
183 .pfn = __phys_to_pfn(L4_34XX_PHYS),
184 .length = L4_34XX_SIZE,
185 .type = MT_DEVICE
186 },
187};
188#endif
189
178#ifdef CONFIG_ARCH_OMAP4 190#ifdef CONFIG_ARCH_OMAP4
179static struct map_desc omap44xx_io_desc[] __initdata = { 191static struct map_desc omap44xx_io_desc[] __initdata = {
180 { 192 {
@@ -241,7 +253,7 @@ static void __init _omap2_map_common_io(void)
241 omap_sram_init(); 253 omap_sram_init();
242} 254}
243 255
244#ifdef CONFIG_ARCH_OMAP2420 256#ifdef CONFIG_SOC_OMAP2420
245void __init omap242x_map_common_io(void) 257void __init omap242x_map_common_io(void)
246{ 258{
247 iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc)); 259 iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc));
@@ -250,7 +262,7 @@ void __init omap242x_map_common_io(void)
250} 262}
251#endif 263#endif
252 264
253#ifdef CONFIG_ARCH_OMAP2430 265#ifdef CONFIG_SOC_OMAP2430
254void __init omap243x_map_common_io(void) 266void __init omap243x_map_common_io(void)
255{ 267{
256 iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc)); 268 iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc));
@@ -267,6 +279,14 @@ void __init omap34xx_map_common_io(void)
267} 279}
268#endif 280#endif
269 281
282#ifdef CONFIG_SOC_OMAPTI816X
283void __init omapti816x_map_common_io(void)
284{
285 iotable_init(omapti816x_io_desc, ARRAY_SIZE(omapti816x_io_desc));
286 _omap2_map_common_io();
287}
288#endif
289
270#ifdef CONFIG_ARCH_OMAP4 290#ifdef CONFIG_ARCH_OMAP4
271void __init omap44xx_map_common_io(void) 291void __init omap44xx_map_common_io(void)
272{ 292{
@@ -398,11 +418,7 @@ void __init omap2_init_common_infrastructure(void)
398void __init omap2_init_common_devices(struct omap_sdrc_params *sdrc_cs0, 418void __init omap2_init_common_devices(struct omap_sdrc_params *sdrc_cs0,
399 struct omap_sdrc_params *sdrc_cs1) 419 struct omap_sdrc_params *sdrc_cs1)
400{ 420{
401 omap_serial_early_init(); 421 if (cpu_is_omap24xx() || omap3_has_sdrc()) {
402
403 omap_hwmod_late_init();
404
405 if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
406 omap2_sdrc_init(sdrc_cs0, sdrc_cs1); 422 omap2_sdrc_init(sdrc_cs0, sdrc_cs1);
407 _omap2_init_reprogram_sdrc(); 423 _omap2_init_reprogram_sdrc();
408 } 424 }
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
index 23049c487c47..bc524b94fd59 100644
--- a/arch/arm/mach-omap2/irq.c
+++ b/arch/arm/mach-omap2/irq.c
@@ -61,8 +61,6 @@ struct omap3_intc_regs {
61 u32 mir[INTCPS_NR_MIR_REGS]; 61 u32 mir[INTCPS_NR_MIR_REGS];
62}; 62};
63 63
64static struct omap3_intc_regs intc_context[ARRAY_SIZE(irq_banks)];
65
66/* INTC bank register get/set */ 64/* INTC bank register get/set */
67 65
68static void intc_bank_write_reg(u32 val, struct omap_irq_bank *bank, u16 reg) 66static void intc_bank_write_reg(u32 val, struct omap_irq_bank *bank, u16 reg)
@@ -110,7 +108,7 @@ static void omap_mask_irq(struct irq_data *d)
110 unsigned int irq = d->irq; 108 unsigned int irq = d->irq;
111 int offset = irq & (~(IRQ_BITS_PER_REG - 1)); 109 int offset = irq & (~(IRQ_BITS_PER_REG - 1));
112 110
113 if (cpu_is_omap34xx()) { 111 if (cpu_is_omap34xx() && !cpu_is_ti816x()) {
114 int spurious = 0; 112 int spurious = 0;
115 113
116 /* 114 /*
@@ -205,6 +203,9 @@ void __init omap_init_irq(void)
205 203
206 BUG_ON(!base); 204 BUG_ON(!base);
207 205
206 if (cpu_is_ti816x())
207 bank->nr_irqs = 128;
208
208 /* Static mapping, never released */ 209 /* Static mapping, never released */
209 bank->base_reg = ioremap(base, SZ_4K); 210 bank->base_reg = ioremap(base, SZ_4K);
210 if (!bank->base_reg) { 211 if (!bank->base_reg) {
@@ -229,6 +230,8 @@ void __init omap_init_irq(void)
229} 230}
230 231
231#ifdef CONFIG_ARCH_OMAP3 232#ifdef CONFIG_ARCH_OMAP3
233static struct omap3_intc_regs intc_context[ARRAY_SIZE(irq_banks)];
234
232void omap_intc_save_context(void) 235void omap_intc_save_context(void)
233{ 236{
234 int ind = 0, i = 0; 237 int ind = 0, i = 0;
diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
index 394413dc7deb..29b9dc3917af 100644
--- a/arch/arm/mach-omap2/mailbox.c
+++ b/arch/arm/mach-omap2/mailbox.c
@@ -310,7 +310,7 @@ struct omap_mbox mbox_dsp_info = {
310struct omap_mbox *omap3_mboxes[] = { &mbox_dsp_info, NULL }; 310struct omap_mbox *omap3_mboxes[] = { &mbox_dsp_info, NULL };
311#endif 311#endif
312 312
313#if defined(CONFIG_ARCH_OMAP2420) 313#if defined(CONFIG_SOC_OMAP2420)
314/* IVA */ 314/* IVA */
315static struct omap_mbox2_priv omap2_mbox_iva_priv = { 315static struct omap_mbox2_priv omap2_mbox_iva_priv = {
316 .tx_fifo = { 316 .tx_fifo = {
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c
index f9c9df5b5ff1..0526b758bdcc 100644
--- a/arch/arm/mach-omap2/mcbsp.c
+++ b/arch/arm/mach-omap2/mcbsp.c
@@ -104,7 +104,7 @@ EXPORT_SYMBOL(omap2_mcbsp_set_clks_src);
104 104
105/* Platform data */ 105/* Platform data */
106 106
107#ifdef CONFIG_ARCH_OMAP2420 107#ifdef CONFIG_SOC_OMAP2420
108static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = { 108static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = {
109 { 109 {
110 .phys_base = OMAP24XX_MCBSP1_BASE, 110 .phys_base = OMAP24XX_MCBSP1_BASE,
@@ -129,7 +129,7 @@ static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = {
129#define OMAP2420_MCBSP_REG_NUM 0 129#define OMAP2420_MCBSP_REG_NUM 0
130#endif 130#endif
131 131
132#ifdef CONFIG_ARCH_OMAP2430 132#ifdef CONFIG_SOC_OMAP2430
133static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { 133static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = {
134 { 134 {
135 .phys_base = OMAP24XX_MCBSP1_BASE, 135 .phys_base = OMAP24XX_MCBSP1_BASE,
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index e282e35769fd..9e89a58711b7 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -1467,12 +1467,10 @@ static int __init _register(struct omap_hwmod *oh)
1467 return -EEXIST; 1467 return -EEXIST;
1468 1468
1469 ms_id = _find_mpu_port_index(oh); 1469 ms_id = _find_mpu_port_index(oh);
1470 if (!IS_ERR_VALUE(ms_id)) { 1470 if (!IS_ERR_VALUE(ms_id))
1471 oh->_mpu_port_index = ms_id; 1471 oh->_mpu_port_index = ms_id;
1472 oh->_mpu_rt_va = _find_mpu_rt_base(oh, oh->_mpu_port_index); 1472 else
1473 } else {
1474 oh->_int_flags |= _HWMOD_NO_MPU_PORT; 1473 oh->_int_flags |= _HWMOD_NO_MPU_PORT;
1475 }
1476 1474
1477 list_add_tail(&oh->node, &omap_hwmod_list); 1475 list_add_tail(&oh->node, &omap_hwmod_list);
1478 1476
@@ -1621,6 +1619,26 @@ int __init omap_hwmod_init(struct omap_hwmod **ohs)
1621 return 0; 1619 return 0;
1622} 1620}
1623 1621
1622/*
1623 * _populate_mpu_rt_base - populate the virtual address for a hwmod
1624 *
1625 * Must be called only from omap_hwmod_late_init so ioremap works properly.
1626 * Assumes the caller takes care of locking if needed.
1627 *
1628 */
1629static int __init _populate_mpu_rt_base(struct omap_hwmod *oh, void *data)
1630{
1631 if (oh->_int_flags & _HWMOD_NO_MPU_PORT)
1632 return 0;
1633
1634 oh->_mpu_rt_va = _find_mpu_rt_base(oh, oh->_mpu_port_index);
1635 if (!oh->_mpu_rt_va)
1636 pr_warning("omap_hwmod: %s found no _mpu_rt_va for %s\n",
1637 __func__, oh->name);
1638
1639 return 0;
1640}
1641
1624/** 1642/**
1625 * omap_hwmod_late_init - do some post-clock framework initialization 1643 * omap_hwmod_late_init - do some post-clock framework initialization
1626 * 1644 *
@@ -1628,10 +1646,12 @@ int __init omap_hwmod_init(struct omap_hwmod **ohs)
1628 * to struct clk pointers for each registered omap_hwmod. Also calls 1646 * to struct clk pointers for each registered omap_hwmod. Also calls
1629 * _setup() on each hwmod. Returns 0. 1647 * _setup() on each hwmod. Returns 0.
1630 */ 1648 */
1631int omap_hwmod_late_init(void) 1649static int __init omap_hwmod_late_init(void)
1632{ 1650{
1633 int r; 1651 int r;
1634 1652
1653 r = omap_hwmod_for_each(_populate_mpu_rt_base, NULL);
1654
1635 /* XXX check return value */ 1655 /* XXX check return value */
1636 r = omap_hwmod_for_each(_init_clocks, NULL); 1656 r = omap_hwmod_for_each(_init_clocks, NULL);
1637 WARN(r, "omap_hwmod: omap_hwmod_late_init(): _init_clocks failed\n"); 1657 WARN(r, "omap_hwmod: omap_hwmod_late_init(): _init_clocks failed\n");
@@ -1644,6 +1664,7 @@ int omap_hwmod_late_init(void)
1644 1664
1645 return 0; 1665 return 0;
1646} 1666}
1667core_initcall(omap_hwmod_late_init);
1647 1668
1648/** 1669/**
1649 * omap_hwmod_enable - enable an omap_hwmod 1670 * omap_hwmod_enable - enable an omap_hwmod
diff --git a/arch/arm/mach-omap2/opp2xxx.h b/arch/arm/mach-omap2/opp2xxx.h
index 38b730550506..8affc66a92c2 100644
--- a/arch/arm/mach-omap2/opp2xxx.h
+++ b/arch/arm/mach-omap2/opp2xxx.h
@@ -418,7 +418,7 @@ struct prcm_config {
418 418
419extern const struct prcm_config omap2420_rate_table[]; 419extern const struct prcm_config omap2420_rate_table[];
420 420
421#ifdef CONFIG_ARCH_OMAP2430 421#ifdef CONFIG_SOC_OMAP2430
422extern const struct prcm_config omap2430_rate_table[]; 422extern const struct prcm_config omap2430_rate_table[];
423#else 423#else
424#define omap2430_rate_table NULL 424#define omap2430_rate_table NULL
diff --git a/arch/arm/mach-omap2/powerdomains2xxx_data.c b/arch/arm/mach-omap2/powerdomains2xxx_data.c
index 9b1a33500577..78739e10f5b9 100644
--- a/arch/arm/mach-omap2/powerdomains2xxx_data.c
+++ b/arch/arm/mach-omap2/powerdomains2xxx_data.c
@@ -78,7 +78,7 @@ static struct powerdomain core_24xx_pwrdm = {
78 * 2430-specific powerdomains 78 * 2430-specific powerdomains
79 */ 79 */
80 80
81#ifdef CONFIG_ARCH_OMAP2430 81#ifdef CONFIG_SOC_OMAP2430
82 82
83/* XXX 2430 KILLDOMAINWKUP bit? No current users apparently */ 83/* XXX 2430 KILLDOMAINWKUP bit? No current users apparently */
84 84
@@ -97,7 +97,7 @@ static struct powerdomain mdm_pwrdm = {
97 }, 97 },
98}; 98};
99 99
100#endif /* CONFIG_ARCH_OMAP2430 */ 100#endif /* CONFIG_SOC_OMAP2430 */
101 101
102/* As powerdomains are added or removed above, this list must also be changed */ 102/* As powerdomains are added or removed above, this list must also be changed */
103static struct powerdomain *powerdomains_omap2xxx[] __initdata = { 103static struct powerdomain *powerdomains_omap2xxx[] __initdata = {
@@ -111,7 +111,7 @@ static struct powerdomain *powerdomains_omap2xxx[] __initdata = {
111 &core_24xx_pwrdm, 111 &core_24xx_pwrdm,
112#endif 112#endif
113 113
114#ifdef CONFIG_ARCH_OMAP2430 114#ifdef CONFIG_SOC_OMAP2430
115 &mdm_pwrdm, 115 &mdm_pwrdm,
116#endif 116#endif
117 NULL 117 NULL
diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
index 679bcd28576e..6be14389e4f3 100644
--- a/arch/arm/mach-omap2/prcm.c
+++ b/arch/arm/mach-omap2/prcm.c
@@ -24,6 +24,7 @@
24#include <linux/io.h> 24#include <linux/io.h>
25#include <linux/delay.h> 25#include <linux/delay.h>
26 26
27#include <mach/system.h>
27#include <plat/common.h> 28#include <plat/common.h>
28#include <plat/prcm.h> 29#include <plat/prcm.h>
29#include <plat/irqs.h> 30#include <plat/irqs.h>
@@ -57,7 +58,7 @@ u32 omap_prcm_get_reset_sources(void)
57EXPORT_SYMBOL(omap_prcm_get_reset_sources); 58EXPORT_SYMBOL(omap_prcm_get_reset_sources);
58 59
59/* Resets clock rates and reboots the system. Only called from system.h */ 60/* Resets clock rates and reboots the system. Only called from system.h */
60void omap_prcm_arch_reset(char mode, const char *cmd) 61static void omap_prcm_arch_reset(char mode, const char *cmd)
61{ 62{
62 s16 prcm_offs = 0; 63 s16 prcm_offs = 0;
63 64
@@ -108,6 +109,8 @@ void omap_prcm_arch_reset(char mode, const char *cmd)
108 omap2_prm_read_mod_reg(prcm_offs, OMAP2_RM_RSTCTRL); /* OCP barrier */ 109 omap2_prm_read_mod_reg(prcm_offs, OMAP2_RM_RSTCTRL); /* OCP barrier */
109} 110}
110 111
112void (*arch_reset)(char, const char *) = omap_prcm_arch_reset;
113
111/** 114/**
112 * omap2_cm_wait_idlest - wait for IDLEST bit to indicate module readiness 115 * omap2_cm_wait_idlest - wait for IDLEST bit to indicate module readiness
113 * @reg: physical address of module IDLEST register 116 * @reg: physical address of module IDLEST register
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index 32e91a9c8b6b..47eef48b8830 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -486,7 +486,7 @@ static void omap_uart_idle_init(struct omap_uart_state *uart)
486 mod_timer(&uart->timer, jiffies + uart->timeout); 486 mod_timer(&uart->timer, jiffies + uart->timeout);
487 omap_uart_smart_idle_enable(uart, 0); 487 omap_uart_smart_idle_enable(uart, 0);
488 488
489 if (cpu_is_omap34xx()) { 489 if (cpu_is_omap34xx() && !cpu_is_ti816x()) {
490 u32 mod = (uart->num > 1) ? OMAP3430_PER_MOD : CORE_MOD; 490 u32 mod = (uart->num > 1) ? OMAP3430_PER_MOD : CORE_MOD;
491 u32 wk_mask = 0; 491 u32 wk_mask = 0;
492 u32 padconf = 0; 492 u32 padconf = 0;
@@ -655,7 +655,7 @@ static void serial_out_override(struct uart_port *up, int offset, int value)
655} 655}
656#endif 656#endif
657 657
658void __init omap_serial_early_init(void) 658static int __init omap_serial_early_init(void)
659{ 659{
660 int i = 0; 660 int i = 0;
661 661
@@ -672,7 +672,7 @@ void __init omap_serial_early_init(void)
672 672
673 uart = kzalloc(sizeof(struct omap_uart_state), GFP_KERNEL); 673 uart = kzalloc(sizeof(struct omap_uart_state), GFP_KERNEL);
674 if (WARN_ON(!uart)) 674 if (WARN_ON(!uart))
675 return; 675 return -ENODEV;
676 676
677 uart->oh = oh; 677 uart->oh = oh;
678 uart->num = i++; 678 uart->num = i++;
@@ -691,7 +691,10 @@ void __init omap_serial_early_init(void)
691 */ 691 */
692 uart->oh->flags |= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET; 692 uart->oh->flags |= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET;
693 } while (1); 693 } while (1);
694
695 return 0;
694} 696}
697core_initcall(omap_serial_early_init);
695 698
696/** 699/**
697 * omap_serial_init_port() - initialize single serial port 700 * omap_serial_init_port() - initialize single serial port
@@ -759,13 +762,13 @@ void __init omap_serial_init_port(struct omap_board_data *bdata)
759 p->private_data = uart; 762 p->private_data = uart;
760 763
761 /* 764 /*
762 * omap44xx: Never read empty UART fifo 765 * omap44xx, ti816x: Never read empty UART fifo
763 * omap3xxx: Never read empty UART fifo on UARTs 766 * omap3xxx: Never read empty UART fifo on UARTs
764 * with IP rev >=0x52 767 * with IP rev >=0x52
765 */ 768 */
766 uart->regshift = p->regshift; 769 uart->regshift = p->regshift;
767 uart->membase = p->membase; 770 uart->membase = p->membase;
768 if (cpu_is_omap44xx()) 771 if (cpu_is_omap44xx() || cpu_is_ti816x())
769 uart->errata |= UART_ERRATA_FIFO_FULL_ABORT; 772 uart->errata |= UART_ERRATA_FIFO_FULL_ABORT;
770 else if ((serial_read_reg(uart, UART_OMAP_MVER) & 0xFF) 773 else if ((serial_read_reg(uart, UART_OMAP_MVER) & 0xFF)
771 >= UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV) 774 >= UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV)
@@ -847,7 +850,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata)
847 } 850 }
848 851
849 /* Enable the MDR1 errata for OMAP3 */ 852 /* Enable the MDR1 errata for OMAP3 */
850 if (cpu_is_omap34xx()) 853 if (cpu_is_omap34xx() && !cpu_is_ti816x())
851 uart->errata |= UART_ERRATA_i202_MDR1_ACCESS; 854 uart->errata |= UART_ERRATA_i202_MDR1_ACCESS;
852} 855}
853 856
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
index f04731820301..d9f10a31e604 100644
--- a/arch/arm/plat-omap/common.c
+++ b/arch/arm/plat-omap/common.c
@@ -24,10 +24,11 @@
24 24
25#define NO_LENGTH_CHECK 0xffffffff 25#define NO_LENGTH_CHECK 0xffffffff
26 26
27struct omap_board_config_kernel *omap_board_config; 27struct omap_board_config_kernel *omap_board_config __initdata;
28int omap_board_config_size; 28int omap_board_config_size;
29 29
30static const void *get_config(u16 tag, size_t len, int skip, size_t *len_out) 30static const void *__init get_config(u16 tag, size_t len,
31 int skip, size_t *len_out)
31{ 32{
32 struct omap_board_config_kernel *kinfo = NULL; 33 struct omap_board_config_kernel *kinfo = NULL;
33 int i; 34 int i;
@@ -49,17 +50,15 @@ static const void *get_config(u16 tag, size_t len, int skip, size_t *len_out)
49 return kinfo->data; 50 return kinfo->data;
50} 51}
51 52
52const void *__omap_get_config(u16 tag, size_t len, int nr) 53const void *__init __omap_get_config(u16 tag, size_t len, int nr)
53{ 54{
54 return get_config(tag, len, nr, NULL); 55 return get_config(tag, len, nr, NULL);
55} 56}
56EXPORT_SYMBOL(__omap_get_config);
57 57
58const void *omap_get_var_config(u16 tag, size_t *len) 58const void *__init omap_get_var_config(u16 tag, size_t *len)
59{ 59{
60 return get_config(tag, NO_LENGTH_CHECK, 0, len); 60 return get_config(tag, NO_LENGTH_CHECK, 0, len);
61} 61}
62EXPORT_SYMBOL(omap_get_var_config);
63 62
64void __init omap_reserve(void) 63void __init omap_reserve(void)
65{ 64{
diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c
index 862dda95d61d..f7fed6080190 100644
--- a/arch/arm/plat-omap/counter_32k.c
+++ b/arch/arm/plat-omap/counter_32k.c
@@ -54,7 +54,7 @@ static cycle_t notrace omap16xx_32k_read(struct clocksource *cs)
54#define omap16xx_32k_read NULL 54#define omap16xx_32k_read NULL
55#endif 55#endif
56 56
57#ifdef CONFIG_ARCH_OMAP2420 57#ifdef CONFIG_SOC_OMAP2420
58static cycle_t notrace omap2420_32k_read(struct clocksource *cs) 58static cycle_t notrace omap2420_32k_read(struct clocksource *cs)
59{ 59{
60 return omap_readl(OMAP2420_32KSYNCT_BASE + 0x10) - offset_32k; 60 return omap_readl(OMAP2420_32KSYNCT_BASE + 0x10) - offset_32k;
@@ -63,7 +63,7 @@ static cycle_t notrace omap2420_32k_read(struct clocksource *cs)
63#define omap2420_32k_read NULL 63#define omap2420_32k_read NULL
64#endif 64#endif
65 65
66#ifdef CONFIG_ARCH_OMAP2430 66#ifdef CONFIG_SOC_OMAP2430
67static cycle_t notrace omap2430_32k_read(struct clocksource *cs) 67static cycle_t notrace omap2430_32k_read(struct clocksource *cs)
68{ 68{
69 return omap_readl(OMAP2430_32KSYNCT_BASE + 0x10) - offset_32k; 69 return omap_readl(OMAP2430_32KSYNCT_BASE + 0x10) - offset_32k;
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index 85363084cc1a..2ec3b5d9f214 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -134,7 +134,7 @@ static inline void omap_enable_channel_irq(int lch);
134 134
135#ifdef CONFIG_ARCH_OMAP15XX 135#ifdef CONFIG_ARCH_OMAP15XX
136/* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */ 136/* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */
137int omap_dma_in_1510_mode(void) 137static int omap_dma_in_1510_mode(void)
138{ 138{
139 return enable_1510_mode; 139 return enable_1510_mode;
140} 140}
diff --git a/arch/arm/plat-omap/i2c.c b/arch/arm/plat-omap/i2c.c
index a4f8003de664..3341ca4703e9 100644
--- a/arch/arm/plat-omap/i2c.c
+++ b/arch/arm/plat-omap/i2c.c
@@ -112,6 +112,7 @@ static inline int omap1_i2c_add_bus(int bus_id)
112} 112}
113 113
114 114
115#ifdef CONFIG_ARCH_OMAP2PLUS
115/* 116/*
116 * XXX This function is a temporary compatibility wrapper - only 117 * XXX This function is a temporary compatibility wrapper - only
117 * needed until the I2C driver can be converted to call 118 * needed until the I2C driver can be converted to call
@@ -130,7 +131,6 @@ static struct omap_device_pm_latency omap_i2c_latency[] = {
130 }, 131 },
131}; 132};
132 133
133#ifdef CONFIG_ARCH_OMAP2PLUS
134static inline int omap2_i2c_add_bus(int bus_id) 134static inline int omap2_i2c_add_bus(int bus_id)
135{ 135{
136 int l; 136 int l;
diff --git a/arch/arm/plat-omap/include/plat/board.h b/arch/arm/plat-omap/include/plat/board.h
index 3cf4fa25ab3d..97126dfd2888 100644
--- a/arch/arm/plat-omap/include/plat/board.h
+++ b/arch/arm/plat-omap/include/plat/board.h
@@ -151,14 +151,14 @@ struct omap_board_config_kernel {
151 const void *data; 151 const void *data;
152}; 152};
153 153
154extern const void *__omap_get_config(u16 tag, size_t len, int nr); 154extern const void *__init __omap_get_config(u16 tag, size_t len, int nr);
155 155
156#define omap_get_config(tag, type) \ 156#define omap_get_config(tag, type) \
157 ((const type *) __omap_get_config((tag), sizeof(type), 0)) 157 ((const type *) __omap_get_config((tag), sizeof(type), 0))
158#define omap_get_nr_config(tag, type, nr) \ 158#define omap_get_nr_config(tag, type, nr) \
159 ((const type *) __omap_get_config((tag), sizeof(type), (nr))) 159 ((const type *) __omap_get_config((tag), sizeof(type), (nr)))
160 160
161extern const void *omap_get_var_config(u16 tag, size_t *len); 161extern const void *__init omap_get_var_config(u16 tag, size_t *len);
162 162
163extern struct omap_board_config_kernel *omap_board_config; 163extern struct omap_board_config_kernel *omap_board_config;
164extern int omap_board_config_size; 164extern int omap_board_config_size;
diff --git a/arch/arm/plat-omap/include/plat/clkdev_omap.h b/arch/arm/plat-omap/include/plat/clkdev_omap.h
index 256ab3f1ec8f..f1899a3e4174 100644
--- a/arch/arm/plat-omap/include/plat/clkdev_omap.h
+++ b/arch/arm/plat-omap/include/plat/clkdev_omap.h
@@ -38,6 +38,7 @@ struct omap_clk {
38#define CK_3517 (1 << 9) 38#define CK_3517 (1 << 9)
39#define CK_36XX (1 << 10) /* 36xx/37xx-specific clocks */ 39#define CK_36XX (1 << 10) /* 36xx/37xx-specific clocks */
40#define CK_443X (1 << 11) 40#define CK_443X (1 << 11)
41#define CK_TI816X (1 << 12)
41 42
42 43
43#define CK_34XX (CK_3430ES1 | CK_3430ES2PLUS) 44#define CK_34XX (CK_3430ES1 | CK_3430ES2PLUS)
diff --git a/arch/arm/plat-omap/include/plat/clock.h b/arch/arm/plat-omap/include/plat/clock.h
index 8eb0adab19ea..d43e6234dbbb 100644
--- a/arch/arm/plat-omap/include/plat/clock.h
+++ b/arch/arm/plat-omap/include/plat/clock.h
@@ -53,6 +53,7 @@ struct clkops {
53#define RATE_IN_3430ES2PLUS (1 << 3) /* 3430 ES >= 2 rates only */ 53#define RATE_IN_3430ES2PLUS (1 << 3) /* 3430 ES >= 2 rates only */
54#define RATE_IN_36XX (1 << 4) 54#define RATE_IN_36XX (1 << 4)
55#define RATE_IN_4430 (1 << 5) 55#define RATE_IN_4430 (1 << 5)
56#define RATE_IN_TI816X (1 << 6)
56 57
57#define RATE_IN_24XX (RATE_IN_242X | RATE_IN_243X) 58#define RATE_IN_24XX (RATE_IN_242X | RATE_IN_243X)
58#define RATE_IN_34XX (RATE_IN_3430ES1 | RATE_IN_3430ES2PLUS) 59#define RATE_IN_34XX (RATE_IN_3430ES1 | RATE_IN_3430ES2PLUS)
diff --git a/arch/arm/plat-omap/include/plat/common.h b/arch/arm/plat-omap/include/plat/common.h
index 29b2afb4288f..1dd97e7461c9 100644
--- a/arch/arm/plat-omap/include/plat/common.h
+++ b/arch/arm/plat-omap/include/plat/common.h
@@ -66,6 +66,7 @@ void omap2_set_globals_242x(void);
66void omap2_set_globals_243x(void); 66void omap2_set_globals_243x(void);
67void omap2_set_globals_3xxx(void); 67void omap2_set_globals_3xxx(void);
68void omap2_set_globals_443x(void); 68void omap2_set_globals_443x(void);
69void omap2_set_globals_ti816x(void);
69 70
70/* These get called from omap2_set_globals_xxxx(), do not call these */ 71/* These get called from omap2_set_globals_xxxx(), do not call these */
71void omap2_set_globals_tap(struct omap_globals *); 72void omap2_set_globals_tap(struct omap_globals *);
diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h
index 3fd8b4055727..be99438d385e 100644
--- a/arch/arm/plat-omap/include/plat/cpu.h
+++ b/arch/arm/plat-omap/include/plat/cpu.h
@@ -105,6 +105,12 @@ static inline int is_omap ##subclass (void) \
105 return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ 105 return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \
106} 106}
107 107
108#define IS_TI_SUBCLASS(subclass, id) \
109static inline int is_ti ##subclass (void) \
110{ \
111 return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \
112}
113
108IS_OMAP_CLASS(7xx, 0x07) 114IS_OMAP_CLASS(7xx, 0x07)
109IS_OMAP_CLASS(15xx, 0x15) 115IS_OMAP_CLASS(15xx, 0x15)
110IS_OMAP_CLASS(16xx, 0x16) 116IS_OMAP_CLASS(16xx, 0x16)
@@ -118,6 +124,8 @@ IS_OMAP_SUBCLASS(343x, 0x343)
118IS_OMAP_SUBCLASS(363x, 0x363) 124IS_OMAP_SUBCLASS(363x, 0x363)
119IS_OMAP_SUBCLASS(443x, 0x443) 125IS_OMAP_SUBCLASS(443x, 0x443)
120 126
127IS_TI_SUBCLASS(816x, 0x816)
128
121#define cpu_is_omap7xx() 0 129#define cpu_is_omap7xx() 0
122#define cpu_is_omap15xx() 0 130#define cpu_is_omap15xx() 0
123#define cpu_is_omap16xx() 0 131#define cpu_is_omap16xx() 0
@@ -126,6 +134,7 @@ IS_OMAP_SUBCLASS(443x, 0x443)
126#define cpu_is_omap243x() 0 134#define cpu_is_omap243x() 0
127#define cpu_is_omap34xx() 0 135#define cpu_is_omap34xx() 0
128#define cpu_is_omap343x() 0 136#define cpu_is_omap343x() 0
137#define cpu_is_ti816x() 0
129#define cpu_is_omap44xx() 0 138#define cpu_is_omap44xx() 0
130#define cpu_is_omap443x() 0 139#define cpu_is_omap443x() 0
131 140
@@ -170,11 +179,11 @@ IS_OMAP_SUBCLASS(443x, 0x443)
170# undef cpu_is_omap24xx 179# undef cpu_is_omap24xx
171# define cpu_is_omap24xx() is_omap24xx() 180# define cpu_is_omap24xx() is_omap24xx()
172# endif 181# endif
173# if defined (CONFIG_ARCH_OMAP2420) 182# if defined (CONFIG_SOC_OMAP2420)
174# undef cpu_is_omap242x 183# undef cpu_is_omap242x
175# define cpu_is_omap242x() is_omap242x() 184# define cpu_is_omap242x() is_omap242x()
176# endif 185# endif
177# if defined (CONFIG_ARCH_OMAP2430) 186# if defined (CONFIG_SOC_OMAP2430)
178# undef cpu_is_omap243x 187# undef cpu_is_omap243x
179# define cpu_is_omap243x() is_omap243x() 188# define cpu_is_omap243x() is_omap243x()
180# endif 189# endif
@@ -189,11 +198,11 @@ IS_OMAP_SUBCLASS(443x, 0x443)
189# undef cpu_is_omap24xx 198# undef cpu_is_omap24xx
190# define cpu_is_omap24xx() 1 199# define cpu_is_omap24xx() 1
191# endif 200# endif
192# if defined(CONFIG_ARCH_OMAP2420) 201# if defined(CONFIG_SOC_OMAP2420)
193# undef cpu_is_omap242x 202# undef cpu_is_omap242x
194# define cpu_is_omap242x() 1 203# define cpu_is_omap242x() 1
195# endif 204# endif
196# if defined(CONFIG_ARCH_OMAP2430) 205# if defined(CONFIG_SOC_OMAP2430)
197# undef cpu_is_omap243x 206# undef cpu_is_omap243x
198# define cpu_is_omap243x() 1 207# define cpu_is_omap243x() 1
199# endif 208# endif
@@ -201,7 +210,7 @@ IS_OMAP_SUBCLASS(443x, 0x443)
201# undef cpu_is_omap34xx 210# undef cpu_is_omap34xx
202# define cpu_is_omap34xx() 1 211# define cpu_is_omap34xx() 1
203# endif 212# endif
204# if defined(CONFIG_ARCH_OMAP3430) 213# if defined(CONFIG_SOC_OMAP3430)
205# undef cpu_is_omap343x 214# undef cpu_is_omap343x
206# define cpu_is_omap343x() 1 215# define cpu_is_omap343x() 1
207# endif 216# endif
@@ -330,6 +339,7 @@ IS_OMAP_TYPE(3517, 0x3517)
330# undef cpu_is_omap3530 339# undef cpu_is_omap3530
331# undef cpu_is_omap3505 340# undef cpu_is_omap3505
332# undef cpu_is_omap3517 341# undef cpu_is_omap3517
342# undef cpu_is_ti816x
333# define cpu_is_omap3430() is_omap3430() 343# define cpu_is_omap3430() is_omap3430()
334# define cpu_is_omap3503() (cpu_is_omap3430() && \ 344# define cpu_is_omap3503() (cpu_is_omap3430() && \
335 (!omap3_has_iva()) && \ 345 (!omap3_has_iva()) && \
@@ -345,6 +355,7 @@ IS_OMAP_TYPE(3517, 0x3517)
345# define cpu_is_omap3517() is_omap3517() 355# define cpu_is_omap3517() is_omap3517()
346# undef cpu_is_omap3630 356# undef cpu_is_omap3630
347# define cpu_is_omap3630() is_omap363x() 357# define cpu_is_omap3630() is_omap363x()
358# define cpu_is_ti816x() is_ti816x()
348#endif 359#endif
349 360
350# if defined(CONFIG_ARCH_OMAP4) 361# if defined(CONFIG_ARCH_OMAP4)
@@ -389,6 +400,10 @@ IS_OMAP_TYPE(3517, 0x3517)
389#define OMAP3505_REV(v) (OMAP35XX_CLASS | (0x3505 << 16) | (v << 8)) 400#define OMAP3505_REV(v) (OMAP35XX_CLASS | (0x3505 << 16) | (v << 8))
390#define OMAP3517_REV(v) (OMAP35XX_CLASS | (0x3517 << 16) | (v << 8)) 401#define OMAP3517_REV(v) (OMAP35XX_CLASS | (0x3517 << 16) | (v << 8))
391 402
403#define TI816X_CLASS 0x81600034
404#define TI8168_REV_ES1_0 TI816X_CLASS
405#define TI8168_REV_ES1_1 (TI816X_CLASS | (OMAP_REVBITS_01 << 8))
406
392#define OMAP443X_CLASS 0x44300044 407#define OMAP443X_CLASS 0x44300044
393#define OMAP4430_REV_ES1_0 OMAP443X_CLASS 408#define OMAP4430_REV_ES1_0 OMAP443X_CLASS
394#define OMAP4430_REV_ES2_0 0x44301044 409#define OMAP4430_REV_ES2_0 0x44301044
@@ -419,6 +434,7 @@ IS_OMAP_TYPE(3517, 0x3517)
419#define CHIP_IS_OMAP3630ES1_1 (1 << 9) 434#define CHIP_IS_OMAP3630ES1_1 (1 << 9)
420#define CHIP_IS_OMAP3630ES1_2 (1 << 10) 435#define CHIP_IS_OMAP3630ES1_2 (1 << 10)
421#define CHIP_IS_OMAP4430ES2 (1 << 11) 436#define CHIP_IS_OMAP4430ES2 (1 << 11)
437#define CHIP_IS_TI816X (1 << 14)
422 438
423#define CHIP_IS_OMAP24XX (CHIP_IS_OMAP2420 | CHIP_IS_OMAP2430) 439#define CHIP_IS_OMAP24XX (CHIP_IS_OMAP2420 | CHIP_IS_OMAP2430)
424 440
@@ -455,6 +471,7 @@ extern u32 omap3_features;
455#define OMAP3_HAS_ISP BIT(4) 471#define OMAP3_HAS_ISP BIT(4)
456#define OMAP3_HAS_192MHZ_CLK BIT(5) 472#define OMAP3_HAS_192MHZ_CLK BIT(5)
457#define OMAP3_HAS_IO_WAKEUP BIT(6) 473#define OMAP3_HAS_IO_WAKEUP BIT(6)
474#define OMAP3_HAS_SDRC BIT(7)
458 475
459#define OMAP3_HAS_FEATURE(feat,flag) \ 476#define OMAP3_HAS_FEATURE(feat,flag) \
460static inline unsigned int omap3_has_ ##feat(void) \ 477static inline unsigned int omap3_has_ ##feat(void) \
@@ -469,5 +486,6 @@ OMAP3_HAS_FEATURE(neon, NEON)
469OMAP3_HAS_FEATURE(isp, ISP) 486OMAP3_HAS_FEATURE(isp, ISP)
470OMAP3_HAS_FEATURE(192mhz_clk, 192MHZ_CLK) 487OMAP3_HAS_FEATURE(192mhz_clk, 192MHZ_CLK)
471OMAP3_HAS_FEATURE(io_wakeup, IO_WAKEUP) 488OMAP3_HAS_FEATURE(io_wakeup, IO_WAKEUP)
489OMAP3_HAS_FEATURE(sdrc, SDRC)
472 490
473#endif 491#endif
diff --git a/arch/arm/plat-omap/include/plat/fpga.h b/arch/arm/plat-omap/include/plat/fpga.h
index ae39bcb3f5ba..bd3c6324ae1f 100644
--- a/arch/arm/plat-omap/include/plat/fpga.h
+++ b/arch/arm/plat-omap/include/plat/fpga.h
@@ -30,18 +30,18 @@ extern void omap1510_fpga_init_irq(void);
30 * --------------------------------------------------------------------------- 30 * ---------------------------------------------------------------------------
31 */ 31 */
32/* maps in the FPGA registers and the ETHR registers */ 32/* maps in the FPGA registers and the ETHR registers */
33#define H2P2_DBG_FPGA_BASE IOMEM(0xE8000000) /* VA */ 33#define H2P2_DBG_FPGA_BASE 0xE8000000 /* VA */
34#define H2P2_DBG_FPGA_SIZE SZ_4K /* SIZE */ 34#define H2P2_DBG_FPGA_SIZE SZ_4K /* SIZE */
35#define H2P2_DBG_FPGA_START 0x04000000 /* PA */ 35#define H2P2_DBG_FPGA_START 0x04000000 /* PA */
36 36
37#define H2P2_DBG_FPGA_ETHR_START (H2P2_DBG_FPGA_START + 0x300) 37#define H2P2_DBG_FPGA_ETHR_START (H2P2_DBG_FPGA_START + 0x300)
38#define H2P2_DBG_FPGA_FPGA_REV (H2P2_DBG_FPGA_BASE + 0x10) /* FPGA Revision */ 38#define H2P2_DBG_FPGA_FPGA_REV IOMEM(H2P2_DBG_FPGA_BASE + 0x10) /* FPGA Revision */
39#define H2P2_DBG_FPGA_BOARD_REV (H2P2_DBG_FPGA_BASE + 0x12) /* Board Revision */ 39#define H2P2_DBG_FPGA_BOARD_REV IOMEM(H2P2_DBG_FPGA_BASE + 0x12) /* Board Revision */
40#define H2P2_DBG_FPGA_GPIO (H2P2_DBG_FPGA_BASE + 0x14) /* GPIO outputs */ 40#define H2P2_DBG_FPGA_GPIO IOMEM(H2P2_DBG_FPGA_BASE + 0x14) /* GPIO outputs */
41#define H2P2_DBG_FPGA_LEDS (H2P2_DBG_FPGA_BASE + 0x16) /* LEDs outputs */ 41#define H2P2_DBG_FPGA_LEDS IOMEM(H2P2_DBG_FPGA_BASE + 0x16) /* LEDs outputs */
42#define H2P2_DBG_FPGA_MISC_INPUTS (H2P2_DBG_FPGA_BASE + 0x18) /* Misc inputs */ 42#define H2P2_DBG_FPGA_MISC_INPUTS IOMEM(H2P2_DBG_FPGA_BASE + 0x18) /* Misc inputs */
43#define H2P2_DBG_FPGA_LAN_STATUS (H2P2_DBG_FPGA_BASE + 0x1A) /* LAN Status line */ 43#define H2P2_DBG_FPGA_LAN_STATUS IOMEM(H2P2_DBG_FPGA_BASE + 0x1A) /* LAN Status line */
44#define H2P2_DBG_FPGA_LAN_RESET (H2P2_DBG_FPGA_BASE + 0x1C) /* LAN Reset line */ 44#define H2P2_DBG_FPGA_LAN_RESET IOMEM(H2P2_DBG_FPGA_BASE + 0x1C) /* LAN Reset line */
45 45
46/* NOTE: most boards don't have a static mapping for the FPGA ... */ 46/* NOTE: most boards don't have a static mapping for the FPGA ... */
47struct h2p2_dbg_fpga { 47struct h2p2_dbg_fpga {
@@ -81,55 +81,55 @@ struct h2p2_dbg_fpga {
81 * OMAP-1510 FPGA 81 * OMAP-1510 FPGA
82 * --------------------------------------------------------------------------- 82 * ---------------------------------------------------------------------------
83 */ 83 */
84#define OMAP1510_FPGA_BASE IOMEM(0xE8000000) /* VA */ 84#define OMAP1510_FPGA_BASE 0xE8000000 /* VA */
85#define OMAP1510_FPGA_SIZE SZ_4K 85#define OMAP1510_FPGA_SIZE SZ_4K
86#define OMAP1510_FPGA_START 0x08000000 /* PA */ 86#define OMAP1510_FPGA_START 0x08000000 /* PA */
87 87
88/* Revision */ 88/* Revision */
89#define OMAP1510_FPGA_REV_LOW (OMAP1510_FPGA_BASE + 0x0) 89#define OMAP1510_FPGA_REV_LOW IOMEM(OMAP1510_FPGA_BASE + 0x0)
90#define OMAP1510_FPGA_REV_HIGH (OMAP1510_FPGA_BASE + 0x1) 90#define OMAP1510_FPGA_REV_HIGH IOMEM(OMAP1510_FPGA_BASE + 0x1)
91 91
92#define OMAP1510_FPGA_LCD_PANEL_CONTROL (OMAP1510_FPGA_BASE + 0x2) 92#define OMAP1510_FPGA_LCD_PANEL_CONTROL IOMEM(OMAP1510_FPGA_BASE + 0x2)
93#define OMAP1510_FPGA_LED_DIGIT (OMAP1510_FPGA_BASE + 0x3) 93#define OMAP1510_FPGA_LED_DIGIT IOMEM(OMAP1510_FPGA_BASE + 0x3)
94#define INNOVATOR_FPGA_HID_SPI (OMAP1510_FPGA_BASE + 0x4) 94#define INNOVATOR_FPGA_HID_SPI IOMEM(OMAP1510_FPGA_BASE + 0x4)
95#define OMAP1510_FPGA_POWER (OMAP1510_FPGA_BASE + 0x5) 95#define OMAP1510_FPGA_POWER IOMEM(OMAP1510_FPGA_BASE + 0x5)
96 96
97/* Interrupt status */ 97/* Interrupt status */
98#define OMAP1510_FPGA_ISR_LO (OMAP1510_FPGA_BASE + 0x6) 98#define OMAP1510_FPGA_ISR_LO IOMEM(OMAP1510_FPGA_BASE + 0x6)
99#define OMAP1510_FPGA_ISR_HI (OMAP1510_FPGA_BASE + 0x7) 99#define OMAP1510_FPGA_ISR_HI IOMEM(OMAP1510_FPGA_BASE + 0x7)
100 100
101/* Interrupt mask */ 101/* Interrupt mask */
102#define OMAP1510_FPGA_IMR_LO (OMAP1510_FPGA_BASE + 0x8) 102#define OMAP1510_FPGA_IMR_LO IOMEM(OMAP1510_FPGA_BASE + 0x8)
103#define OMAP1510_FPGA_IMR_HI (OMAP1510_FPGA_BASE + 0x9) 103#define OMAP1510_FPGA_IMR_HI IOMEM(OMAP1510_FPGA_BASE + 0x9)
104 104
105/* Reset registers */ 105/* Reset registers */
106#define OMAP1510_FPGA_HOST_RESET (OMAP1510_FPGA_BASE + 0xa) 106#define OMAP1510_FPGA_HOST_RESET IOMEM(OMAP1510_FPGA_BASE + 0xa)
107#define OMAP1510_FPGA_RST (OMAP1510_FPGA_BASE + 0xb) 107#define OMAP1510_FPGA_RST IOMEM(OMAP1510_FPGA_BASE + 0xb)
108 108
109#define OMAP1510_FPGA_AUDIO (OMAP1510_FPGA_BASE + 0xc) 109#define OMAP1510_FPGA_AUDIO IOMEM(OMAP1510_FPGA_BASE + 0xc)
110#define OMAP1510_FPGA_DIP (OMAP1510_FPGA_BASE + 0xe) 110#define OMAP1510_FPGA_DIP IOMEM(OMAP1510_FPGA_BASE + 0xe)
111#define OMAP1510_FPGA_FPGA_IO (OMAP1510_FPGA_BASE + 0xf) 111#define OMAP1510_FPGA_FPGA_IO IOMEM(OMAP1510_FPGA_BASE + 0xf)
112#define OMAP1510_FPGA_UART1 (OMAP1510_FPGA_BASE + 0x14) 112#define OMAP1510_FPGA_UART1 IOMEM(OMAP1510_FPGA_BASE + 0x14)
113#define OMAP1510_FPGA_UART2 (OMAP1510_FPGA_BASE + 0x15) 113#define OMAP1510_FPGA_UART2 IOMEM(OMAP1510_FPGA_BASE + 0x15)
114#define OMAP1510_FPGA_OMAP1510_STATUS (OMAP1510_FPGA_BASE + 0x16) 114#define OMAP1510_FPGA_OMAP1510_STATUS IOMEM(OMAP1510_FPGA_BASE + 0x16)
115#define OMAP1510_FPGA_BOARD_REV (OMAP1510_FPGA_BASE + 0x18) 115#define OMAP1510_FPGA_BOARD_REV IOMEM(OMAP1510_FPGA_BASE + 0x18)
116#define OMAP1510P1_PPT_DATA (OMAP1510_FPGA_BASE + 0x100) 116#define OMAP1510P1_PPT_DATA IOMEM(OMAP1510_FPGA_BASE + 0x100)
117#define OMAP1510P1_PPT_STATUS (OMAP1510_FPGA_BASE + 0x101) 117#define OMAP1510P1_PPT_STATUS IOMEM(OMAP1510_FPGA_BASE + 0x101)
118#define OMAP1510P1_PPT_CONTROL (OMAP1510_FPGA_BASE + 0x102) 118#define OMAP1510P1_PPT_CONTROL IOMEM(OMAP1510_FPGA_BASE + 0x102)
119 119
120#define OMAP1510_FPGA_TOUCHSCREEN (OMAP1510_FPGA_BASE + 0x204) 120#define OMAP1510_FPGA_TOUCHSCREEN IOMEM(OMAP1510_FPGA_BASE + 0x204)
121 121
122#define INNOVATOR_FPGA_INFO (OMAP1510_FPGA_BASE + 0x205) 122#define INNOVATOR_FPGA_INFO IOMEM(OMAP1510_FPGA_BASE + 0x205)
123#define INNOVATOR_FPGA_LCD_BRIGHT_LO (OMAP1510_FPGA_BASE + 0x206) 123#define INNOVATOR_FPGA_LCD_BRIGHT_LO IOMEM(OMAP1510_FPGA_BASE + 0x206)
124#define INNOVATOR_FPGA_LCD_BRIGHT_HI (OMAP1510_FPGA_BASE + 0x207) 124#define INNOVATOR_FPGA_LCD_BRIGHT_HI IOMEM(OMAP1510_FPGA_BASE + 0x207)
125#define INNOVATOR_FPGA_LED_GRN_LO (OMAP1510_FPGA_BASE + 0x208) 125#define INNOVATOR_FPGA_LED_GRN_LO IOMEM(OMAP1510_FPGA_BASE + 0x208)
126#define INNOVATOR_FPGA_LED_GRN_HI (OMAP1510_FPGA_BASE + 0x209) 126#define INNOVATOR_FPGA_LED_GRN_HI IOMEM(OMAP1510_FPGA_BASE + 0x209)
127#define INNOVATOR_FPGA_LED_RED_LO (OMAP1510_FPGA_BASE + 0x20a) 127#define INNOVATOR_FPGA_LED_RED_LO IOMEM(OMAP1510_FPGA_BASE + 0x20a)
128#define INNOVATOR_FPGA_LED_RED_HI (OMAP1510_FPGA_BASE + 0x20b) 128#define INNOVATOR_FPGA_LED_RED_HI IOMEM(OMAP1510_FPGA_BASE + 0x20b)
129#define INNOVATOR_FPGA_CAM_USB_CONTROL (OMAP1510_FPGA_BASE + 0x20c) 129#define INNOVATOR_FPGA_CAM_USB_CONTROL IOMEM(OMAP1510_FPGA_BASE + 0x20c)
130#define INNOVATOR_FPGA_EXP_CONTROL (OMAP1510_FPGA_BASE + 0x20d) 130#define INNOVATOR_FPGA_EXP_CONTROL IOMEM(OMAP1510_FPGA_BASE + 0x20d)
131#define INNOVATOR_FPGA_ISR2 (OMAP1510_FPGA_BASE + 0x20e) 131#define INNOVATOR_FPGA_ISR2 IOMEM(OMAP1510_FPGA_BASE + 0x20e)
132#define INNOVATOR_FPGA_IMR2 (OMAP1510_FPGA_BASE + 0x210) 132#define INNOVATOR_FPGA_IMR2 IOMEM(OMAP1510_FPGA_BASE + 0x210)
133 133
134#define OMAP1510_FPGA_ETHR_START (OMAP1510_FPGA_START + 0x300) 134#define OMAP1510_FPGA_ETHR_START (OMAP1510_FPGA_START + 0x300)
135 135
diff --git a/arch/arm/plat-omap/include/plat/hardware.h b/arch/arm/plat-omap/include/plat/hardware.h
index d5b26adfb890..e87efe1499b8 100644
--- a/arch/arm/plat-omap/include/plat/hardware.h
+++ b/arch/arm/plat-omap/include/plat/hardware.h
@@ -286,5 +286,6 @@
286#include <plat/omap24xx.h> 286#include <plat/omap24xx.h>
287#include <plat/omap34xx.h> 287#include <plat/omap34xx.h>
288#include <plat/omap44xx.h> 288#include <plat/omap44xx.h>
289#include <plat/ti816x.h>
289 290
290#endif /* __ASM_ARCH_OMAP_HARDWARE_H */ 291#endif /* __ASM_ARCH_OMAP_HARDWARE_H */
diff --git a/arch/arm/plat-omap/include/plat/io.h b/arch/arm/plat-omap/include/plat/io.h
index ef4106c13183..d72ec85c97e6 100644
--- a/arch/arm/plat-omap/include/plat/io.h
+++ b/arch/arm/plat-omap/include/plat/io.h
@@ -259,7 +259,7 @@ struct omap_sdrc_params;
259extern void omap1_map_common_io(void); 259extern void omap1_map_common_io(void);
260extern void omap1_init_common_hw(void); 260extern void omap1_init_common_hw(void);
261 261
262#ifdef CONFIG_ARCH_OMAP2420 262#ifdef CONFIG_SOC_OMAP2420
263extern void omap242x_map_common_io(void); 263extern void omap242x_map_common_io(void);
264#else 264#else
265static inline void omap242x_map_common_io(void) 265static inline void omap242x_map_common_io(void)
@@ -267,7 +267,7 @@ static inline void omap242x_map_common_io(void)
267} 267}
268#endif 268#endif
269 269
270#ifdef CONFIG_ARCH_OMAP2430 270#ifdef CONFIG_SOC_OMAP2430
271extern void omap243x_map_common_io(void); 271extern void omap243x_map_common_io(void);
272#else 272#else
273static inline void omap243x_map_common_io(void) 273static inline void omap243x_map_common_io(void)
@@ -283,6 +283,14 @@ static inline void omap34xx_map_common_io(void)
283} 283}
284#endif 284#endif
285 285
286#ifdef CONFIG_SOC_OMAPTI816X
287extern void omapti816x_map_common_io(void);
288#else
289static inline void omapti816x_map_common_io(void)
290{
291}
292#endif
293
286#ifdef CONFIG_ARCH_OMAP4 294#ifdef CONFIG_ARCH_OMAP4
287extern void omap44xx_map_common_io(void); 295extern void omap44xx_map_common_io(void);
288#else 296#else
diff --git a/arch/arm/plat-omap/include/plat/mcbsp.h b/arch/arm/plat-omap/include/plat/mcbsp.h
index b87d83ccd545..6ecf1051e5f4 100644
--- a/arch/arm/plat-omap/include/plat/mcbsp.h
+++ b/arch/arm/plat-omap/include/plat/mcbsp.h
@@ -106,13 +106,6 @@ static struct platform_device omap_mcbsp##port_nr = { \
106#define OMAP_MCBSP_REG_XCCR 0x00 106#define OMAP_MCBSP_REG_XCCR 0x00
107#define OMAP_MCBSP_REG_RCCR 0x00 107#define OMAP_MCBSP_REG_RCCR 0x00
108 108
109#define AUDIO_MCBSP_DATAWRITE (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DXR1)
110#define AUDIO_MCBSP_DATAREAD (OMAP1510_MCBSP1_BASE + OMAP_MCBSP_REG_DRR1)
111
112#define AUDIO_MCBSP OMAP_MCBSP1
113#define AUDIO_DMA_TX OMAP_DMA_MCBSP1_TX
114#define AUDIO_DMA_RX OMAP_DMA_MCBSP1_RX
115
116#else 109#else
117 110
118#define OMAP_MCBSP_REG_DRR2 0x00 111#define OMAP_MCBSP_REG_DRR2 0x00
@@ -168,13 +161,6 @@ static struct platform_device omap_mcbsp##port_nr = { \
168#define OMAP_ST_REG_SFIRCR 0x28 161#define OMAP_ST_REG_SFIRCR 0x28
169#define OMAP_ST_REG_SSELCR 0x2C 162#define OMAP_ST_REG_SSELCR 0x2C
170 163
171#define AUDIO_MCBSP_DATAWRITE (OMAP24XX_MCBSP2_BASE + OMAP_MCBSP_REG_DXR1)
172#define AUDIO_MCBSP_DATAREAD (OMAP24XX_MCBSP2_BASE + OMAP_MCBSP_REG_DRR1)
173
174#define AUDIO_MCBSP OMAP_MCBSP2
175#define AUDIO_DMA_TX OMAP24XX_DMA_MCBSP2_TX
176#define AUDIO_DMA_RX OMAP24XX_DMA_MCBSP2_RX
177
178#endif 164#endif
179 165
180/************************** McBSP SPCR1 bit definitions ***********************/ 166/************************** McBSP SPCR1 bit definitions ***********************/
diff --git a/arch/arm/plat-omap/include/plat/multi.h b/arch/arm/plat-omap/include/plat/multi.h
index ffd909fa5287..999ffba2690c 100644
--- a/arch/arm/plat-omap/include/plat/multi.h
+++ b/arch/arm/plat-omap/include/plat/multi.h
@@ -66,7 +66,7 @@
66# error "OMAP1 and OMAP2PLUS can't be selected at the same time" 66# error "OMAP1 and OMAP2PLUS can't be selected at the same time"
67# endif 67# endif
68#endif 68#endif
69#ifdef CONFIG_ARCH_OMAP2420 69#ifdef CONFIG_SOC_OMAP2420
70# ifdef OMAP_NAME 70# ifdef OMAP_NAME
71# undef MULTI_OMAP2 71# undef MULTI_OMAP2
72# define MULTI_OMAP2 72# define MULTI_OMAP2
@@ -74,7 +74,7 @@
74# define OMAP_NAME omap2420 74# define OMAP_NAME omap2420
75# endif 75# endif
76#endif 76#endif
77#ifdef CONFIG_ARCH_OMAP2430 77#ifdef CONFIG_SOC_OMAP2430
78# ifdef OMAP_NAME 78# ifdef OMAP_NAME
79# undef MULTI_OMAP2 79# undef MULTI_OMAP2
80# define MULTI_OMAP2 80# define MULTI_OMAP2
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h
index 1eee85a8abb3..fedd82971c9e 100644
--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
@@ -539,7 +539,6 @@ int omap_hwmod_init(struct omap_hwmod **ohs);
539struct omap_hwmod *omap_hwmod_lookup(const char *name); 539struct omap_hwmod *omap_hwmod_lookup(const char *name);
540int omap_hwmod_for_each(int (*fn)(struct omap_hwmod *oh, void *data), 540int omap_hwmod_for_each(int (*fn)(struct omap_hwmod *oh, void *data),
541 void *data); 541 void *data);
542int omap_hwmod_late_init(void);
543 542
544int omap_hwmod_enable(struct omap_hwmod *oh); 543int omap_hwmod_enable(struct omap_hwmod *oh);
545int _omap_hwmod_enable(struct omap_hwmod *oh); 544int _omap_hwmod_enable(struct omap_hwmod *oh);
diff --git a/arch/arm/plat-omap/include/plat/prcm.h b/arch/arm/plat-omap/include/plat/prcm.h
index 2fdf8c80d390..267f43bb2a4e 100644
--- a/arch/arm/plat-omap/include/plat/prcm.h
+++ b/arch/arm/plat-omap/include/plat/prcm.h
@@ -28,7 +28,6 @@
28#define __ASM_ARM_ARCH_OMAP_PRCM_H 28#define __ASM_ARM_ARCH_OMAP_PRCM_H
29 29
30u32 omap_prcm_get_reset_sources(void); 30u32 omap_prcm_get_reset_sources(void);
31void omap_prcm_arch_reset(char mode, const char *cmd);
32int omap2_cm_wait_idlest(void __iomem *reg, u32 mask, u8 idlest, 31int omap2_cm_wait_idlest(void __iomem *reg, u32 mask, u8 idlest,
33 const char *name); 32 const char *name);
34 33
diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h
index cec5d56db2eb..8061695aa523 100644
--- a/arch/arm/plat-omap/include/plat/serial.h
+++ b/arch/arm/plat-omap/include/plat/serial.h
@@ -51,6 +51,11 @@
51#define OMAP4_UART3_BASE 0x48020000 51#define OMAP4_UART3_BASE 0x48020000
52#define OMAP4_UART4_BASE 0x4806e000 52#define OMAP4_UART4_BASE 0x4806e000
53 53
54/* TI816X serial ports */
55#define TI816X_UART1_BASE 0x48020000
56#define TI816X_UART2_BASE 0x48022000
57#define TI816X_UART3_BASE 0x48024000
58
54/* External port on Zoom2/3 */ 59/* External port on Zoom2/3 */
55#define ZOOM_UART_BASE 0x10000000 60#define ZOOM_UART_BASE 0x10000000
56#define ZOOM_UART_VIRT 0xfa400000 61#define ZOOM_UART_VIRT 0xfa400000
@@ -81,6 +86,9 @@
81#define OMAP4UART2 OMAP2UART2 86#define OMAP4UART2 OMAP2UART2
82#define OMAP4UART3 43 87#define OMAP4UART3 43
83#define OMAP4UART4 44 88#define OMAP4UART4 44
89#define TI816XUART1 81
90#define TI816XUART2 82
91#define TI816XUART3 83
84#define ZOOM_UART 95 /* Only on zoom2/3 */ 92#define ZOOM_UART 95 /* Only on zoom2/3 */
85 93
86/* This is only used by 8250.c for omap1510 */ 94/* This is only used by 8250.c for omap1510 */
@@ -96,7 +104,6 @@
96 104
97struct omap_board_data; 105struct omap_board_data;
98 106
99extern void __init omap_serial_early_init(void);
100extern void omap_serial_init(void); 107extern void omap_serial_init(void);
101extern void omap_serial_init_port(struct omap_board_data *bdata); 108extern void omap_serial_init_port(struct omap_board_data *bdata);
102extern int omap_uart_can_sleep(void); 109extern int omap_uart_can_sleep(void);
diff --git a/arch/arm/plat-omap/include/plat/system.h b/arch/arm/plat-omap/include/plat/system.h
index d0a119f735b4..c5fa9e929009 100644
--- a/arch/arm/plat-omap/include/plat/system.h
+++ b/arch/arm/plat-omap/include/plat/system.h
@@ -4,48 +4,14 @@
4 */ 4 */
5#ifndef __ASM_ARCH_SYSTEM_H 5#ifndef __ASM_ARCH_SYSTEM_H
6#define __ASM_ARCH_SYSTEM_H 6#define __ASM_ARCH_SYSTEM_H
7#include <linux/clk.h>
8 7
9#include <asm/mach-types.h> 8#include <asm/proc-fns.h>
10#include <mach/hardware.h>
11
12#include <plat/prcm.h>
13
14#ifndef CONFIG_MACH_VOICEBLUE
15#define voiceblue_reset() do {} while (0)
16#else
17extern void voiceblue_reset(void);
18#endif
19 9
20static inline void arch_idle(void) 10static inline void arch_idle(void)
21{ 11{
22 cpu_do_idle(); 12 cpu_do_idle();
23} 13}
24 14
25static inline void omap1_arch_reset(char mode, const char *cmd) 15extern void (*arch_reset)(char, const char *);
26{
27 /*
28 * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28
29 * "Global Software Reset Affects Traffic Controller Frequency".
30 */
31 if (cpu_is_omap5912()) {
32 omap_writew(omap_readw(DPLL_CTL) & ~(1 << 4),
33 DPLL_CTL);
34 omap_writew(0x8, ARM_RSTCT1);
35 }
36
37 if (machine_is_voiceblue())
38 voiceblue_reset();
39 else
40 omap_writew(1, ARM_RSTCT1);
41}
42
43static inline void arch_reset(char mode, const char *cmd)
44{
45 if (!cpu_class_is_omap2())
46 omap1_arch_reset(mode, cmd);
47 else
48 omap_prcm_arch_reset(mode, cmd);
49}
50 16
51#endif 17#endif
diff --git a/arch/arm/plat-omap/include/plat/ti816x.h b/arch/arm/plat-omap/include/plat/ti816x.h
new file mode 100644
index 000000000000..50510f5dda1e
--- /dev/null
+++ b/arch/arm/plat-omap/include/plat/ti816x.h
@@ -0,0 +1,27 @@
1/*
2 * This file contains the address data for various TI816X modules.
3 *
4 * Copyright (C) 2010 Texas Instruments, Inc. - http://www.ti.com/
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation version 2.
9 *
10 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
11 * kind, whether express or implied; without even the implied warranty
12 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#ifndef __ASM_ARCH_TI816X_H
17#define __ASM_ARCH_TI816X_H
18
19#define L4_SLOW_TI816X_BASE 0x48000000
20
21#define TI816X_SCM_BASE 0x48140000
22#define TI816X_CTRL_BASE TI816X_SCM_BASE
23#define TI816X_PRCM_BASE 0x48180000
24
25#define TI816X_ARM_INTC_BASE 0x48200000
26
27#endif /* __ASM_ARCH_TI816X_H */
diff --git a/arch/arm/plat-omap/include/plat/uncompress.h b/arch/arm/plat-omap/include/plat/uncompress.h
index ad98b85cae21..30b891c4a93f 100644
--- a/arch/arm/plat-omap/include/plat/uncompress.h
+++ b/arch/arm/plat-omap/include/plat/uncompress.h
@@ -93,6 +93,10 @@ static inline void flush(void)
93#define DEBUG_LL_ZOOM(mach) \ 93#define DEBUG_LL_ZOOM(mach) \
94 _DEBUG_LL_ENTRY(mach, ZOOM_UART_BASE, ZOOM_PORT_SHIFT, ZOOM_UART) 94 _DEBUG_LL_ENTRY(mach, ZOOM_UART_BASE, ZOOM_PORT_SHIFT, ZOOM_UART)
95 95
96#define DEBUG_LL_TI816X(p, mach) \
97 _DEBUG_LL_ENTRY(mach, TI816X_UART##p##_BASE, OMAP_PORT_SHIFT, \
98 TI816XUART##p)
99
96static inline void __arch_decomp_setup(unsigned long arch_id) 100static inline void __arch_decomp_setup(unsigned long arch_id)
97{ 101{
98 int port = 0; 102 int port = 0;
@@ -166,6 +170,9 @@ static inline void __arch_decomp_setup(unsigned long arch_id)
166 DEBUG_LL_ZOOM(omap_zoom2); 170 DEBUG_LL_ZOOM(omap_zoom2);
167 DEBUG_LL_ZOOM(omap_zoom3); 171 DEBUG_LL_ZOOM(omap_zoom3);
168 172
173 /* TI8168 base boards using UART3 */
174 DEBUG_LL_TI816X(3, ti8168evm);
175
169 } while (0); 176 } while (0);
170} 177}
171 178
diff --git a/arch/arm/plat-omap/io.c b/arch/arm/plat-omap/io.c
index f1295fafcd31..f1ecfa9fc61d 100644
--- a/arch/arm/plat-omap/io.c
+++ b/arch/arm/plat-omap/io.c
@@ -85,7 +85,10 @@ void __iomem *omap_ioremap(unsigned long p, size_t size, unsigned int type)
85 } 85 }
86#endif 86#endif
87#ifdef CONFIG_ARCH_OMAP3 87#ifdef CONFIG_ARCH_OMAP3
88 if (cpu_is_omap34xx()) { 88 if (cpu_is_ti816x()) {
89 if (BETWEEN(p, L4_34XX_PHYS, L4_34XX_SIZE))
90 return XLATE(p, L4_34XX_PHYS, L4_34XX_VIRT);
91 } else if (cpu_is_omap34xx()) {
89 if (BETWEEN(p, L3_34XX_PHYS, L3_34XX_SIZE)) 92 if (BETWEEN(p, L3_34XX_PHYS, L3_34XX_SIZE))
90 return XLATE(p, L3_34XX_PHYS, L3_34XX_VIRT); 93 return XLATE(p, L3_34XX_PHYS, L3_34XX_VIRT);
91 if (BETWEEN(p, L4_34XX_PHYS, L4_34XX_SIZE)) 94 if (BETWEEN(p, L4_34XX_PHYS, L4_34XX_SIZE))
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
index e26e50487d60..aedcb3be4e66 100644
--- a/arch/arm/plat-omap/sram.c
+++ b/arch/arm/plat-omap/sram.c
@@ -312,7 +312,7 @@ u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass)
312} 312}
313#endif 313#endif
314 314
315#ifdef CONFIG_ARCH_OMAP2420 315#ifdef CONFIG_SOC_OMAP2420
316static int __init omap242x_sram_init(void) 316static int __init omap242x_sram_init(void)
317{ 317{
318 _omap2_sram_ddr_init = omap_sram_push(omap242x_sram_ddr_init, 318 _omap2_sram_ddr_init = omap_sram_push(omap242x_sram_ddr_init,
@@ -333,7 +333,7 @@ static inline int omap242x_sram_init(void)
333} 333}
334#endif 334#endif
335 335
336#ifdef CONFIG_ARCH_OMAP2430 336#ifdef CONFIG_SOC_OMAP2430
337static int __init omap243x_sram_init(void) 337static int __init omap243x_sram_init(void)
338{ 338{
339 _omap2_sram_ddr_init = omap_sram_push(omap243x_sram_ddr_init, 339 _omap2_sram_ddr_init = omap_sram_push(omap243x_sram_ddr_init,
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index afe8c6fa166a..54f91321749a 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -225,7 +225,7 @@ config MMC_OMAP
225 225
226config MMC_OMAP_HS 226config MMC_OMAP_HS
227 tristate "TI OMAP High Speed Multimedia Card Interface support" 227 tristate "TI OMAP High Speed Multimedia Card Interface support"
228 depends on ARCH_OMAP2430 || ARCH_OMAP3 || ARCH_OMAP4 228 depends on SOC_OMAP2430 || ARCH_OMAP3 || ARCH_OMAP4
229 help 229 help
230 This selects the TI OMAP High Speed Multimedia card Interface. 230 This selects the TI OMAP High Speed Multimedia card Interface.
231 If you have an OMAP2430 or OMAP3 board or OMAP4 board with a 231 If you have an OMAP2430 or OMAP3 board or OMAP4 board with a
diff --git a/drivers/spi/omap2_mcspi.c b/drivers/spi/omap2_mcspi.c
index abb1ffbf3d20..f076cc5c6fb0 100644
--- a/drivers/spi/omap2_mcspi.c
+++ b/drivers/spi/omap2_mcspi.c
@@ -1111,7 +1111,7 @@ static u8 __initdata spi2_txdma_id[] = {
1111 OMAP24XX_DMA_SPI2_TX1, 1111 OMAP24XX_DMA_SPI2_TX1,
1112}; 1112};
1113 1113
1114#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) \ 1114#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_ARCH_OMAP3) \
1115 || defined(CONFIG_ARCH_OMAP4) 1115 || defined(CONFIG_ARCH_OMAP4)
1116static u8 __initdata spi3_rxdma_id[] = { 1116static u8 __initdata spi3_rxdma_id[] = {
1117 OMAP24XX_DMA_SPI3_RX0, 1117 OMAP24XX_DMA_SPI3_RX0,
@@ -1154,7 +1154,7 @@ static int __init omap2_mcspi_probe(struct platform_device *pdev)
1154 txdma_id = spi2_txdma_id; 1154 txdma_id = spi2_txdma_id;
1155 num_chipselect = 2; 1155 num_chipselect = 2;
1156 break; 1156 break;
1157#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) \ 1157#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_ARCH_OMAP3) \
1158 || defined(CONFIG_ARCH_OMAP4) 1158 || defined(CONFIG_ARCH_OMAP4)
1159 case 3: 1159 case 3:
1160 rxdma_id = spi3_rxdma_id; 1160 rxdma_id = spi3_rxdma_id;
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index 54a8bd1047d6..538fafa05b46 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -1530,7 +1530,7 @@ static int __init musb_core_init(u16 musb_type, struct musb *musb)
1530 1530
1531/*-------------------------------------------------------------------------*/ 1531/*-------------------------------------------------------------------------*/
1532 1532
1533#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430) || \ 1533#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_SOC_OMAP3430) || \
1534 defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_ARCH_U8500) || \ 1534 defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_ARCH_U8500) || \
1535 defined(CONFIG_ARCH_U5500) 1535 defined(CONFIG_ARCH_U5500)
1536 1536
diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
index d74a8113ae74..07075c39a3d5 100644
--- a/drivers/usb/musb/musb_core.h
+++ b/drivers/usb/musb/musb_core.h
@@ -212,8 +212,8 @@ enum musb_g_ep0_state {
212 * directly with the "flat" model, or after setting up an index register. 212 * directly with the "flat" model, or after setting up an index register.
213 */ 213 */
214 214
215#if defined(CONFIG_ARCH_DAVINCI) || defined(CONFIG_ARCH_OMAP2430) \ 215#if defined(CONFIG_ARCH_DAVINCI) || defined(CONFIG_SOC_OMAP2430) \
216 || defined(CONFIG_ARCH_OMAP3430) || defined(CONFIG_BLACKFIN) \ 216 || defined(CONFIG_SOC_OMAP3430) || defined(CONFIG_BLACKFIN) \
217 || defined(CONFIG_ARCH_OMAP4) 217 || defined(CONFIG_ARCH_OMAP4)
218/* REVISIT indexed access seemed to 218/* REVISIT indexed access seemed to
219 * misbehave (on DaVinci) for at least peripheral IN ... 219 * misbehave (on DaVinci) for at least peripheral IN ...
@@ -358,7 +358,7 @@ struct musb_csr_regs {
358 358
359struct musb_context_registers { 359struct musb_context_registers {
360 360
361#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \ 361#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \
362 defined(CONFIG_ARCH_OMAP4) 362 defined(CONFIG_ARCH_OMAP4)
363 u32 otg_sysconfig, otg_forcestandby; 363 u32 otg_sysconfig, otg_forcestandby;
364#endif 364#endif
diff --git a/drivers/usb/musb/musbhsdma.h b/drivers/usb/musb/musbhsdma.h
index 21056c924c74..320fd4afb93f 100644
--- a/drivers/usb/musb/musbhsdma.h
+++ b/drivers/usb/musb/musbhsdma.h
@@ -31,7 +31,7 @@
31 * 31 *
32 */ 32 */
33 33
34#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430) 34#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_SOC_OMAP3430)
35#include "omap2430.h" 35#include "omap2430.h"
36#endif 36#endif
37 37
diff --git a/drivers/usb/otg/isp1301_omap.c b/drivers/usb/otg/isp1301_omap.c
index e00fa1b22ecd..8c6fdef61d1c 100644
--- a/drivers/usb/otg/isp1301_omap.c
+++ b/drivers/usb/otg/isp1301_omap.c
@@ -1510,7 +1510,7 @@ isp1301_start_hnp(struct otg_transceiver *dev)
1510 1510
1511/*-------------------------------------------------------------------------*/ 1511/*-------------------------------------------------------------------------*/
1512 1512
1513static int __init 1513static int __devinit
1514isp1301_probe(struct i2c_client *i2c, const struct i2c_device_id *id) 1514isp1301_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
1515{ 1515{
1516 int status; 1516 int status;
diff --git a/drivers/w1/masters/Kconfig b/drivers/w1/masters/Kconfig
index 80b3b123dd7f..7c608c5ccf84 100644
--- a/drivers/w1/masters/Kconfig
+++ b/drivers/w1/masters/Kconfig
@@ -60,7 +60,7 @@ config W1_MASTER_GPIO
60 60
61config HDQ_MASTER_OMAP 61config HDQ_MASTER_OMAP
62 tristate "OMAP HDQ driver" 62 tristate "OMAP HDQ driver"
63 depends on ARCH_OMAP2430 || ARCH_OMAP3 63 depends on SOC_OMAP2430 || ARCH_OMAP3
64 help 64 help
65 Say Y here if you want support for the 1-wire or HDQ Interface 65 Say Y here if you want support for the 1-wire or HDQ Interface
66 on an OMAP processor. 66 on an OMAP processor.
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
index d203f4da18a0..ede6afde7d2f 100644
--- a/sound/soc/omap/omap-mcbsp.c
+++ b/sound/soc/omap/omap-mcbsp.c
@@ -92,7 +92,7 @@ static const unsigned long omap1_mcbsp_port[][2] = {};
92static const int omap24xx_dma_reqs[][2] = { 92static const int omap24xx_dma_reqs[][2] = {
93 { OMAP24XX_DMA_MCBSP1_TX, OMAP24XX_DMA_MCBSP1_RX }, 93 { OMAP24XX_DMA_MCBSP1_TX, OMAP24XX_DMA_MCBSP1_RX },
94 { OMAP24XX_DMA_MCBSP2_TX, OMAP24XX_DMA_MCBSP2_RX }, 94 { OMAP24XX_DMA_MCBSP2_TX, OMAP24XX_DMA_MCBSP2_RX },
95#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) 95#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_ARCH_OMAP3)
96 { OMAP24XX_DMA_MCBSP3_TX, OMAP24XX_DMA_MCBSP3_RX }, 96 { OMAP24XX_DMA_MCBSP3_TX, OMAP24XX_DMA_MCBSP3_RX },
97 { OMAP24XX_DMA_MCBSP4_TX, OMAP24XX_DMA_MCBSP4_RX }, 97 { OMAP24XX_DMA_MCBSP4_TX, OMAP24XX_DMA_MCBSP4_RX },
98 { OMAP24XX_DMA_MCBSP5_TX, OMAP24XX_DMA_MCBSP5_RX }, 98 { OMAP24XX_DMA_MCBSP5_TX, OMAP24XX_DMA_MCBSP5_RX },
@@ -113,7 +113,7 @@ static const int omap44xx_dma_reqs[][2] = {
113static const int omap44xx_dma_reqs[][2] = {}; 113static const int omap44xx_dma_reqs[][2] = {};
114#endif 114#endif
115 115
116#if defined(CONFIG_ARCH_OMAP2420) 116#if defined(CONFIG_SOC_OMAP2420)
117static const unsigned long omap2420_mcbsp_port[][2] = { 117static const unsigned long omap2420_mcbsp_port[][2] = {
118 { OMAP24XX_MCBSP1_BASE + OMAP_MCBSP_REG_DXR1, 118 { OMAP24XX_MCBSP1_BASE + OMAP_MCBSP_REG_DXR1,
119 OMAP24XX_MCBSP1_BASE + OMAP_MCBSP_REG_DRR1 }, 119 OMAP24XX_MCBSP1_BASE + OMAP_MCBSP_REG_DRR1 },
@@ -124,7 +124,7 @@ static const unsigned long omap2420_mcbsp_port[][2] = {
124static const unsigned long omap2420_mcbsp_port[][2] = {}; 124static const unsigned long omap2420_mcbsp_port[][2] = {};
125#endif 125#endif
126 126
127#if defined(CONFIG_ARCH_OMAP2430) 127#if defined(CONFIG_SOC_OMAP2430)
128static const unsigned long omap2430_mcbsp_port[][2] = { 128static const unsigned long omap2430_mcbsp_port[][2] = {
129 { OMAP24XX_MCBSP1_BASE + OMAP_MCBSP_REG_DXR, 129 { OMAP24XX_MCBSP1_BASE + OMAP_MCBSP_REG_DXR,
130 OMAP24XX_MCBSP1_BASE + OMAP_MCBSP_REG_DRR }, 130 OMAP24XX_MCBSP1_BASE + OMAP_MCBSP_REG_DRR },
diff --git a/sound/soc/omap/omap-mcbsp.h b/sound/soc/omap/omap-mcbsp.h
index 110c106611d3..37dc7211ed3f 100644
--- a/sound/soc/omap/omap-mcbsp.h
+++ b/sound/soc/omap/omap-mcbsp.h
@@ -43,7 +43,7 @@ enum omap_mcbsp_div {
43 OMAP_MCBSP_CLKGDV, /* Sample rate generator divider */ 43 OMAP_MCBSP_CLKGDV, /* Sample rate generator divider */
44}; 44};
45 45
46#if defined(CONFIG_ARCH_OMAP2420) 46#if defined(CONFIG_SOC_OMAP2420)
47#define NUM_LINKS 2 47#define NUM_LINKS 2
48#endif 48#endif
49#if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) 49#if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX)
@@ -54,7 +54,7 @@ enum omap_mcbsp_div {
54#undef NUM_LINKS 54#undef NUM_LINKS
55#define NUM_LINKS 4 55#define NUM_LINKS 4
56#endif 56#endif
57#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) 57#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_OMAP2430)
58#undef NUM_LINKS 58#undef NUM_LINKS
59#define NUM_LINKS 5 59#define NUM_LINKS 5
60#endif 60#endif