diff options
Diffstat (limited to 'arch/arm/mach-omap1')
46 files changed, 1540 insertions, 117 deletions
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index e255164ff087..a8fce3ccc707 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
@@ -625,7 +625,6 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)") | |||
625 | .atag_offset = 0x100, | 625 | .atag_offset = 0x100, |
626 | .map_io = ams_delta_map_io, | 626 | .map_io = ams_delta_map_io, |
627 | .init_early = omap1_init_early, | 627 | .init_early = omap1_init_early, |
628 | .reserve = omap_reserve, | ||
629 | .init_irq = omap1_init_irq, | 628 | .init_irq = omap1_init_irq, |
630 | .init_machine = ams_delta_init, | 629 | .init_machine = ams_delta_init, |
631 | .init_late = ams_delta_init_late, | 630 | .init_late = ams_delta_init_late, |
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index 4b6de70c47a6..8b5800acf726 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c | |||
@@ -27,10 +27,10 @@ | |||
27 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | 29 | ||
30 | #include <plat/tc.h> | 30 | #include <mach/tc.h> |
31 | #include <mach/mux.h> | 31 | #include <mach/mux.h> |
32 | #include <mach/flash.h> | 32 | #include <mach/flash.h> |
33 | #include <plat/fpga.h> | 33 | #include <../plat-omap/fpga.h> |
34 | #include <linux/platform_data/keypad-omap.h> | 34 | #include <linux/platform_data/keypad-omap.h> |
35 | 35 | ||
36 | #include <mach/hardware.h> | 36 | #include <mach/hardware.h> |
@@ -123,9 +123,9 @@ static struct resource smc91x_resources[] = { | |||
123 | 123 | ||
124 | static void __init fsample_init_smc91x(void) | 124 | static void __init fsample_init_smc91x(void) |
125 | { | 125 | { |
126 | fpga_write(1, H2P2_DBG_FPGA_LAN_RESET); | 126 | __raw_writeb(1, H2P2_DBG_FPGA_LAN_RESET); |
127 | mdelay(50); | 127 | mdelay(50); |
128 | fpga_write(fpga_read(H2P2_DBG_FPGA_LAN_RESET) & ~1, | 128 | __raw_writeb(__raw_readb(H2P2_DBG_FPGA_LAN_RESET) & ~1, |
129 | H2P2_DBG_FPGA_LAN_RESET); | 129 | H2P2_DBG_FPGA_LAN_RESET); |
130 | mdelay(50); | 130 | mdelay(50); |
131 | } | 131 | } |
@@ -362,7 +362,6 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample") | |||
362 | .atag_offset = 0x100, | 362 | .atag_offset = 0x100, |
363 | .map_io = omap_fsample_map_io, | 363 | .map_io = omap_fsample_map_io, |
364 | .init_early = omap1_init_early, | 364 | .init_early = omap1_init_early, |
365 | .reserve = omap_reserve, | ||
366 | .init_irq = omap1_init_irq, | 365 | .init_irq = omap1_init_irq, |
367 | .init_machine = omap_fsample_init, | 366 | .init_machine = omap_fsample_init, |
368 | .init_late = omap1_init_late, | 367 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c index 4ec579fdd366..608e7d2a2778 100644 --- a/arch/arm/mach-omap1/board-generic.c +++ b/arch/arm/mach-omap1/board-generic.c | |||
@@ -81,7 +81,6 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710") | |||
81 | .atag_offset = 0x100, | 81 | .atag_offset = 0x100, |
82 | .map_io = omap16xx_map_io, | 82 | .map_io = omap16xx_map_io, |
83 | .init_early = omap1_init_early, | 83 | .init_early = omap1_init_early, |
84 | .reserve = omap_reserve, | ||
85 | .init_irq = omap1_init_irq, | 84 | .init_irq = omap1_init_irq, |
86 | .init_machine = omap_generic_init, | 85 | .init_machine = omap_generic_init, |
87 | .init_late = omap1_init_late, | 86 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-h2-mmc.c b/arch/arm/mach-omap1/board-h2-mmc.c index e1362ce48497..7119ef28e0ad 100644 --- a/arch/arm/mach-omap1/board-h2-mmc.c +++ b/arch/arm/mach-omap1/board-h2-mmc.c | |||
@@ -13,12 +13,11 @@ | |||
13 | */ | 13 | */ |
14 | #include <linux/gpio.h> | 14 | #include <linux/gpio.h> |
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | 16 | #include <linux/platform_data/gpio-omap.h> | |
17 | #include <linux/i2c/tps65010.h> | 17 | #include <linux/i2c/tps65010.h> |
18 | 18 | ||
19 | #include <plat/mmc.h> | ||
20 | |||
21 | #include "board-h2.h" | 19 | #include "board-h2.h" |
20 | #include "mmc.h" | ||
22 | 21 | ||
23 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) | 22 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) |
24 | 23 | ||
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 376f7f29ef77..9134b646f01b 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -39,8 +39,8 @@ | |||
39 | #include <asm/mach/map.h> | 39 | #include <asm/mach/map.h> |
40 | 40 | ||
41 | #include <mach/mux.h> | 41 | #include <mach/mux.h> |
42 | #include <plat/dma.h> | 42 | #include <plat-omap/dma-omap.h> |
43 | #include <plat/tc.h> | 43 | #include <mach/tc.h> |
44 | #include <mach/irda.h> | 44 | #include <mach/irda.h> |
45 | #include <linux/platform_data/keypad-omap.h> | 45 | #include <linux/platform_data/keypad-omap.h> |
46 | #include <mach/flash.h> | 46 | #include <mach/flash.h> |
@@ -50,6 +50,7 @@ | |||
50 | 50 | ||
51 | #include "common.h" | 51 | #include "common.h" |
52 | #include "board-h2.h" | 52 | #include "board-h2.h" |
53 | #include "dma.h" | ||
53 | 54 | ||
54 | /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ | 55 | /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ |
55 | #define OMAP1610_ETHR_START 0x04000300 | 56 | #define OMAP1610_ETHR_START 0x04000300 |
@@ -458,7 +459,6 @@ MACHINE_START(OMAP_H2, "TI-H2") | |||
458 | .atag_offset = 0x100, | 459 | .atag_offset = 0x100, |
459 | .map_io = omap16xx_map_io, | 460 | .map_io = omap16xx_map_io, |
460 | .init_early = omap1_init_early, | 461 | .init_early = omap1_init_early, |
461 | .reserve = omap_reserve, | ||
462 | .init_irq = omap1_init_irq, | 462 | .init_irq = omap1_init_irq, |
463 | .init_machine = h2_init, | 463 | .init_machine = h2_init, |
464 | .init_late = omap1_init_late, | 464 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-h3-mmc.c b/arch/arm/mach-omap1/board-h3-mmc.c index c74daace8cd6..17d77914d769 100644 --- a/arch/arm/mach-omap1/board-h3-mmc.c +++ b/arch/arm/mach-omap1/board-h3-mmc.c | |||
@@ -16,9 +16,8 @@ | |||
16 | 16 | ||
17 | #include <linux/i2c/tps65010.h> | 17 | #include <linux/i2c/tps65010.h> |
18 | 18 | ||
19 | #include <plat/mmc.h> | ||
20 | |||
21 | #include "board-h3.h" | 19 | #include "board-h3.h" |
20 | #include "mmc.h" | ||
22 | 21 | ||
23 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) | 22 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) |
24 | 23 | ||
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index ededdb7ef28c..bf213d1d8075 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -41,9 +41,9 @@ | |||
41 | #include <asm/mach/map.h> | 41 | #include <asm/mach/map.h> |
42 | 42 | ||
43 | #include <mach/mux.h> | 43 | #include <mach/mux.h> |
44 | #include <plat/tc.h> | 44 | #include <mach/tc.h> |
45 | #include <linux/platform_data/keypad-omap.h> | 45 | #include <linux/platform_data/keypad-omap.h> |
46 | #include <plat/dma.h> | 46 | #include <plat-omap/dma-omap.h> |
47 | #include <mach/flash.h> | 47 | #include <mach/flash.h> |
48 | 48 | ||
49 | #include <mach/hardware.h> | 49 | #include <mach/hardware.h> |
@@ -452,7 +452,6 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") | |||
452 | .atag_offset = 0x100, | 452 | .atag_offset = 0x100, |
453 | .map_io = omap16xx_map_io, | 453 | .map_io = omap16xx_map_io, |
454 | .init_early = omap1_init_early, | 454 | .init_early = omap1_init_early, |
455 | .reserve = omap_reserve, | ||
456 | .init_irq = omap1_init_irq, | 455 | .init_irq = omap1_init_irq, |
457 | .init_machine = h3_init, | 456 | .init_machine = h3_init, |
458 | .init_late = omap1_init_late, | 457 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c index 87ab2086ef96..356f816c84a6 100644 --- a/arch/arm/mach-omap1/board-htcherald.c +++ b/arch/arm/mach-omap1/board-htcherald.c | |||
@@ -43,7 +43,7 @@ | |||
43 | #include <asm/mach/arch.h> | 43 | #include <asm/mach/arch.h> |
44 | 44 | ||
45 | #include <mach/omap7xx.h> | 45 | #include <mach/omap7xx.h> |
46 | #include <plat/mmc.h> | 46 | #include "mmc.h" |
47 | 47 | ||
48 | #include <mach/irqs.h> | 48 | #include <mach/irqs.h> |
49 | #include <mach/usb.h> | 49 | #include <mach/usb.h> |
@@ -600,7 +600,6 @@ MACHINE_START(HERALD, "HTC Herald") | |||
600 | .atag_offset = 0x100, | 600 | .atag_offset = 0x100, |
601 | .map_io = htcherald_map_io, | 601 | .map_io = htcherald_map_io, |
602 | .init_early = omap1_init_early, | 602 | .init_early = omap1_init_early, |
603 | .reserve = omap_reserve, | ||
604 | .init_irq = omap1_init_irq, | 603 | .init_irq = omap1_init_irq, |
605 | .init_machine = htcherald_init, | 604 | .init_machine = htcherald_init, |
606 | .init_late = omap1_init_late, | 605 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index db5f7d2976e7..c66334f22471 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -33,16 +33,16 @@ | |||
33 | 33 | ||
34 | #include <mach/mux.h> | 34 | #include <mach/mux.h> |
35 | #include <mach/flash.h> | 35 | #include <mach/flash.h> |
36 | #include <plat/fpga.h> | 36 | #include <../plat-omap/fpga.h> |
37 | #include <plat/tc.h> | 37 | #include <mach/tc.h> |
38 | #include <linux/platform_data/keypad-omap.h> | 38 | #include <linux/platform_data/keypad-omap.h> |
39 | #include <plat/mmc.h> | ||
40 | 39 | ||
41 | #include <mach/hardware.h> | 40 | #include <mach/hardware.h> |
42 | #include <mach/usb.h> | 41 | #include <mach/usb.h> |
43 | 42 | ||
44 | #include "iomap.h" | 43 | #include "iomap.h" |
45 | #include "common.h" | 44 | #include "common.h" |
45 | #include "mmc.h" | ||
46 | 46 | ||
47 | /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ | 47 | /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ |
48 | #define INNOVATOR1610_ETHR_START 0x04000300 | 48 | #define INNOVATOR1610_ETHR_START 0x04000300 |
@@ -215,7 +215,7 @@ static struct platform_device *innovator1510_devices[] __initdata = { | |||
215 | 215 | ||
216 | static int innovator_get_pendown_state(void) | 216 | static int innovator_get_pendown_state(void) |
217 | { | 217 | { |
218 | return !(fpga_read(OMAP1510_FPGA_TOUCHSCREEN) & (1 << 5)); | 218 | return !(__raw_readb(OMAP1510_FPGA_TOUCHSCREEN) & (1 << 5)); |
219 | } | 219 | } |
220 | 220 | ||
221 | static const struct ads7846_platform_data innovator1510_ts_info = { | 221 | static const struct ads7846_platform_data innovator1510_ts_info = { |
@@ -279,7 +279,7 @@ static struct platform_device *innovator1610_devices[] __initdata = { | |||
279 | static void __init innovator_init_smc91x(void) | 279 | static void __init innovator_init_smc91x(void) |
280 | { | 280 | { |
281 | if (cpu_is_omap1510()) { | 281 | if (cpu_is_omap1510()) { |
282 | fpga_write(fpga_read(OMAP1510_FPGA_RST) & ~1, | 282 | __raw_writeb(__raw_readb(OMAP1510_FPGA_RST) & ~1, |
283 | OMAP1510_FPGA_RST); | 283 | OMAP1510_FPGA_RST); |
284 | udelay(750); | 284 | udelay(750); |
285 | } else { | 285 | } else { |
@@ -335,10 +335,10 @@ static int mmc_set_power(struct device *dev, int slot, int power_on, | |||
335 | int vdd) | 335 | int vdd) |
336 | { | 336 | { |
337 | if (power_on) | 337 | if (power_on) |
338 | fpga_write(fpga_read(OMAP1510_FPGA_POWER) | (1 << 3), | 338 | __raw_writeb(__raw_readb(OMAP1510_FPGA_POWER) | (1 << 3), |
339 | OMAP1510_FPGA_POWER); | 339 | OMAP1510_FPGA_POWER); |
340 | else | 340 | else |
341 | fpga_write(fpga_read(OMAP1510_FPGA_POWER) & ~(1 << 3), | 341 | __raw_writeb(__raw_readb(OMAP1510_FPGA_POWER) & ~(1 << 3), |
342 | OMAP1510_FPGA_POWER); | 342 | OMAP1510_FPGA_POWER); |
343 | 343 | ||
344 | return 0; | 344 | return 0; |
@@ -390,14 +390,14 @@ static void __init innovator_init(void) | |||
390 | omap_cfg_reg(UART3_TX); | 390 | omap_cfg_reg(UART3_TX); |
391 | omap_cfg_reg(UART3_RX); | 391 | omap_cfg_reg(UART3_RX); |
392 | 392 | ||
393 | reg = fpga_read(OMAP1510_FPGA_POWER); | 393 | reg = __raw_readb(OMAP1510_FPGA_POWER); |
394 | reg |= OMAP1510_FPGA_PCR_COM1_EN; | 394 | reg |= OMAP1510_FPGA_PCR_COM1_EN; |
395 | fpga_write(reg, OMAP1510_FPGA_POWER); | 395 | __raw_writeb(reg, OMAP1510_FPGA_POWER); |
396 | udelay(10); | 396 | udelay(10); |
397 | 397 | ||
398 | reg = fpga_read(OMAP1510_FPGA_POWER); | 398 | reg = __raw_readb(OMAP1510_FPGA_POWER); |
399 | reg |= OMAP1510_FPGA_PCR_COM2_EN; | 399 | reg |= OMAP1510_FPGA_PCR_COM2_EN; |
400 | fpga_write(reg, OMAP1510_FPGA_POWER); | 400 | __raw_writeb(reg, OMAP1510_FPGA_POWER); |
401 | udelay(10); | 401 | udelay(10); |
402 | 402 | ||
403 | platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices)); | 403 | platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices)); |
@@ -437,6 +437,7 @@ static void __init innovator_init(void) | |||
437 | */ | 437 | */ |
438 | static void __init innovator_map_io(void) | 438 | static void __init innovator_map_io(void) |
439 | { | 439 | { |
440 | #ifdef CONFIG_ARCH_OMAP15XX | ||
440 | omap15xx_map_io(); | 441 | omap15xx_map_io(); |
441 | 442 | ||
442 | iotable_init(innovator1510_io_desc, ARRAY_SIZE(innovator1510_io_desc)); | 443 | iotable_init(innovator1510_io_desc, ARRAY_SIZE(innovator1510_io_desc)); |
@@ -444,9 +445,10 @@ static void __init innovator_map_io(void) | |||
444 | 445 | ||
445 | /* Dump the Innovator FPGA rev early - useful info for support. */ | 446 | /* Dump the Innovator FPGA rev early - useful info for support. */ |
446 | pr_debug("Innovator FPGA Rev %d.%d Board Rev %d\n", | 447 | pr_debug("Innovator FPGA Rev %d.%d Board Rev %d\n", |
447 | fpga_read(OMAP1510_FPGA_REV_HIGH), | 448 | __raw_readb(OMAP1510_FPGA_REV_HIGH), |
448 | fpga_read(OMAP1510_FPGA_REV_LOW), | 449 | __raw_readb(OMAP1510_FPGA_REV_LOW), |
449 | fpga_read(OMAP1510_FPGA_BOARD_REV)); | 450 | __raw_readb(OMAP1510_FPGA_BOARD_REV)); |
451 | #endif | ||
450 | } | 452 | } |
451 | 453 | ||
452 | MACHINE_START(OMAP_INNOVATOR, "TI-Innovator") | 454 | MACHINE_START(OMAP_INNOVATOR, "TI-Innovator") |
@@ -454,7 +456,6 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator") | |||
454 | .atag_offset = 0x100, | 456 | .atag_offset = 0x100, |
455 | .map_io = innovator_map_io, | 457 | .map_io = innovator_map_io, |
456 | .init_early = omap1_init_early, | 458 | .init_early = omap1_init_early, |
457 | .reserve = omap_reserve, | ||
458 | .init_irq = omap1_init_irq, | 459 | .init_irq = omap1_init_irq, |
459 | .init_machine = innovator_init, | 460 | .init_machine = innovator_init, |
460 | .init_late = omap1_init_late, | 461 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index 7d5c06d6a52a..3e8ead67e459 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -29,13 +29,13 @@ | |||
29 | #include <asm/mach/map.h> | 29 | #include <asm/mach/map.h> |
30 | 30 | ||
31 | #include <mach/mux.h> | 31 | #include <mach/mux.h> |
32 | #include <plat/mmc.h> | ||
33 | #include <plat/clock.h> | ||
34 | 32 | ||
35 | #include <mach/hardware.h> | 33 | #include <mach/hardware.h> |
36 | #include <mach/usb.h> | 34 | #include <mach/usb.h> |
37 | 35 | ||
38 | #include "common.h" | 36 | #include "common.h" |
37 | #include "clock.h" | ||
38 | #include "mmc.h" | ||
39 | 39 | ||
40 | #define ADS7846_PENDOWN_GPIO 15 | 40 | #define ADS7846_PENDOWN_GPIO 15 |
41 | 41 | ||
@@ -251,7 +251,6 @@ MACHINE_START(NOKIA770, "Nokia 770") | |||
251 | .atag_offset = 0x100, | 251 | .atag_offset = 0x100, |
252 | .map_io = omap16xx_map_io, | 252 | .map_io = omap16xx_map_io, |
253 | .init_early = omap1_init_early, | 253 | .init_early = omap1_init_early, |
254 | .reserve = omap_reserve, | ||
255 | .init_irq = omap1_init_irq, | 254 | .init_irq = omap1_init_irq, |
256 | .init_machine = omap_nokia770_init, | 255 | .init_machine = omap_nokia770_init, |
257 | .init_late = omap1_init_late, | 256 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index 5973945a8741..872ea47cd28a 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -48,7 +48,7 @@ | |||
48 | 48 | ||
49 | #include <mach/flash.h> | 49 | #include <mach/flash.h> |
50 | #include <mach/mux.h> | 50 | #include <mach/mux.h> |
51 | #include <plat/tc.h> | 51 | #include <mach/tc.h> |
52 | 52 | ||
53 | #include <mach/hardware.h> | 53 | #include <mach/hardware.h> |
54 | #include <mach/usb.h> | 54 | #include <mach/usb.h> |
@@ -606,7 +606,6 @@ MACHINE_START(OMAP_OSK, "TI-OSK") | |||
606 | .atag_offset = 0x100, | 606 | .atag_offset = 0x100, |
607 | .map_io = omap16xx_map_io, | 607 | .map_io = omap16xx_map_io, |
608 | .init_early = omap1_init_early, | 608 | .init_early = omap1_init_early, |
609 | .reserve = omap_reserve, | ||
610 | .init_irq = omap1_init_irq, | 609 | .init_irq = omap1_init_irq, |
611 | .init_machine = osk_init, | 610 | .init_machine = osk_init, |
612 | .init_late = omap1_init_late, | 611 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 1c578d58923a..584b6fab894b 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -36,8 +36,8 @@ | |||
36 | 36 | ||
37 | #include <mach/flash.h> | 37 | #include <mach/flash.h> |
38 | #include <mach/mux.h> | 38 | #include <mach/mux.h> |
39 | #include <plat/tc.h> | 39 | #include <mach/tc.h> |
40 | #include <plat/dma.h> | 40 | #include <plat-omap/dma-omap.h> |
41 | #include <mach/irda.h> | 41 | #include <mach/irda.h> |
42 | #include <linux/platform_data/keypad-omap.h> | 42 | #include <linux/platform_data/keypad-omap.h> |
43 | 43 | ||
@@ -45,6 +45,7 @@ | |||
45 | #include <mach/usb.h> | 45 | #include <mach/usb.h> |
46 | 46 | ||
47 | #include "common.h" | 47 | #include "common.h" |
48 | #include "dma.h" | ||
48 | 49 | ||
49 | #define PALMTE_USBDETECT_GPIO 0 | 50 | #define PALMTE_USBDETECT_GPIO 0 |
50 | #define PALMTE_USB_OR_DC_GPIO 1 | 51 | #define PALMTE_USB_OR_DC_GPIO 1 |
@@ -264,7 +265,6 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E") | |||
264 | .atag_offset = 0x100, | 265 | .atag_offset = 0x100, |
265 | .map_io = omap15xx_map_io, | 266 | .map_io = omap15xx_map_io, |
266 | .init_early = omap1_init_early, | 267 | .init_early = omap1_init_early, |
267 | .reserve = omap_reserve, | ||
268 | .init_irq = omap1_init_irq, | 268 | .init_irq = omap1_init_irq, |
269 | .init_machine = omap_palmte_init, | 269 | .init_machine = omap_palmte_init, |
270 | .init_late = omap1_init_late, | 270 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 97158095083c..fbc986bfe69e 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c | |||
@@ -28,16 +28,16 @@ | |||
28 | #include <linux/spi/spi.h> | 28 | #include <linux/spi/spi.h> |
29 | #include <linux/spi/ads7846.h> | 29 | #include <linux/spi/ads7846.h> |
30 | #include <linux/platform_data/omap1_bl.h> | 30 | #include <linux/platform_data/omap1_bl.h> |
31 | #include <linux/platform_data/leds-omap.h> | ||
31 | 32 | ||
32 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 34 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/map.h> | 35 | #include <asm/mach/map.h> |
35 | 36 | ||
36 | #include <plat/led.h> | ||
37 | #include <mach/flash.h> | 37 | #include <mach/flash.h> |
38 | #include <mach/mux.h> | 38 | #include <mach/mux.h> |
39 | #include <plat/dma.h> | 39 | #include <plat-omap/dma-omap.h> |
40 | #include <plat/tc.h> | 40 | #include <mach/tc.h> |
41 | #include <mach/irda.h> | 41 | #include <mach/irda.h> |
42 | #include <linux/platform_data/keypad-omap.h> | 42 | #include <linux/platform_data/keypad-omap.h> |
43 | 43 | ||
@@ -45,6 +45,7 @@ | |||
45 | #include <mach/usb.h> | 45 | #include <mach/usb.h> |
46 | 46 | ||
47 | #include "common.h" | 47 | #include "common.h" |
48 | #include "dma.h" | ||
48 | 49 | ||
49 | #define PALMTT_USBDETECT_GPIO 0 | 50 | #define PALMTT_USBDETECT_GPIO 0 |
50 | #define PALMTT_CABLE_GPIO 1 | 51 | #define PALMTT_CABLE_GPIO 1 |
@@ -310,7 +311,6 @@ MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T") | |||
310 | .atag_offset = 0x100, | 311 | .atag_offset = 0x100, |
311 | .map_io = omap15xx_map_io, | 312 | .map_io = omap15xx_map_io, |
312 | .init_early = omap1_init_early, | 313 | .init_early = omap1_init_early, |
313 | .reserve = omap_reserve, | ||
314 | .init_irq = omap1_init_irq, | 314 | .init_irq = omap1_init_irq, |
315 | .init_machine = omap_palmtt_init, | 315 | .init_machine = omap_palmtt_init, |
316 | .init_late = omap1_init_late, | 316 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index e311032e7eeb..60d917a93763 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -38,8 +38,8 @@ | |||
38 | 38 | ||
39 | #include <mach/flash.h> | 39 | #include <mach/flash.h> |
40 | #include <mach/mux.h> | 40 | #include <mach/mux.h> |
41 | #include <plat/dma.h> | 41 | #include <plat-omap/dma-omap.h> |
42 | #include <plat/tc.h> | 42 | #include <mach/tc.h> |
43 | #include <mach/irda.h> | 43 | #include <mach/irda.h> |
44 | #include <linux/platform_data/keypad-omap.h> | 44 | #include <linux/platform_data/keypad-omap.h> |
45 | 45 | ||
@@ -47,6 +47,7 @@ | |||
47 | #include <mach/usb.h> | 47 | #include <mach/usb.h> |
48 | 48 | ||
49 | #include "common.h" | 49 | #include "common.h" |
50 | #include "dma.h" | ||
50 | 51 | ||
51 | #define PALMZ71_USBDETECT_GPIO 0 | 52 | #define PALMZ71_USBDETECT_GPIO 0 |
52 | #define PALMZ71_PENIRQ_GPIO 6 | 53 | #define PALMZ71_PENIRQ_GPIO 6 |
@@ -326,7 +327,6 @@ MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71") | |||
326 | .atag_offset = 0x100, | 327 | .atag_offset = 0x100, |
327 | .map_io = omap15xx_map_io, | 328 | .map_io = omap15xx_map_io, |
328 | .init_early = omap1_init_early, | 329 | .init_early = omap1_init_early, |
329 | .reserve = omap_reserve, | ||
330 | .init_irq = omap1_init_irq, | 330 | .init_irq = omap1_init_irq, |
331 | .init_machine = omap_palmz71_init, | 331 | .init_machine = omap_palmz71_init, |
332 | .init_late = omap1_init_late, | 332 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index 198b05417bfc..030bd48727be 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
@@ -28,9 +28,9 @@ | |||
28 | #include <asm/mach/arch.h> | 28 | #include <asm/mach/arch.h> |
29 | #include <asm/mach/map.h> | 29 | #include <asm/mach/map.h> |
30 | 30 | ||
31 | #include <plat/tc.h> | 31 | #include <mach/tc.h> |
32 | #include <mach/mux.h> | 32 | #include <mach/mux.h> |
33 | #include <plat/fpga.h> | 33 | #include <../plat-omap/fpga.h> |
34 | #include <mach/flash.h> | 34 | #include <mach/flash.h> |
35 | 35 | ||
36 | #include <mach/hardware.h> | 36 | #include <mach/hardware.h> |
@@ -231,9 +231,9 @@ static struct omap_lcd_config perseus2_lcd_config __initdata = { | |||
231 | 231 | ||
232 | static void __init perseus2_init_smc91x(void) | 232 | static void __init perseus2_init_smc91x(void) |
233 | { | 233 | { |
234 | fpga_write(1, H2P2_DBG_FPGA_LAN_RESET); | 234 | __raw_writeb(1, H2P2_DBG_FPGA_LAN_RESET); |
235 | mdelay(50); | 235 | mdelay(50); |
236 | fpga_write(fpga_read(H2P2_DBG_FPGA_LAN_RESET) & ~1, | 236 | __raw_writeb(__raw_readb(H2P2_DBG_FPGA_LAN_RESET) & ~1, |
237 | H2P2_DBG_FPGA_LAN_RESET); | 237 | H2P2_DBG_FPGA_LAN_RESET); |
238 | mdelay(50); | 238 | mdelay(50); |
239 | } | 239 | } |
@@ -324,7 +324,6 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2") | |||
324 | .atag_offset = 0x100, | 324 | .atag_offset = 0x100, |
325 | .map_io = omap_perseus2_map_io, | 325 | .map_io = omap_perseus2_map_io, |
326 | .init_early = omap1_init_early, | 326 | .init_early = omap1_init_early, |
327 | .reserve = omap_reserve, | ||
328 | .init_irq = omap1_init_irq, | 327 | .init_irq = omap1_init_irq, |
329 | .init_machine = omap_perseus2_init, | 328 | .init_machine = omap_perseus2_init, |
330 | .init_late = omap1_init_late, | 329 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-sx1-mmc.c b/arch/arm/mach-omap1/board-sx1-mmc.c index 5932d56e17bf..4fcf19c78a08 100644 --- a/arch/arm/mach-omap1/board-sx1-mmc.c +++ b/arch/arm/mach-omap1/board-sx1-mmc.c | |||
@@ -16,9 +16,10 @@ | |||
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | 17 | ||
18 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
19 | #include <plat/mmc.h> | ||
20 | #include <mach/board-sx1.h> | 19 | #include <mach/board-sx1.h> |
21 | 20 | ||
21 | #include "mmc.h" | ||
22 | |||
22 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) | 23 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) |
23 | 24 | ||
24 | static int mmc_set_power(struct device *dev, int slot, int power_on, | 25 | static int mmc_set_power(struct device *dev, int slot, int power_on, |
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 13bf2cc56814..1ebc7e08d6e5 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c | |||
@@ -36,15 +36,16 @@ | |||
36 | 36 | ||
37 | #include <mach/flash.h> | 37 | #include <mach/flash.h> |
38 | #include <mach/mux.h> | 38 | #include <mach/mux.h> |
39 | #include <plat/dma.h> | 39 | #include <plat-omap/dma-omap.h> |
40 | #include <mach/irda.h> | 40 | #include <mach/irda.h> |
41 | #include <plat/tc.h> | 41 | #include <mach/tc.h> |
42 | #include <mach/board-sx1.h> | 42 | #include <mach/board-sx1.h> |
43 | 43 | ||
44 | #include <mach/hardware.h> | 44 | #include <mach/hardware.h> |
45 | #include <mach/usb.h> | 45 | #include <mach/usb.h> |
46 | 46 | ||
47 | #include "common.h" | 47 | #include "common.h" |
48 | #include "dma.h" | ||
48 | 49 | ||
49 | /* Write to I2C device */ | 50 | /* Write to I2C device */ |
50 | int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value) | 51 | int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value) |
@@ -403,7 +404,6 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1") | |||
403 | .atag_offset = 0x100, | 404 | .atag_offset = 0x100, |
404 | .map_io = omap15xx_map_io, | 405 | .map_io = omap15xx_map_io, |
405 | .init_early = omap1_init_early, | 406 | .init_early = omap1_init_early, |
406 | .reserve = omap_reserve, | ||
407 | .init_irq = omap1_init_irq, | 407 | .init_irq = omap1_init_irq, |
408 | .init_machine = omap_sx1_init, | 408 | .init_machine = omap_sx1_init, |
409 | .init_late = omap1_init_late, | 409 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index ad75e3411d46..abf705f49b19 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -34,7 +34,7 @@ | |||
34 | #include <mach/board-voiceblue.h> | 34 | #include <mach/board-voiceblue.h> |
35 | #include <mach/flash.h> | 35 | #include <mach/flash.h> |
36 | #include <mach/mux.h> | 36 | #include <mach/mux.h> |
37 | #include <plat/tc.h> | 37 | #include <mach/tc.h> |
38 | 38 | ||
39 | #include <mach/hardware.h> | 39 | #include <mach/hardware.h> |
40 | #include <mach/usb.h> | 40 | #include <mach/usb.h> |
@@ -286,7 +286,6 @@ MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910") | |||
286 | .atag_offset = 0x100, | 286 | .atag_offset = 0x100, |
287 | .map_io = omap15xx_map_io, | 287 | .map_io = omap15xx_map_io, |
288 | .init_early = omap1_init_early, | 288 | .init_early = omap1_init_early, |
289 | .reserve = omap_reserve, | ||
290 | .init_irq = omap1_init_irq, | 289 | .init_irq = omap1_init_irq, |
291 | .init_machine = voiceblue_init, | 290 | .init_machine = voiceblue_init, |
292 | .init_late = omap1_init_late, | 291 | .init_late = omap1_init_late, |
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c index 638f4070fc70..931f3f6d396b 100644 --- a/arch/arm/mach-omap1/clock.c +++ b/arch/arm/mach-omap1/clock.c | |||
@@ -12,6 +12,7 @@ | |||
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/export.h> | ||
15 | #include <linux/list.h> | 16 | #include <linux/list.h> |
16 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
17 | #include <linux/err.h> | 18 | #include <linux/err.h> |
@@ -21,14 +22,11 @@ | |||
21 | 22 | ||
22 | #include <asm/mach-types.h> | 23 | #include <asm/mach-types.h> |
23 | 24 | ||
24 | #include <plat/cpu.h> | ||
25 | #include <plat/usb.h> | ||
26 | #include <plat/clock.h> | ||
27 | #include <plat/sram.h> | ||
28 | #include <plat/clkdev_omap.h> | ||
29 | |||
30 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
31 | 26 | ||
27 | #include "../plat-omap/sram.h" | ||
28 | |||
29 | #include "soc.h" | ||
32 | #include "iomap.h" | 30 | #include "iomap.h" |
33 | #include "clock.h" | 31 | #include "clock.h" |
34 | #include "opp.h" | 32 | #include "opp.h" |
@@ -36,6 +34,10 @@ | |||
36 | __u32 arm_idlect1_mask; | 34 | __u32 arm_idlect1_mask; |
37 | struct clk *api_ck_p, *ck_dpll1_p, *ck_ref_p; | 35 | struct clk *api_ck_p, *ck_dpll1_p, *ck_ref_p; |
38 | 36 | ||
37 | static LIST_HEAD(clocks); | ||
38 | static DEFINE_MUTEX(clocks_mutex); | ||
39 | static DEFINE_SPINLOCK(clockfw_lock); | ||
40 | |||
39 | /* | 41 | /* |
40 | * Omap1 specific clock functions | 42 | * Omap1 specific clock functions |
41 | */ | 43 | */ |
@@ -607,3 +609,497 @@ void omap1_clk_disable_unused(struct clk *clk) | |||
607 | } | 609 | } |
608 | 610 | ||
609 | #endif | 611 | #endif |
612 | |||
613 | |||
614 | int clk_enable(struct clk *clk) | ||
615 | { | ||
616 | unsigned long flags; | ||
617 | int ret; | ||
618 | |||
619 | if (clk == NULL || IS_ERR(clk)) | ||
620 | return -EINVAL; | ||
621 | |||
622 | spin_lock_irqsave(&clockfw_lock, flags); | ||
623 | ret = omap1_clk_enable(clk); | ||
624 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
625 | |||
626 | return ret; | ||
627 | } | ||
628 | EXPORT_SYMBOL(clk_enable); | ||
629 | |||
630 | void clk_disable(struct clk *clk) | ||
631 | { | ||
632 | unsigned long flags; | ||
633 | |||
634 | if (clk == NULL || IS_ERR(clk)) | ||
635 | return; | ||
636 | |||
637 | spin_lock_irqsave(&clockfw_lock, flags); | ||
638 | if (clk->usecount == 0) { | ||
639 | pr_err("Trying disable clock %s with 0 usecount\n", | ||
640 | clk->name); | ||
641 | WARN_ON(1); | ||
642 | goto out; | ||
643 | } | ||
644 | |||
645 | omap1_clk_disable(clk); | ||
646 | |||
647 | out: | ||
648 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
649 | } | ||
650 | EXPORT_SYMBOL(clk_disable); | ||
651 | |||
652 | unsigned long clk_get_rate(struct clk *clk) | ||
653 | { | ||
654 | unsigned long flags; | ||
655 | unsigned long ret; | ||
656 | |||
657 | if (clk == NULL || IS_ERR(clk)) | ||
658 | return 0; | ||
659 | |||
660 | spin_lock_irqsave(&clockfw_lock, flags); | ||
661 | ret = clk->rate; | ||
662 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
663 | |||
664 | return ret; | ||
665 | } | ||
666 | EXPORT_SYMBOL(clk_get_rate); | ||
667 | |||
668 | /* | ||
669 | * Optional clock functions defined in include/linux/clk.h | ||
670 | */ | ||
671 | |||
672 | long clk_round_rate(struct clk *clk, unsigned long rate) | ||
673 | { | ||
674 | unsigned long flags; | ||
675 | long ret; | ||
676 | |||
677 | if (clk == NULL || IS_ERR(clk)) | ||
678 | return 0; | ||
679 | |||
680 | spin_lock_irqsave(&clockfw_lock, flags); | ||
681 | ret = omap1_clk_round_rate(clk, rate); | ||
682 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
683 | |||
684 | return ret; | ||
685 | } | ||
686 | EXPORT_SYMBOL(clk_round_rate); | ||
687 | |||
688 | int clk_set_rate(struct clk *clk, unsigned long rate) | ||
689 | { | ||
690 | unsigned long flags; | ||
691 | int ret = -EINVAL; | ||
692 | |||
693 | if (clk == NULL || IS_ERR(clk)) | ||
694 | return ret; | ||
695 | |||
696 | spin_lock_irqsave(&clockfw_lock, flags); | ||
697 | ret = omap1_clk_set_rate(clk, rate); | ||
698 | if (ret == 0) | ||
699 | propagate_rate(clk); | ||
700 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
701 | |||
702 | return ret; | ||
703 | } | ||
704 | EXPORT_SYMBOL(clk_set_rate); | ||
705 | |||
706 | int clk_set_parent(struct clk *clk, struct clk *parent) | ||
707 | { | ||
708 | WARN_ONCE(1, "clk_set_parent() not implemented for OMAP1\n"); | ||
709 | |||
710 | return -EINVAL; | ||
711 | } | ||
712 | EXPORT_SYMBOL(clk_set_parent); | ||
713 | |||
714 | struct clk *clk_get_parent(struct clk *clk) | ||
715 | { | ||
716 | return clk->parent; | ||
717 | } | ||
718 | EXPORT_SYMBOL(clk_get_parent); | ||
719 | |||
720 | /* | ||
721 | * OMAP specific clock functions shared between omap1 and omap2 | ||
722 | */ | ||
723 | |||
724 | int __initdata mpurate; | ||
725 | |||
726 | /* | ||
727 | * By default we use the rate set by the bootloader. | ||
728 | * You can override this with mpurate= cmdline option. | ||
729 | */ | ||
730 | static int __init omap_clk_setup(char *str) | ||
731 | { | ||
732 | get_option(&str, &mpurate); | ||
733 | |||
734 | if (!mpurate) | ||
735 | return 1; | ||
736 | |||
737 | if (mpurate < 1000) | ||
738 | mpurate *= 1000000; | ||
739 | |||
740 | return 1; | ||
741 | } | ||
742 | __setup("mpurate=", omap_clk_setup); | ||
743 | |||
744 | /* Used for clocks that always have same value as the parent clock */ | ||
745 | unsigned long followparent_recalc(struct clk *clk) | ||
746 | { | ||
747 | return clk->parent->rate; | ||
748 | } | ||
749 | |||
750 | /* | ||
751 | * Used for clocks that have the same value as the parent clock, | ||
752 | * divided by some factor | ||
753 | */ | ||
754 | unsigned long omap_fixed_divisor_recalc(struct clk *clk) | ||
755 | { | ||
756 | WARN_ON(!clk->fixed_div); | ||
757 | |||
758 | return clk->parent->rate / clk->fixed_div; | ||
759 | } | ||
760 | |||
761 | void clk_reparent(struct clk *child, struct clk *parent) | ||
762 | { | ||
763 | list_del_init(&child->sibling); | ||
764 | if (parent) | ||
765 | list_add(&child->sibling, &parent->children); | ||
766 | child->parent = parent; | ||
767 | |||
768 | /* now do the debugfs renaming to reattach the child | ||
769 | to the proper parent */ | ||
770 | } | ||
771 | |||
772 | /* Propagate rate to children */ | ||
773 | void propagate_rate(struct clk *tclk) | ||
774 | { | ||
775 | struct clk *clkp; | ||
776 | |||
777 | list_for_each_entry(clkp, &tclk->children, sibling) { | ||
778 | if (clkp->recalc) | ||
779 | clkp->rate = clkp->recalc(clkp); | ||
780 | propagate_rate(clkp); | ||
781 | } | ||
782 | } | ||
783 | |||
784 | static LIST_HEAD(root_clks); | ||
785 | |||
786 | /** | ||
787 | * recalculate_root_clocks - recalculate and propagate all root clocks | ||
788 | * | ||
789 | * Recalculates all root clocks (clocks with no parent), which if the | ||
790 | * clock's .recalc is set correctly, should also propagate their rates. | ||
791 | * Called at init. | ||
792 | */ | ||
793 | void recalculate_root_clocks(void) | ||
794 | { | ||
795 | struct clk *clkp; | ||
796 | |||
797 | list_for_each_entry(clkp, &root_clks, sibling) { | ||
798 | if (clkp->recalc) | ||
799 | clkp->rate = clkp->recalc(clkp); | ||
800 | propagate_rate(clkp); | ||
801 | } | ||
802 | } | ||
803 | |||
804 | /** | ||
805 | * clk_preinit - initialize any fields in the struct clk before clk init | ||
806 | * @clk: struct clk * to initialize | ||
807 | * | ||
808 | * Initialize any struct clk fields needed before normal clk initialization | ||
809 | * can run. No return value. | ||
810 | */ | ||
811 | void clk_preinit(struct clk *clk) | ||
812 | { | ||
813 | INIT_LIST_HEAD(&clk->children); | ||
814 | } | ||
815 | |||
816 | int clk_register(struct clk *clk) | ||
817 | { | ||
818 | if (clk == NULL || IS_ERR(clk)) | ||
819 | return -EINVAL; | ||
820 | |||
821 | /* | ||
822 | * trap out already registered clocks | ||
823 | */ | ||
824 | if (clk->node.next || clk->node.prev) | ||
825 | return 0; | ||
826 | |||
827 | mutex_lock(&clocks_mutex); | ||
828 | if (clk->parent) | ||
829 | list_add(&clk->sibling, &clk->parent->children); | ||
830 | else | ||
831 | list_add(&clk->sibling, &root_clks); | ||
832 | |||
833 | list_add(&clk->node, &clocks); | ||
834 | if (clk->init) | ||
835 | clk->init(clk); | ||
836 | mutex_unlock(&clocks_mutex); | ||
837 | |||
838 | return 0; | ||
839 | } | ||
840 | EXPORT_SYMBOL(clk_register); | ||
841 | |||
842 | void clk_unregister(struct clk *clk) | ||
843 | { | ||
844 | if (clk == NULL || IS_ERR(clk)) | ||
845 | return; | ||
846 | |||
847 | mutex_lock(&clocks_mutex); | ||
848 | list_del(&clk->sibling); | ||
849 | list_del(&clk->node); | ||
850 | mutex_unlock(&clocks_mutex); | ||
851 | } | ||
852 | EXPORT_SYMBOL(clk_unregister); | ||
853 | |||
854 | void clk_enable_init_clocks(void) | ||
855 | { | ||
856 | struct clk *clkp; | ||
857 | |||
858 | list_for_each_entry(clkp, &clocks, node) | ||
859 | if (clkp->flags & ENABLE_ON_INIT) | ||
860 | clk_enable(clkp); | ||
861 | } | ||
862 | |||
863 | /** | ||
864 | * omap_clk_get_by_name - locate OMAP struct clk by its name | ||
865 | * @name: name of the struct clk to locate | ||
866 | * | ||
867 | * Locate an OMAP struct clk by its name. Assumes that struct clk | ||
868 | * names are unique. Returns NULL if not found or a pointer to the | ||
869 | * struct clk if found. | ||
870 | */ | ||
871 | struct clk *omap_clk_get_by_name(const char *name) | ||
872 | { | ||
873 | struct clk *c; | ||
874 | struct clk *ret = NULL; | ||
875 | |||
876 | mutex_lock(&clocks_mutex); | ||
877 | |||
878 | list_for_each_entry(c, &clocks, node) { | ||
879 | if (!strcmp(c->name, name)) { | ||
880 | ret = c; | ||
881 | break; | ||
882 | } | ||
883 | } | ||
884 | |||
885 | mutex_unlock(&clocks_mutex); | ||
886 | |||
887 | return ret; | ||
888 | } | ||
889 | |||
890 | int omap_clk_enable_autoidle_all(void) | ||
891 | { | ||
892 | struct clk *c; | ||
893 | unsigned long flags; | ||
894 | |||
895 | spin_lock_irqsave(&clockfw_lock, flags); | ||
896 | |||
897 | list_for_each_entry(c, &clocks, node) | ||
898 | if (c->ops->allow_idle) | ||
899 | c->ops->allow_idle(c); | ||
900 | |||
901 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
902 | |||
903 | return 0; | ||
904 | } | ||
905 | |||
906 | int omap_clk_disable_autoidle_all(void) | ||
907 | { | ||
908 | struct clk *c; | ||
909 | unsigned long flags; | ||
910 | |||
911 | spin_lock_irqsave(&clockfw_lock, flags); | ||
912 | |||
913 | list_for_each_entry(c, &clocks, node) | ||
914 | if (c->ops->deny_idle) | ||
915 | c->ops->deny_idle(c); | ||
916 | |||
917 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
918 | |||
919 | return 0; | ||
920 | } | ||
921 | |||
922 | /* | ||
923 | * Low level helpers | ||
924 | */ | ||
925 | static int clkll_enable_null(struct clk *clk) | ||
926 | { | ||
927 | return 0; | ||
928 | } | ||
929 | |||
930 | static void clkll_disable_null(struct clk *clk) | ||
931 | { | ||
932 | } | ||
933 | |||
934 | const struct clkops clkops_null = { | ||
935 | .enable = clkll_enable_null, | ||
936 | .disable = clkll_disable_null, | ||
937 | }; | ||
938 | |||
939 | /* | ||
940 | * Dummy clock | ||
941 | * | ||
942 | * Used for clock aliases that are needed on some OMAPs, but not others | ||
943 | */ | ||
944 | struct clk dummy_ck = { | ||
945 | .name = "dummy", | ||
946 | .ops = &clkops_null, | ||
947 | }; | ||
948 | |||
949 | /* | ||
950 | * | ||
951 | */ | ||
952 | |||
953 | #ifdef CONFIG_OMAP_RESET_CLOCKS | ||
954 | /* | ||
955 | * Disable any unused clocks left on by the bootloader | ||
956 | */ | ||
957 | static int __init clk_disable_unused(void) | ||
958 | { | ||
959 | struct clk *ck; | ||
960 | unsigned long flags; | ||
961 | |||
962 | pr_info("clock: disabling unused clocks to save power\n"); | ||
963 | |||
964 | spin_lock_irqsave(&clockfw_lock, flags); | ||
965 | list_for_each_entry(ck, &clocks, node) { | ||
966 | if (ck->ops == &clkops_null) | ||
967 | continue; | ||
968 | |||
969 | if (ck->usecount > 0 || !ck->enable_reg) | ||
970 | continue; | ||
971 | |||
972 | omap1_clk_disable_unused(ck); | ||
973 | } | ||
974 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
975 | |||
976 | return 0; | ||
977 | } | ||
978 | late_initcall(clk_disable_unused); | ||
979 | late_initcall(omap_clk_enable_autoidle_all); | ||
980 | #endif | ||
981 | |||
982 | #if defined(CONFIG_PM_DEBUG) && defined(CONFIG_DEBUG_FS) | ||
983 | /* | ||
984 | * debugfs support to trace clock tree hierarchy and attributes | ||
985 | */ | ||
986 | |||
987 | #include <linux/debugfs.h> | ||
988 | #include <linux/seq_file.h> | ||
989 | |||
990 | static struct dentry *clk_debugfs_root; | ||
991 | |||
992 | static int clk_dbg_show_summary(struct seq_file *s, void *unused) | ||
993 | { | ||
994 | struct clk *c; | ||
995 | struct clk *pa; | ||
996 | |||
997 | mutex_lock(&clocks_mutex); | ||
998 | seq_printf(s, "%-30s %-30s %-10s %s\n", | ||
999 | "clock-name", "parent-name", "rate", "use-count"); | ||
1000 | |||
1001 | list_for_each_entry(c, &clocks, node) { | ||
1002 | pa = c->parent; | ||
1003 | seq_printf(s, "%-30s %-30s %-10lu %d\n", | ||
1004 | c->name, pa ? pa->name : "none", c->rate, | ||
1005 | c->usecount); | ||
1006 | } | ||
1007 | mutex_unlock(&clocks_mutex); | ||
1008 | |||
1009 | return 0; | ||
1010 | } | ||
1011 | |||
1012 | static int clk_dbg_open(struct inode *inode, struct file *file) | ||
1013 | { | ||
1014 | return single_open(file, clk_dbg_show_summary, inode->i_private); | ||
1015 | } | ||
1016 | |||
1017 | static const struct file_operations debug_clock_fops = { | ||
1018 | .open = clk_dbg_open, | ||
1019 | .read = seq_read, | ||
1020 | .llseek = seq_lseek, | ||
1021 | .release = single_release, | ||
1022 | }; | ||
1023 | |||
1024 | static int clk_debugfs_register_one(struct clk *c) | ||
1025 | { | ||
1026 | int err; | ||
1027 | struct dentry *d; | ||
1028 | struct clk *pa = c->parent; | ||
1029 | |||
1030 | d = debugfs_create_dir(c->name, pa ? pa->dent : clk_debugfs_root); | ||
1031 | if (!d) | ||
1032 | return -ENOMEM; | ||
1033 | c->dent = d; | ||
1034 | |||
1035 | d = debugfs_create_u8("usecount", S_IRUGO, c->dent, (u8 *)&c->usecount); | ||
1036 | if (!d) { | ||
1037 | err = -ENOMEM; | ||
1038 | goto err_out; | ||
1039 | } | ||
1040 | d = debugfs_create_u32("rate", S_IRUGO, c->dent, (u32 *)&c->rate); | ||
1041 | if (!d) { | ||
1042 | err = -ENOMEM; | ||
1043 | goto err_out; | ||
1044 | } | ||
1045 | d = debugfs_create_x32("flags", S_IRUGO, c->dent, (u32 *)&c->flags); | ||
1046 | if (!d) { | ||
1047 | err = -ENOMEM; | ||
1048 | goto err_out; | ||
1049 | } | ||
1050 | return 0; | ||
1051 | |||
1052 | err_out: | ||
1053 | debugfs_remove_recursive(c->dent); | ||
1054 | return err; | ||
1055 | } | ||
1056 | |||
1057 | static int clk_debugfs_register(struct clk *c) | ||
1058 | { | ||
1059 | int err; | ||
1060 | struct clk *pa = c->parent; | ||
1061 | |||
1062 | if (pa && !pa->dent) { | ||
1063 | err = clk_debugfs_register(pa); | ||
1064 | if (err) | ||
1065 | return err; | ||
1066 | } | ||
1067 | |||
1068 | if (!c->dent) { | ||
1069 | err = clk_debugfs_register_one(c); | ||
1070 | if (err) | ||
1071 | return err; | ||
1072 | } | ||
1073 | return 0; | ||
1074 | } | ||
1075 | |||
1076 | static int __init clk_debugfs_init(void) | ||
1077 | { | ||
1078 | struct clk *c; | ||
1079 | struct dentry *d; | ||
1080 | int err; | ||
1081 | |||
1082 | d = debugfs_create_dir("clock", NULL); | ||
1083 | if (!d) | ||
1084 | return -ENOMEM; | ||
1085 | clk_debugfs_root = d; | ||
1086 | |||
1087 | list_for_each_entry(c, &clocks, node) { | ||
1088 | err = clk_debugfs_register(c); | ||
1089 | if (err) | ||
1090 | goto err_out; | ||
1091 | } | ||
1092 | |||
1093 | d = debugfs_create_file("summary", S_IRUGO, | ||
1094 | d, NULL, &debug_clock_fops); | ||
1095 | if (!d) | ||
1096 | return -ENOMEM; | ||
1097 | |||
1098 | return 0; | ||
1099 | err_out: | ||
1100 | debugfs_remove_recursive(clk_debugfs_root); | ||
1101 | return err; | ||
1102 | } | ||
1103 | late_initcall(clk_debugfs_init); | ||
1104 | |||
1105 | #endif /* defined(CONFIG_PM_DEBUG) && defined(CONFIG_DEBUG_FS) */ | ||
diff --git a/arch/arm/mach-omap1/clock.h b/arch/arm/mach-omap1/clock.h index 3d04f4f67676..1e4918a3a5ee 100644 --- a/arch/arm/mach-omap1/clock.h +++ b/arch/arm/mach-omap1/clock.h | |||
@@ -14,8 +14,184 @@ | |||
14 | #define __ARCH_ARM_MACH_OMAP1_CLOCK_H | 14 | #define __ARCH_ARM_MACH_OMAP1_CLOCK_H |
15 | 15 | ||
16 | #include <linux/clk.h> | 16 | #include <linux/clk.h> |
17 | #include <linux/list.h> | ||
17 | 18 | ||
18 | #include <plat/clock.h> | 19 | #include <linux/clkdev.h> |
20 | |||
21 | struct module; | ||
22 | struct clk; | ||
23 | |||
24 | struct omap_clk { | ||
25 | u16 cpu; | ||
26 | struct clk_lookup lk; | ||
27 | }; | ||
28 | |||
29 | #define CLK(dev, con, ck, cp) \ | ||
30 | { \ | ||
31 | .cpu = cp, \ | ||
32 | .lk = { \ | ||
33 | .dev_id = dev, \ | ||
34 | .con_id = con, \ | ||
35 | .clk = ck, \ | ||
36 | }, \ | ||
37 | } | ||
38 | |||
39 | /* Platform flags for the clkdev-OMAP integration code */ | ||
40 | #define CK_310 (1 << 0) | ||
41 | #define CK_7XX (1 << 1) /* 7xx, 850 */ | ||
42 | #define CK_1510 (1 << 2) | ||
43 | #define CK_16XX (1 << 3) /* 16xx, 17xx, 5912 */ | ||
44 | #define CK_1710 (1 << 4) /* 1710 extra for rate selection */ | ||
45 | |||
46 | |||
47 | /* Temporary, needed during the common clock framework conversion */ | ||
48 | #define __clk_get_name(clk) (clk->name) | ||
49 | #define __clk_get_parent(clk) (clk->parent) | ||
50 | #define __clk_get_rate(clk) (clk->rate) | ||
51 | |||
52 | /** | ||
53 | * struct clkops - some clock function pointers | ||
54 | * @enable: fn ptr that enables the current clock in hardware | ||
55 | * @disable: fn ptr that enables the current clock in hardware | ||
56 | * @find_idlest: function returning the IDLEST register for the clock's IP blk | ||
57 | * @find_companion: function returning the "companion" clk reg for the clock | ||
58 | * @allow_idle: fn ptr that enables autoidle for the current clock in hardware | ||
59 | * @deny_idle: fn ptr that disables autoidle for the current clock in hardware | ||
60 | * | ||
61 | * A "companion" clk is an accompanying clock to the one being queried | ||
62 | * that must be enabled for the IP module connected to the clock to | ||
63 | * become accessible by the hardware. Neither @find_idlest nor | ||
64 | * @find_companion should be needed; that information is IP | ||
65 | * block-specific; the hwmod code has been created to handle this, but | ||
66 | * until hwmod data is ready and drivers have been converted to use PM | ||
67 | * runtime calls in place of clk_enable()/clk_disable(), @find_idlest and | ||
68 | * @find_companion must, unfortunately, remain. | ||
69 | */ | ||
70 | struct clkops { | ||
71 | int (*enable)(struct clk *); | ||
72 | void (*disable)(struct clk *); | ||
73 | void (*find_idlest)(struct clk *, void __iomem **, | ||
74 | u8 *, u8 *); | ||
75 | void (*find_companion)(struct clk *, void __iomem **, | ||
76 | u8 *); | ||
77 | void (*allow_idle)(struct clk *); | ||
78 | void (*deny_idle)(struct clk *); | ||
79 | }; | ||
80 | |||
81 | /* | ||
82 | * struct clk.flags possibilities | ||
83 | * | ||
84 | * XXX document the rest of the clock flags here | ||
85 | * | ||
86 | * CLOCK_CLKOUTX2: (OMAP4 only) DPLL CLKOUT and CLKOUTX2 GATE_CTRL | ||
87 | * bits share the same register. This flag allows the | ||
88 | * omap4_dpllmx*() code to determine which GATE_CTRL bit field | ||
89 | * should be used. This is a temporary solution - a better approach | ||
90 | * would be to associate clock type-specific data with the clock, | ||
91 | * similar to the struct dpll_data approach. | ||
92 | */ | ||
93 | #define ENABLE_REG_32BIT (1 << 0) /* Use 32-bit access */ | ||
94 | #define CLOCK_IDLE_CONTROL (1 << 1) | ||
95 | #define CLOCK_NO_IDLE_PARENT (1 << 2) | ||
96 | #define ENABLE_ON_INIT (1 << 3) /* Enable upon framework init */ | ||
97 | #define INVERT_ENABLE (1 << 4) /* 0 enables, 1 disables */ | ||
98 | #define CLOCK_CLKOUTX2 (1 << 5) | ||
99 | |||
100 | /** | ||
101 | * struct clk - OMAP struct clk | ||
102 | * @node: list_head connecting this clock into the full clock list | ||
103 | * @ops: struct clkops * for this clock | ||
104 | * @name: the name of the clock in the hardware (used in hwmod data and debug) | ||
105 | * @parent: pointer to this clock's parent struct clk | ||
106 | * @children: list_head connecting to the child clks' @sibling list_heads | ||
107 | * @sibling: list_head connecting this clk to its parent clk's @children | ||
108 | * @rate: current clock rate | ||
109 | * @enable_reg: register to write to enable the clock (see @enable_bit) | ||
110 | * @recalc: fn ptr that returns the clock's current rate | ||
111 | * @set_rate: fn ptr that can change the clock's current rate | ||
112 | * @round_rate: fn ptr that can round the clock's current rate | ||
113 | * @init: fn ptr to do clock-specific initialization | ||
114 | * @enable_bit: bitshift to write to enable/disable the clock (see @enable_reg) | ||
115 | * @usecount: number of users that have requested this clock to be enabled | ||
116 | * @fixed_div: when > 0, this clock's rate is its parent's rate / @fixed_div | ||
117 | * @flags: see "struct clk.flags possibilities" above | ||
118 | * @rate_offset: bitshift for rate selection bitfield (OMAP1 only) | ||
119 | * @src_offset: bitshift for source selection bitfield (OMAP1 only) | ||
120 | * | ||
121 | * XXX @rate_offset, @src_offset should probably be removed and OMAP1 | ||
122 | * clock code converted to use clksel. | ||
123 | * | ||
124 | * XXX @usecount is poorly named. It should be "enable_count" or | ||
125 | * something similar. "users" in the description refers to kernel | ||
126 | * code (core code or drivers) that have called clk_enable() and not | ||
127 | * yet called clk_disable(); the usecount of parent clocks is also | ||
128 | * incremented by the clock code when clk_enable() is called on child | ||
129 | * clocks and decremented by the clock code when clk_disable() is | ||
130 | * called on child clocks. | ||
131 | * | ||
132 | * XXX @clkdm, @usecount, @children, @sibling should be marked for | ||
133 | * internal use only. | ||
134 | * | ||
135 | * @children and @sibling are used to optimize parent-to-child clock | ||
136 | * tree traversals. (child-to-parent traversals use @parent.) | ||
137 | * | ||
138 | * XXX The notion of the clock's current rate probably needs to be | ||
139 | * separated from the clock's target rate. | ||
140 | */ | ||
141 | struct clk { | ||
142 | struct list_head node; | ||
143 | const struct clkops *ops; | ||
144 | const char *name; | ||
145 | struct clk *parent; | ||
146 | struct list_head children; | ||
147 | struct list_head sibling; /* node for children */ | ||
148 | unsigned long rate; | ||
149 | void __iomem *enable_reg; | ||
150 | unsigned long (*recalc)(struct clk *); | ||
151 | int (*set_rate)(struct clk *, unsigned long); | ||
152 | long (*round_rate)(struct clk *, unsigned long); | ||
153 | void (*init)(struct clk *); | ||
154 | u8 enable_bit; | ||
155 | s8 usecount; | ||
156 | u8 fixed_div; | ||
157 | u8 flags; | ||
158 | u8 rate_offset; | ||
159 | u8 src_offset; | ||
160 | #if defined(CONFIG_PM_DEBUG) && defined(CONFIG_DEBUG_FS) | ||
161 | struct dentry *dent; /* For visible tree hierarchy */ | ||
162 | #endif | ||
163 | }; | ||
164 | |||
165 | struct clk_functions { | ||
166 | int (*clk_enable)(struct clk *clk); | ||
167 | void (*clk_disable)(struct clk *clk); | ||
168 | long (*clk_round_rate)(struct clk *clk, unsigned long rate); | ||
169 | int (*clk_set_rate)(struct clk *clk, unsigned long rate); | ||
170 | int (*clk_set_parent)(struct clk *clk, struct clk *parent); | ||
171 | void (*clk_allow_idle)(struct clk *clk); | ||
172 | void (*clk_deny_idle)(struct clk *clk); | ||
173 | void (*clk_disable_unused)(struct clk *clk); | ||
174 | }; | ||
175 | |||
176 | extern int mpurate; | ||
177 | |||
178 | extern int clk_init(struct clk_functions *custom_clocks); | ||
179 | extern void clk_preinit(struct clk *clk); | ||
180 | extern int clk_register(struct clk *clk); | ||
181 | extern void clk_reparent(struct clk *child, struct clk *parent); | ||
182 | extern void clk_unregister(struct clk *clk); | ||
183 | extern void propagate_rate(struct clk *clk); | ||
184 | extern void recalculate_root_clocks(void); | ||
185 | extern unsigned long followparent_recalc(struct clk *clk); | ||
186 | extern void clk_enable_init_clocks(void); | ||
187 | unsigned long omap_fixed_divisor_recalc(struct clk *clk); | ||
188 | extern struct clk *omap_clk_get_by_name(const char *name); | ||
189 | extern int omap_clk_enable_autoidle_all(void); | ||
190 | extern int omap_clk_disable_autoidle_all(void); | ||
191 | |||
192 | extern const struct clkops clkops_null; | ||
193 | |||
194 | extern struct clk dummy_ck; | ||
19 | 195 | ||
20 | int omap1_clk_init(void); | 196 | int omap1_clk_init(void); |
21 | void omap1_clk_late_init(void); | 197 | void omap1_clk_late_init(void); |
diff --git a/arch/arm/mach-omap1/clock_data.c b/arch/arm/mach-omap1/clock_data.c index 9b45f4b0ee22..28aea55a412e 100644 --- a/arch/arm/mach-omap1/clock_data.c +++ b/arch/arm/mach-omap1/clock_data.c | |||
@@ -22,14 +22,13 @@ | |||
22 | 22 | ||
23 | #include <asm/mach-types.h> /* for machine_is_* */ | 23 | #include <asm/mach-types.h> /* for machine_is_* */ |
24 | 24 | ||
25 | #include <plat/clock.h> | 25 | #include "soc.h" |
26 | #include <plat/cpu.h> | ||
27 | #include <plat/clkdev_omap.h> | ||
28 | #include <plat/sram.h> /* for omap_sram_reprogram_clock() */ | ||
29 | 26 | ||
30 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
31 | #include <mach/usb.h> /* for OTG_BASE */ | 28 | #include <mach/usb.h> /* for OTG_BASE */ |
32 | 29 | ||
30 | #include "../plat-omap/sram.h" | ||
31 | |||
33 | #include "iomap.h" | 32 | #include "iomap.h" |
34 | #include "clock.h" | 33 | #include "clock.h" |
35 | 34 | ||
@@ -765,14 +764,6 @@ static struct omap_clk omap_clks[] = { | |||
765 | * init | 764 | * init |
766 | */ | 765 | */ |
767 | 766 | ||
768 | static struct clk_functions omap1_clk_functions = { | ||
769 | .clk_enable = omap1_clk_enable, | ||
770 | .clk_disable = omap1_clk_disable, | ||
771 | .clk_round_rate = omap1_clk_round_rate, | ||
772 | .clk_set_rate = omap1_clk_set_rate, | ||
773 | .clk_disable_unused = omap1_clk_disable_unused, | ||
774 | }; | ||
775 | |||
776 | static void __init omap1_show_rates(void) | 767 | static void __init omap1_show_rates(void) |
777 | { | 768 | { |
778 | pr_notice("Clocking rate (xtal/DPLL1/MPU): %ld.%01ld/%ld.%01ld/%ld.%01ld MHz\n", | 769 | pr_notice("Clocking rate (xtal/DPLL1/MPU): %ld.%01ld/%ld.%01ld/%ld.%01ld MHz\n", |
@@ -803,8 +794,6 @@ int __init omap1_clk_init(void) | |||
803 | if (!cpu_is_omap15xx()) | 794 | if (!cpu_is_omap15xx()) |
804 | omap_writew(0, SOFT_REQ_REG2); | 795 | omap_writew(0, SOFT_REQ_REG2); |
805 | 796 | ||
806 | clk_init(&omap1_clk_functions); | ||
807 | |||
808 | /* By default all idlect1 clocks are allowed to idle */ | 797 | /* By default all idlect1 clocks are allowed to idle */ |
809 | arm_idlect1_mask = ~0; | 798 | arm_idlect1_mask = ~0; |
810 | 799 | ||
diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h index e4efac9839a8..d6ac18d04da7 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h | |||
@@ -26,8 +26,11 @@ | |||
26 | #ifndef __ARCH_ARM_MACH_OMAP1_COMMON_H | 26 | #ifndef __ARCH_ARM_MACH_OMAP1_COMMON_H |
27 | #define __ARCH_ARM_MACH_OMAP1_COMMON_H | 27 | #define __ARCH_ARM_MACH_OMAP1_COMMON_H |
28 | 28 | ||
29 | #include <plat/common.h> | 29 | #include "../plat-omap/common.h" |
30 | #include <linux/mtd/mtd.h> | 30 | #include <linux/mtd/mtd.h> |
31 | #include <linux/i2c-omap.h> | ||
32 | |||
33 | #include "../plat-omap/i2c.h" | ||
31 | 34 | ||
32 | #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) | 35 | #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) |
33 | void omap7xx_map_io(void); | 36 | void omap7xx_map_io(void); |
@@ -38,6 +41,7 @@ static inline void omap7xx_map_io(void) | |||
38 | #endif | 41 | #endif |
39 | 42 | ||
40 | #ifdef CONFIG_ARCH_OMAP15XX | 43 | #ifdef CONFIG_ARCH_OMAP15XX |
44 | void omap1510_fpga_init_irq(void); | ||
41 | void omap15xx_map_io(void); | 45 | void omap15xx_map_io(void); |
42 | #else | 46 | #else |
43 | static inline void omap15xx_map_io(void) | 47 | static inline void omap15xx_map_io(void) |
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c index d3fec92c54cb..645668e2b1d5 100644 --- a/arch/arm/mach-omap1/devices.c +++ b/arch/arm/mach-omap1/devices.c | |||
@@ -19,17 +19,19 @@ | |||
19 | 19 | ||
20 | #include <asm/mach/map.h> | 20 | #include <asm/mach/map.h> |
21 | 21 | ||
22 | #include <plat/tc.h> | 22 | #include <mach/tc.h> |
23 | #include <mach/mux.h> | 23 | #include <mach/mux.h> |
24 | #include <plat/dma.h> | ||
25 | #include <plat/mmc.h> | ||
26 | 24 | ||
27 | #include <mach/omap7xx.h> | 25 | #include <mach/omap7xx.h> |
28 | #include <mach/camera.h> | 26 | #include <mach/camera.h> |
29 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
30 | 28 | ||
29 | #include "../plat-omap/sram.h" | ||
30 | |||
31 | #include "common.h" | 31 | #include "common.h" |
32 | #include "clock.h" | 32 | #include "clock.h" |
33 | #include "dma.h" | ||
34 | #include "mmc.h" | ||
33 | 35 | ||
34 | #if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE) | 36 | #if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE) |
35 | 37 | ||
@@ -175,6 +177,13 @@ static int __init omap_mmc_add(const char *name, int id, unsigned long base, | |||
175 | res[3].name = "tx"; | 177 | res[3].name = "tx"; |
176 | res[3].flags = IORESOURCE_DMA; | 178 | res[3].flags = IORESOURCE_DMA; |
177 | 179 | ||
180 | if (cpu_is_omap7xx()) | ||
181 | data->slots[0].features = MMC_OMAP7XX; | ||
182 | if (cpu_is_omap15xx()) | ||
183 | data->slots[0].features = MMC_OMAP15XX; | ||
184 | if (cpu_is_omap16xx()) | ||
185 | data->slots[0].features = MMC_OMAP16XX; | ||
186 | |||
178 | ret = platform_device_add_resources(pdev, res, ARRAY_SIZE(res)); | 187 | ret = platform_device_add_resources(pdev, res, ARRAY_SIZE(res)); |
179 | if (ret == 0) | 188 | if (ret == 0) |
180 | ret = platform_device_add_data(pdev, data, sizeof(*data)); | 189 | ret = platform_device_add_data(pdev, data, sizeof(*data)); |
diff --git a/arch/arm/mach-omap1/dma.c b/arch/arm/mach-omap1/dma.c index 29007fef84cd..71305c15fbd5 100644 --- a/arch/arm/mach-omap1/dma.c +++ b/arch/arm/mach-omap1/dma.c | |||
@@ -25,11 +25,13 @@ | |||
25 | #include <linux/device.h> | 25 | #include <linux/device.h> |
26 | #include <linux/io.h> | 26 | #include <linux/io.h> |
27 | 27 | ||
28 | #include <plat/dma.h> | 28 | #include <plat-omap/dma-omap.h> |
29 | #include <plat/tc.h> | 29 | #include <mach/tc.h> |
30 | 30 | ||
31 | #include <mach/irqs.h> | 31 | #include <mach/irqs.h> |
32 | 32 | ||
33 | #include "dma.h" | ||
34 | |||
33 | #define OMAP1_DMA_BASE (0xfffed800) | 35 | #define OMAP1_DMA_BASE (0xfffed800) |
34 | #define OMAP1_LOGICAL_DMA_CH_COUNT 17 | 36 | #define OMAP1_LOGICAL_DMA_CH_COUNT 17 |
35 | #define OMAP1_DMA_STRIDE 0x40 | 37 | #define OMAP1_DMA_STRIDE 0x40 |
diff --git a/arch/arm/mach-omap1/dma.h b/arch/arm/mach-omap1/dma.h new file mode 100644 index 000000000000..da6345dab03f --- /dev/null +++ b/arch/arm/mach-omap1/dma.h | |||
@@ -0,0 +1,83 @@ | |||
1 | /* | ||
2 | * OMAP1 DMA channel definitions | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef __OMAP1_DMA_CHANNEL_H | ||
20 | #define __OMAP1_DMA_CHANNEL_H | ||
21 | |||
22 | /* DMA channels for omap1 */ | ||
23 | #define OMAP_DMA_NO_DEVICE 0 | ||
24 | #define OMAP_DMA_MCSI1_TX 1 | ||
25 | #define OMAP_DMA_MCSI1_RX 2 | ||
26 | #define OMAP_DMA_I2C_RX 3 | ||
27 | #define OMAP_DMA_I2C_TX 4 | ||
28 | #define OMAP_DMA_EXT_NDMA_REQ 5 | ||
29 | #define OMAP_DMA_EXT_NDMA_REQ2 6 | ||
30 | #define OMAP_DMA_UWIRE_TX 7 | ||
31 | #define OMAP_DMA_MCBSP1_TX 8 | ||
32 | #define OMAP_DMA_MCBSP1_RX 9 | ||
33 | #define OMAP_DMA_MCBSP3_TX 10 | ||
34 | #define OMAP_DMA_MCBSP3_RX 11 | ||
35 | #define OMAP_DMA_UART1_TX 12 | ||
36 | #define OMAP_DMA_UART1_RX 13 | ||
37 | #define OMAP_DMA_UART2_TX 14 | ||
38 | #define OMAP_DMA_UART2_RX 15 | ||
39 | #define OMAP_DMA_MCBSP2_TX 16 | ||
40 | #define OMAP_DMA_MCBSP2_RX 17 | ||
41 | #define OMAP_DMA_UART3_TX 18 | ||
42 | #define OMAP_DMA_UART3_RX 19 | ||
43 | #define OMAP_DMA_CAMERA_IF_RX 20 | ||
44 | #define OMAP_DMA_MMC_TX 21 | ||
45 | #define OMAP_DMA_MMC_RX 22 | ||
46 | #define OMAP_DMA_NAND 23 | ||
47 | #define OMAP_DMA_IRQ_LCD_LINE 24 | ||
48 | #define OMAP_DMA_MEMORY_STICK 25 | ||
49 | #define OMAP_DMA_USB_W2FC_RX0 26 | ||
50 | #define OMAP_DMA_USB_W2FC_RX1 27 | ||
51 | #define OMAP_DMA_USB_W2FC_RX2 28 | ||
52 | #define OMAP_DMA_USB_W2FC_TX0 29 | ||
53 | #define OMAP_DMA_USB_W2FC_TX1 30 | ||
54 | #define OMAP_DMA_USB_W2FC_TX2 31 | ||
55 | |||
56 | /* These are only for 1610 */ | ||
57 | #define OMAP_DMA_CRYPTO_DES_IN 32 | ||
58 | #define OMAP_DMA_SPI_TX 33 | ||
59 | #define OMAP_DMA_SPI_RX 34 | ||
60 | #define OMAP_DMA_CRYPTO_HASH 35 | ||
61 | #define OMAP_DMA_CCP_ATTN 36 | ||
62 | #define OMAP_DMA_CCP_FIFO_NOT_EMPTY 37 | ||
63 | #define OMAP_DMA_CMT_APE_TX_CHAN_0 38 | ||
64 | #define OMAP_DMA_CMT_APE_RV_CHAN_0 39 | ||
65 | #define OMAP_DMA_CMT_APE_TX_CHAN_1 40 | ||
66 | #define OMAP_DMA_CMT_APE_RV_CHAN_1 41 | ||
67 | #define OMAP_DMA_CMT_APE_TX_CHAN_2 42 | ||
68 | #define OMAP_DMA_CMT_APE_RV_CHAN_2 43 | ||
69 | #define OMAP_DMA_CMT_APE_TX_CHAN_3 44 | ||
70 | #define OMAP_DMA_CMT_APE_RV_CHAN_3 45 | ||
71 | #define OMAP_DMA_CMT_APE_TX_CHAN_4 46 | ||
72 | #define OMAP_DMA_CMT_APE_RV_CHAN_4 47 | ||
73 | #define OMAP_DMA_CMT_APE_TX_CHAN_5 48 | ||
74 | #define OMAP_DMA_CMT_APE_RV_CHAN_5 49 | ||
75 | #define OMAP_DMA_CMT_APE_TX_CHAN_6 50 | ||
76 | #define OMAP_DMA_CMT_APE_RV_CHAN_6 51 | ||
77 | #define OMAP_DMA_CMT_APE_TX_CHAN_7 52 | ||
78 | #define OMAP_DMA_CMT_APE_RV_CHAN_7 53 | ||
79 | #define OMAP_DMA_MMC2_TX 54 | ||
80 | #define OMAP_DMA_MMC2_RX 55 | ||
81 | #define OMAP_DMA_CRYPTO_DES_OUT 56 | ||
82 | |||
83 | #endif /* __OMAP1_DMA_CHANNEL_H */ | ||
diff --git a/arch/arm/mach-omap1/flash.c b/arch/arm/mach-omap1/flash.c index 73ae6169aa4a..b3fb531af94e 100644 --- a/arch/arm/mach-omap1/flash.c +++ b/arch/arm/mach-omap1/flash.c | |||
@@ -10,7 +10,7 @@ | |||
10 | #include <linux/mtd/mtd.h> | 10 | #include <linux/mtd/mtd.h> |
11 | #include <linux/mtd/map.h> | 11 | #include <linux/mtd/map.h> |
12 | 12 | ||
13 | #include <plat/tc.h> | 13 | #include <mach/tc.h> |
14 | #include <mach/flash.h> | 14 | #include <mach/flash.h> |
15 | 15 | ||
16 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c index 29ec50fc688d..4ec220d8da5c 100644 --- a/arch/arm/mach-omap1/fpga.c +++ b/arch/arm/mach-omap1/fpga.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
28 | #include <asm/mach/irq.h> | 28 | #include <asm/mach/irq.h> |
29 | 29 | ||
30 | #include <plat/fpga.h> | 30 | #include <../plat-omap/fpga.h> |
31 | 31 | ||
32 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
33 | 33 | ||
diff --git a/arch/arm/mach-omap1/i2c.c b/arch/arm/mach-omap1/i2c.c index a0551a6d7451..32bcbb8d6c73 100644 --- a/arch/arm/mach-omap1/i2c.c +++ b/arch/arm/mach-omap1/i2c.c | |||
@@ -19,11 +19,25 @@ | |||
19 | * | 19 | * |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <plat/i2c.h> | 22 | #include <linux/i2c-omap.h> |
23 | #include <mach/mux.h> | 23 | #include <mach/mux.h> |
24 | #include <plat/cpu.h> | 24 | #include "soc.h" |
25 | 25 | ||
26 | void __init omap1_i2c_mux_pins(int bus_id) | 26 | #include "../plat-omap/i2c.h" |
27 | |||
28 | #define OMAP_I2C_SIZE 0x3f | ||
29 | #define OMAP1_I2C_BASE 0xfffb3800 | ||
30 | #define OMAP1_INT_I2C (32 + 4) | ||
31 | |||
32 | static const char name[] = "omap_i2c"; | ||
33 | |||
34 | static struct resource i2c_resources[2] = { | ||
35 | }; | ||
36 | |||
37 | static struct platform_device omap_i2c_devices[1] = { | ||
38 | }; | ||
39 | |||
40 | static void __init omap1_i2c_mux_pins(int bus_id) | ||
27 | { | 41 | { |
28 | if (cpu_is_omap7xx()) { | 42 | if (cpu_is_omap7xx()) { |
29 | omap_cfg_reg(I2C_7XX_SDA); | 43 | omap_cfg_reg(I2C_7XX_SDA); |
@@ -33,3 +47,44 @@ void __init omap1_i2c_mux_pins(int bus_id) | |||
33 | omap_cfg_reg(I2C_SCL); | 47 | omap_cfg_reg(I2C_SCL); |
34 | } | 48 | } |
35 | } | 49 | } |
50 | |||
51 | int __init omap_i2c_add_bus(struct omap_i2c_bus_platform_data *pdata, | ||
52 | int bus_id) | ||
53 | { | ||
54 | struct platform_device *pdev; | ||
55 | struct resource *res; | ||
56 | |||
57 | omap1_i2c_mux_pins(bus_id); | ||
58 | |||
59 | pdev = &omap_i2c_devices[bus_id - 1]; | ||
60 | pdev->id = bus_id; | ||
61 | pdev->name = name; | ||
62 | pdev->num_resources = ARRAY_SIZE(i2c_resources); | ||
63 | res = i2c_resources; | ||
64 | res[0].start = OMAP1_I2C_BASE; | ||
65 | res[0].end = res[0].start + OMAP_I2C_SIZE; | ||
66 | res[0].flags = IORESOURCE_MEM; | ||
67 | res[1].start = OMAP1_INT_I2C; | ||
68 | res[1].flags = IORESOURCE_IRQ; | ||
69 | pdev->resource = res; | ||
70 | |||
71 | /* all OMAP1 have IP version 1 register set */ | ||
72 | pdata->rev = OMAP_I2C_IP_VERSION_1; | ||
73 | |||
74 | /* all OMAP1 I2C are implemented like this */ | ||
75 | pdata->flags = OMAP_I2C_FLAG_NO_FIFO | | ||
76 | OMAP_I2C_FLAG_SIMPLE_CLOCK | | ||
77 | OMAP_I2C_FLAG_16BIT_DATA_REG | | ||
78 | OMAP_I2C_FLAG_ALWAYS_ARMXOR_CLK; | ||
79 | |||
80 | /* how the cpu bus is wired up differs for 7xx only */ | ||
81 | |||
82 | if (cpu_is_omap7xx()) | ||
83 | pdata->flags |= OMAP_I2C_FLAG_BUS_SHIFT_1; | ||
84 | else | ||
85 | pdata->flags |= OMAP_I2C_FLAG_BUS_SHIFT_2; | ||
86 | |||
87 | pdev->dev.platform_data = pdata; | ||
88 | |||
89 | return platform_device_register(pdev); | ||
90 | } | ||
diff --git a/arch/arm/mach-omap1/id.c b/arch/arm/mach-omap1/id.c index a1b846aacdaf..52de382fc804 100644 --- a/arch/arm/mach-omap1/id.c +++ b/arch/arm/mach-omap1/id.c | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <asm/system_info.h> | 18 | #include <asm/system_info.h> |
19 | 19 | ||
20 | #include <plat/cpu.h> | 20 | #include "soc.h" |
21 | 21 | ||
22 | #include <mach/hardware.h> | 22 | #include <mach/hardware.h> |
23 | 23 | ||
diff --git a/arch/arm/mach-omap1/include/mach/debug-macro.S b/arch/arm/mach-omap1/include/mach/debug-macro.S index 2b36a281dc84..5c1a26c9f490 100644 --- a/arch/arm/mach-omap1/include/mach/debug-macro.S +++ b/arch/arm/mach-omap1/include/mach/debug-macro.S | |||
@@ -13,7 +13,7 @@ | |||
13 | 13 | ||
14 | #include <linux/serial_reg.h> | 14 | #include <linux/serial_reg.h> |
15 | 15 | ||
16 | #include <plat/serial.h> | 16 | #include "serial.h" |
17 | 17 | ||
18 | .pushsection .data | 18 | .pushsection .data |
19 | omap_uart_phys: .word 0x0 | 19 | omap_uart_phys: .word 0x0 |
diff --git a/arch/arm/mach-omap1/include/mach/hardware.h b/arch/arm/mach-omap1/include/mach/hardware.h index 84248d250adb..dc3237bd72d2 100644 --- a/arch/arm/mach-omap1/include/mach/hardware.h +++ b/arch/arm/mach-omap1/include/mach/hardware.h | |||
@@ -39,7 +39,7 @@ | |||
39 | #include <asm/sizes.h> | 39 | #include <asm/sizes.h> |
40 | #ifndef __ASSEMBLER__ | 40 | #ifndef __ASSEMBLER__ |
41 | #include <asm/types.h> | 41 | #include <asm/types.h> |
42 | #include <plat/cpu.h> | 42 | #include "../../mach-omap1/soc.h" |
43 | 43 | ||
44 | /* | 44 | /* |
45 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these | 45 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these |
@@ -51,7 +51,7 @@ extern void omap_writeb(u8 v, u32 pa); | |||
51 | extern void omap_writew(u16 v, u32 pa); | 51 | extern void omap_writew(u16 v, u32 pa); |
52 | extern void omap_writel(u32 v, u32 pa); | 52 | extern void omap_writel(u32 v, u32 pa); |
53 | 53 | ||
54 | #include <plat/tc.h> | 54 | #include <mach/tc.h> |
55 | 55 | ||
56 | /* Almost all documentation for chip and board memory maps assumes | 56 | /* Almost all documentation for chip and board memory maps assumes |
57 | * BM is clear. Most devel boards have a switch to control booting | 57 | * BM is clear. Most devel boards have a switch to control booting |
@@ -72,7 +72,7 @@ static inline u32 omap_cs3_phys(void) | |||
72 | 72 | ||
73 | #endif /* ifndef __ASSEMBLER__ */ | 73 | #endif /* ifndef __ASSEMBLER__ */ |
74 | 74 | ||
75 | #include <plat/serial.h> | 75 | #include <mach/serial.h> |
76 | 76 | ||
77 | /* | 77 | /* |
78 | * --------------------------------------------------------------------------- | 78 | * --------------------------------------------------------------------------- |
diff --git a/arch/arm/mach-omap1/include/mach/memory.h b/arch/arm/mach-omap1/include/mach/memory.h index 901082def9bd..351ae4f2c514 100644 --- a/arch/arm/mach-omap1/include/mach/memory.h +++ b/arch/arm/mach-omap1/include/mach/memory.h | |||
@@ -19,7 +19,7 @@ | |||
19 | * because of the strncmp(). | 19 | * because of the strncmp(). |
20 | */ | 20 | */ |
21 | #if defined(CONFIG_ARCH_OMAP15XX) && !defined(__ASSEMBLER__) | 21 | #if defined(CONFIG_ARCH_OMAP15XX) && !defined(__ASSEMBLER__) |
22 | #include <plat/cpu.h> | 22 | #include "../../mach-omap1/soc.h" |
23 | 23 | ||
24 | /* | 24 | /* |
25 | * OMAP-1510 Local Bus address offset | 25 | * OMAP-1510 Local Bus address offset |
diff --git a/arch/arm/mach-omap1/include/mach/omap1510.h b/arch/arm/mach-omap1/include/mach/omap1510.h index 8fe05d6137c0..3d235244bf5c 100644 --- a/arch/arm/mach-omap1/include/mach/omap1510.h +++ b/arch/arm/mach-omap1/include/mach/omap1510.h | |||
@@ -45,5 +45,118 @@ | |||
45 | 45 | ||
46 | #define OMAP1510_DSP_MMU_BASE (0xfffed200) | 46 | #define OMAP1510_DSP_MMU_BASE (0xfffed200) |
47 | 47 | ||
48 | /* | ||
49 | * --------------------------------------------------------------------------- | ||
50 | * OMAP-1510 FPGA | ||
51 | * --------------------------------------------------------------------------- | ||
52 | */ | ||
53 | #define OMAP1510_FPGA_BASE 0xE8000000 /* VA */ | ||
54 | #define OMAP1510_FPGA_SIZE SZ_4K | ||
55 | #define OMAP1510_FPGA_START 0x08000000 /* PA */ | ||
56 | |||
57 | /* Revision */ | ||
58 | #define OMAP1510_FPGA_REV_LOW IOMEM(OMAP1510_FPGA_BASE + 0x0) | ||
59 | #define OMAP1510_FPGA_REV_HIGH IOMEM(OMAP1510_FPGA_BASE + 0x1) | ||
60 | #define OMAP1510_FPGA_LCD_PANEL_CONTROL IOMEM(OMAP1510_FPGA_BASE + 0x2) | ||
61 | #define OMAP1510_FPGA_LED_DIGIT IOMEM(OMAP1510_FPGA_BASE + 0x3) | ||
62 | #define INNOVATOR_FPGA_HID_SPI IOMEM(OMAP1510_FPGA_BASE + 0x4) | ||
63 | #define OMAP1510_FPGA_POWER IOMEM(OMAP1510_FPGA_BASE + 0x5) | ||
64 | |||
65 | /* Interrupt status */ | ||
66 | #define OMAP1510_FPGA_ISR_LO IOMEM(OMAP1510_FPGA_BASE + 0x6) | ||
67 | #define OMAP1510_FPGA_ISR_HI IOMEM(OMAP1510_FPGA_BASE + 0x7) | ||
68 | |||
69 | /* Interrupt mask */ | ||
70 | #define OMAP1510_FPGA_IMR_LO IOMEM(OMAP1510_FPGA_BASE + 0x8) | ||
71 | #define OMAP1510_FPGA_IMR_HI IOMEM(OMAP1510_FPGA_BASE + 0x9) | ||
72 | |||
73 | /* Reset registers */ | ||
74 | #define OMAP1510_FPGA_HOST_RESET IOMEM(OMAP1510_FPGA_BASE + 0xa) | ||
75 | #define OMAP1510_FPGA_RST IOMEM(OMAP1510_FPGA_BASE + 0xb) | ||
76 | |||
77 | #define OMAP1510_FPGA_AUDIO IOMEM(OMAP1510_FPGA_BASE + 0xc) | ||
78 | #define OMAP1510_FPGA_DIP IOMEM(OMAP1510_FPGA_BASE + 0xe) | ||
79 | #define OMAP1510_FPGA_FPGA_IO IOMEM(OMAP1510_FPGA_BASE + 0xf) | ||
80 | #define OMAP1510_FPGA_UART1 IOMEM(OMAP1510_FPGA_BASE + 0x14) | ||
81 | #define OMAP1510_FPGA_UART2 IOMEM(OMAP1510_FPGA_BASE + 0x15) | ||
82 | #define OMAP1510_FPGA_OMAP1510_STATUS IOMEM(OMAP1510_FPGA_BASE + 0x16) | ||
83 | #define OMAP1510_FPGA_BOARD_REV IOMEM(OMAP1510_FPGA_BASE + 0x18) | ||
84 | #define INNOVATOR_FPGA_CAM_USB_CONTROL IOMEM(OMAP1510_FPGA_BASE + 0x20c) | ||
85 | #define OMAP1510P1_PPT_DATA IOMEM(OMAP1510_FPGA_BASE + 0x100) | ||
86 | #define OMAP1510P1_PPT_STATUS IOMEM(OMAP1510_FPGA_BASE + 0x101) | ||
87 | #define OMAP1510P1_PPT_CONTROL IOMEM(OMAP1510_FPGA_BASE + 0x102) | ||
88 | |||
89 | #define OMAP1510_FPGA_TOUCHSCREEN IOMEM(OMAP1510_FPGA_BASE + 0x204) | ||
90 | |||
91 | #define INNOVATOR_FPGA_INFO IOMEM(OMAP1510_FPGA_BASE + 0x205) | ||
92 | #define INNOVATOR_FPGA_LCD_BRIGHT_LO IOMEM(OMAP1510_FPGA_BASE + 0x206) | ||
93 | #define INNOVATOR_FPGA_LCD_BRIGHT_HI IOMEM(OMAP1510_FPGA_BASE + 0x207) | ||
94 | #define INNOVATOR_FPGA_LED_GRN_LO IOMEM(OMAP1510_FPGA_BASE + 0x208) | ||
95 | #define INNOVATOR_FPGA_LED_GRN_HI IOMEM(OMAP1510_FPGA_BASE + 0x209) | ||
96 | #define INNOVATOR_FPGA_LED_RED_LO IOMEM(OMAP1510_FPGA_BASE + 0x20a) | ||
97 | #define INNOVATOR_FPGA_LED_RED_HI IOMEM(OMAP1510_FPGA_BASE + 0x20b) | ||
98 | #define INNOVATOR_FPGA_EXP_CONTROL IOMEM(OMAP1510_FPGA_BASE + 0x20d) | ||
99 | #define INNOVATOR_FPGA_ISR2 IOMEM(OMAP1510_FPGA_BASE + 0x20e) | ||
100 | #define INNOVATOR_FPGA_IMR2 IOMEM(OMAP1510_FPGA_BASE + 0x210) | ||
101 | |||
102 | #define OMAP1510_FPGA_ETHR_START (OMAP1510_FPGA_START + 0x300) | ||
103 | |||
104 | /* | ||
105 | * Power up Giga UART driver, turn on HID clock. | ||
106 | * Turn off BT power, since we're not using it and it | ||
107 | * draws power. | ||
108 | */ | ||
109 | #define OMAP1510_FPGA_RESET_VALUE 0x42 | ||
110 | |||
111 | #define OMAP1510_FPGA_PCR_IF_PD0 (1 << 7) | ||
112 | #define OMAP1510_FPGA_PCR_COM2_EN (1 << 6) | ||
113 | #define OMAP1510_FPGA_PCR_COM1_EN (1 << 5) | ||
114 | #define OMAP1510_FPGA_PCR_EXP_PD0 (1 << 4) | ||
115 | #define OMAP1510_FPGA_PCR_EXP_PD1 (1 << 3) | ||
116 | #define OMAP1510_FPGA_PCR_48MHZ_CLK (1 << 2) | ||
117 | #define OMAP1510_FPGA_PCR_4MHZ_CLK (1 << 1) | ||
118 | #define OMAP1510_FPGA_PCR_RSRVD_BIT0 (1 << 0) | ||
119 | |||
120 | /* | ||
121 | * Innovator/OMAP1510 FPGA HID register bit definitions | ||
122 | */ | ||
123 | #define OMAP1510_FPGA_HID_SCLK (1<<0) /* output */ | ||
124 | #define OMAP1510_FPGA_HID_MOSI (1<<1) /* output */ | ||
125 | #define OMAP1510_FPGA_HID_nSS (1<<2) /* output 0/1 chip idle/select */ | ||
126 | #define OMAP1510_FPGA_HID_nHSUS (1<<3) /* output 0/1 host active/suspended */ | ||
127 | #define OMAP1510_FPGA_HID_MISO (1<<4) /* input */ | ||
128 | #define OMAP1510_FPGA_HID_ATN (1<<5) /* input 0/1 chip idle/ATN */ | ||
129 | #define OMAP1510_FPGA_HID_rsrvd (1<<6) | ||
130 | #define OMAP1510_FPGA_HID_RESETn (1<<7) /* output - 0/1 USAR reset/run */ | ||
131 | |||
132 | /* The FPGA IRQ is cascaded through GPIO_13 */ | ||
133 | #define OMAP1510_INT_FPGA (IH_GPIO_BASE + 13) | ||
134 | |||
135 | /* IRQ Numbers for interrupts muxed through the FPGA */ | ||
136 | #define OMAP1510_INT_FPGA_ATN (OMAP_FPGA_IRQ_BASE + 0) | ||
137 | #define OMAP1510_INT_FPGA_ACK (OMAP_FPGA_IRQ_BASE + 1) | ||
138 | #define OMAP1510_INT_FPGA2 (OMAP_FPGA_IRQ_BASE + 2) | ||
139 | #define OMAP1510_INT_FPGA3 (OMAP_FPGA_IRQ_BASE + 3) | ||
140 | #define OMAP1510_INT_FPGA4 (OMAP_FPGA_IRQ_BASE + 4) | ||
141 | #define OMAP1510_INT_FPGA5 (OMAP_FPGA_IRQ_BASE + 5) | ||
142 | #define OMAP1510_INT_FPGA6 (OMAP_FPGA_IRQ_BASE + 6) | ||
143 | #define OMAP1510_INT_FPGA7 (OMAP_FPGA_IRQ_BASE + 7) | ||
144 | #define OMAP1510_INT_FPGA8 (OMAP_FPGA_IRQ_BASE + 8) | ||
145 | #define OMAP1510_INT_FPGA9 (OMAP_FPGA_IRQ_BASE + 9) | ||
146 | #define OMAP1510_INT_FPGA10 (OMAP_FPGA_IRQ_BASE + 10) | ||
147 | #define OMAP1510_INT_FPGA11 (OMAP_FPGA_IRQ_BASE + 11) | ||
148 | #define OMAP1510_INT_FPGA12 (OMAP_FPGA_IRQ_BASE + 12) | ||
149 | #define OMAP1510_INT_ETHER (OMAP_FPGA_IRQ_BASE + 13) | ||
150 | #define OMAP1510_INT_FPGAUART1 (OMAP_FPGA_IRQ_BASE + 14) | ||
151 | #define OMAP1510_INT_FPGAUART2 (OMAP_FPGA_IRQ_BASE + 15) | ||
152 | #define OMAP1510_INT_FPGA_TS (OMAP_FPGA_IRQ_BASE + 16) | ||
153 | #define OMAP1510_INT_FPGA17 (OMAP_FPGA_IRQ_BASE + 17) | ||
154 | #define OMAP1510_INT_FPGA_CAM (OMAP_FPGA_IRQ_BASE + 18) | ||
155 | #define OMAP1510_INT_FPGA_RTC_A (OMAP_FPGA_IRQ_BASE + 19) | ||
156 | #define OMAP1510_INT_FPGA_RTC_B (OMAP_FPGA_IRQ_BASE + 20) | ||
157 | #define OMAP1510_INT_FPGA_CD (OMAP_FPGA_IRQ_BASE + 21) | ||
158 | #define OMAP1510_INT_FPGA22 (OMAP_FPGA_IRQ_BASE + 22) | ||
159 | #define OMAP1510_INT_FPGA23 (OMAP_FPGA_IRQ_BASE + 23) | ||
160 | |||
48 | #endif /* __ASM_ARCH_OMAP15XX_H */ | 161 | #endif /* __ASM_ARCH_OMAP15XX_H */ |
49 | 162 | ||
diff --git a/arch/arm/mach-omap1/include/mach/serial.h b/arch/arm/mach-omap1/include/mach/serial.h new file mode 100644 index 000000000000..2ce6a2db470b --- /dev/null +++ b/arch/arm/mach-omap1/include/mach/serial.h | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 Texas Instruments | ||
3 | * Added OMAP4 support- Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
4 | * | ||
5 | * This program is distributed in the hope that it will be useful, | ||
6 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
7 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
8 | * GNU General Public License for more details. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_SERIAL_H | ||
12 | #define __ASM_ARCH_SERIAL_H | ||
13 | |||
14 | #include <linux/init.h> | ||
15 | |||
16 | /* | ||
17 | * Memory entry used for the DEBUG_LL UART configuration, relative to | ||
18 | * start of RAM. See also uncompress.h and debug-macro.S. | ||
19 | * | ||
20 | * Note that using a memory location for storing the UART configuration | ||
21 | * has at least two limitations: | ||
22 | * | ||
23 | * 1. Kernel uncompress code cannot overlap OMAP_UART_INFO as the | ||
24 | * uncompress code could then partially overwrite itself | ||
25 | * 2. We assume printascii is called at least once before paging_init, | ||
26 | * and addruart has a chance to read OMAP_UART_INFO | ||
27 | */ | ||
28 | #define OMAP_UART_INFO_OFS 0x3ffc | ||
29 | |||
30 | /* OMAP1 serial ports */ | ||
31 | #define OMAP1_UART1_BASE 0xfffb0000 | ||
32 | #define OMAP1_UART2_BASE 0xfffb0800 | ||
33 | #define OMAP1_UART3_BASE 0xfffb9800 | ||
34 | |||
35 | #define OMAP_PORT_SHIFT 2 | ||
36 | #define OMAP7XX_PORT_SHIFT 0 | ||
37 | |||
38 | #define OMAP1510_BASE_BAUD (12000000/16) | ||
39 | #define OMAP16XX_BASE_BAUD (48000000/16) | ||
40 | |||
41 | /* | ||
42 | * DEBUG_LL port encoding stored into the UART1 scratchpad register by | ||
43 | * decomp_setup in uncompress.h | ||
44 | */ | ||
45 | #define OMAP1UART1 11 | ||
46 | #define OMAP1UART2 12 | ||
47 | #define OMAP1UART3 13 | ||
48 | |||
49 | #ifndef __ASSEMBLER__ | ||
50 | extern void omap_serial_init(void); | ||
51 | #endif | ||
52 | |||
53 | #endif | ||
diff --git a/arch/arm/mach-omap1/include/mach/tc.h b/arch/arm/mach-omap1/include/mach/tc.h new file mode 100644 index 000000000000..1b4b2da86203 --- /dev/null +++ b/arch/arm/mach-omap1/include/mach/tc.h | |||
@@ -0,0 +1,89 @@ | |||
1 | /* | ||
2 | * arch/arm/plat-omap/include/mach/tc.h | ||
3 | * | ||
4 | * OMAP Traffic Controller | ||
5 | * | ||
6 | * Copyright (C) 2004 Nokia Corporation | ||
7 | * Author: Imre Deak <imre.deak@nokia.com> | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify it | ||
10 | * under the terms of the GNU General Public License as published by the | ||
11 | * Free Software Foundation; either version 2 of the License, or (at your | ||
12 | * option) any later version. | ||
13 | * | ||
14 | * This program is distributed in the hope that it will be useful, but | ||
15 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
17 | * General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License along | ||
20 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
21 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
22 | */ | ||
23 | |||
24 | #ifndef __ASM_ARCH_TC_H | ||
25 | #define __ASM_ARCH_TC_H | ||
26 | |||
27 | #define TCMIF_BASE 0xfffecc00 | ||
28 | #define OMAP_TC_OCPT1_PRIOR (TCMIF_BASE + 0x00) | ||
29 | #define OMAP_TC_EMIFS_PRIOR (TCMIF_BASE + 0x04) | ||
30 | #define OMAP_TC_EMIFF_PRIOR (TCMIF_BASE + 0x08) | ||
31 | #define EMIFS_CONFIG (TCMIF_BASE + 0x0c) | ||
32 | #define EMIFS_CS0_CONFIG (TCMIF_BASE + 0x10) | ||
33 | #define EMIFS_CS1_CONFIG (TCMIF_BASE + 0x14) | ||
34 | #define EMIFS_CS2_CONFIG (TCMIF_BASE + 0x18) | ||
35 | #define EMIFS_CS3_CONFIG (TCMIF_BASE + 0x1c) | ||
36 | #define EMIFF_SDRAM_CONFIG (TCMIF_BASE + 0x20) | ||
37 | #define EMIFF_MRS (TCMIF_BASE + 0x24) | ||
38 | #define TC_TIMEOUT1 (TCMIF_BASE + 0x28) | ||
39 | #define TC_TIMEOUT2 (TCMIF_BASE + 0x2c) | ||
40 | #define TC_TIMEOUT3 (TCMIF_BASE + 0x30) | ||
41 | #define TC_ENDIANISM (TCMIF_BASE + 0x34) | ||
42 | #define EMIFF_SDRAM_CONFIG_2 (TCMIF_BASE + 0x3c) | ||
43 | #define EMIF_CFG_DYNAMIC_WS (TCMIF_BASE + 0x40) | ||
44 | #define EMIFS_ACS0 (TCMIF_BASE + 0x50) | ||
45 | #define EMIFS_ACS1 (TCMIF_BASE + 0x54) | ||
46 | #define EMIFS_ACS2 (TCMIF_BASE + 0x58) | ||
47 | #define EMIFS_ACS3 (TCMIF_BASE + 0x5c) | ||
48 | #define OMAP_TC_OCPT2_PRIOR (TCMIF_BASE + 0xd0) | ||
49 | |||
50 | /* external EMIFS chipselect regions */ | ||
51 | #define OMAP_CS0_PHYS 0x00000000 | ||
52 | #define OMAP_CS0_SIZE SZ_64M | ||
53 | |||
54 | #define OMAP_CS1_PHYS 0x04000000 | ||
55 | #define OMAP_CS1_SIZE SZ_64M | ||
56 | |||
57 | #define OMAP_CS1A_PHYS OMAP_CS1_PHYS | ||
58 | #define OMAP_CS1A_SIZE SZ_32M | ||
59 | |||
60 | #define OMAP_CS1B_PHYS (OMAP_CS1A_PHYS + OMAP_CS1A_SIZE) | ||
61 | #define OMAP_CS1B_SIZE SZ_32M | ||
62 | |||
63 | #define OMAP_CS2_PHYS 0x08000000 | ||
64 | #define OMAP_CS2_SIZE SZ_64M | ||
65 | |||
66 | #define OMAP_CS2A_PHYS OMAP_CS2_PHYS | ||
67 | #define OMAP_CS2A_SIZE SZ_32M | ||
68 | |||
69 | #define OMAP_CS2B_PHYS (OMAP_CS2A_PHYS + OMAP_CS2A_SIZE) | ||
70 | #define OMAP_CS2B_SIZE SZ_32M | ||
71 | |||
72 | #define OMAP_CS3_PHYS 0x0c000000 | ||
73 | #define OMAP_CS3_SIZE SZ_64M | ||
74 | |||
75 | #ifndef __ASSEMBLER__ | ||
76 | |||
77 | /* EMIF Slow Interface Configuration Register */ | ||
78 | #define OMAP_EMIFS_CONFIG_FR (1 << 4) | ||
79 | #define OMAP_EMIFS_CONFIG_PDE (1 << 3) | ||
80 | #define OMAP_EMIFS_CONFIG_PWD_EN (1 << 2) | ||
81 | #define OMAP_EMIFS_CONFIG_BM (1 << 1) | ||
82 | #define OMAP_EMIFS_CONFIG_WP (1 << 0) | ||
83 | |||
84 | #define EMIFS_CCS(n) (EMIFS_CS0_CONFIG + (4 * (n))) | ||
85 | #define EMIFS_ACS(n) (EMIFS_ACS0 + (4 * (n))) | ||
86 | |||
87 | #endif /* __ASSEMBLER__ */ | ||
88 | |||
89 | #endif /* __ASM_ARCH_TC_H */ | ||
diff --git a/arch/arm/mach-omap1/include/mach/uncompress.h b/arch/arm/mach-omap1/include/mach/uncompress.h index 0ff22dc075c7..ad6fbe7d83f2 100644 --- a/arch/arm/mach-omap1/include/mach/uncompress.h +++ b/arch/arm/mach-omap1/include/mach/uncompress.h | |||
@@ -1,5 +1,122 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-omap1/include/mach/uncompress.h | 2 | * arch/arm/plat-omap/include/mach/uncompress.h |
3 | * | ||
4 | * Serial port stubs for kernel decompress status messages | ||
5 | * | ||
6 | * Initially based on: | ||
7 | * linux-2.4.15-rmk1-dsplinux1.6/arch/arm/plat-omap/include/mach1510/uncompress.h | ||
8 | * Copyright (C) 2000 RidgeRun, Inc. | ||
9 | * Author: Greg Lonnon <glonnon@ridgerun.com> | ||
10 | * | ||
11 | * Rewritten by: | ||
12 | * Author: <source@mvista.com> | ||
13 | * 2004 (c) MontaVista Software, Inc. | ||
14 | * | ||
15 | * This file is licensed under the terms of the GNU General Public License | ||
16 | * version 2. This program is licensed "as is" without any warranty of any | ||
17 | * kind, whether express or implied. | ||
3 | */ | 18 | */ |
4 | 19 | ||
5 | #include <plat/uncompress.h> | 20 | #include <linux/types.h> |
21 | #include <linux/serial_reg.h> | ||
22 | |||
23 | #include <asm/memory.h> | ||
24 | #include <asm/mach-types.h> | ||
25 | |||
26 | #include "serial.h" | ||
27 | |||
28 | #define MDR1_MODE_MASK 0x07 | ||
29 | |||
30 | volatile u8 *uart_base; | ||
31 | int uart_shift; | ||
32 | |||
33 | /* | ||
34 | * Store the DEBUG_LL uart number into memory. | ||
35 | * See also debug-macro.S, and serial.c for related code. | ||
36 | */ | ||
37 | static void set_omap_uart_info(unsigned char port) | ||
38 | { | ||
39 | /* | ||
40 | * Get address of some.bss variable and round it down | ||
41 | * a la CONFIG_AUTO_ZRELADDR. | ||
42 | */ | ||
43 | u32 ram_start = (u32)&uart_shift & 0xf8000000; | ||
44 | u32 *uart_info = (u32 *)(ram_start + OMAP_UART_INFO_OFS); | ||
45 | *uart_info = port; | ||
46 | } | ||
47 | |||
48 | static void putc(int c) | ||
49 | { | ||
50 | if (!uart_base) | ||
51 | return; | ||
52 | |||
53 | /* Check for UART 16x mode */ | ||
54 | if ((uart_base[UART_OMAP_MDR1 << uart_shift] & MDR1_MODE_MASK) != 0) | ||
55 | return; | ||
56 | |||
57 | while (!(uart_base[UART_LSR << uart_shift] & UART_LSR_THRE)) | ||
58 | barrier(); | ||
59 | uart_base[UART_TX << uart_shift] = c; | ||
60 | } | ||
61 | |||
62 | static inline void flush(void) | ||
63 | { | ||
64 | } | ||
65 | |||
66 | /* | ||
67 | * Macros to configure UART1 and debug UART | ||
68 | */ | ||
69 | #define _DEBUG_LL_ENTRY(mach, dbg_uart, dbg_shft, dbg_id) \ | ||
70 | if (machine_is_##mach()) { \ | ||
71 | uart_base = (volatile u8 *)(dbg_uart); \ | ||
72 | uart_shift = (dbg_shft); \ | ||
73 | port = (dbg_id); \ | ||
74 | set_omap_uart_info(port); \ | ||
75 | break; \ | ||
76 | } | ||
77 | |||
78 | #define DEBUG_LL_OMAP7XX(p, mach) \ | ||
79 | _DEBUG_LL_ENTRY(mach, OMAP1_UART##p##_BASE, OMAP7XX_PORT_SHIFT, \ | ||
80 | OMAP1UART##p) | ||
81 | |||
82 | #define DEBUG_LL_OMAP1(p, mach) \ | ||
83 | _DEBUG_LL_ENTRY(mach, OMAP1_UART##p##_BASE, OMAP_PORT_SHIFT, \ | ||
84 | OMAP1UART##p) | ||
85 | |||
86 | static inline void arch_decomp_setup(void) | ||
87 | { | ||
88 | int port = 0; | ||
89 | |||
90 | /* | ||
91 | * Initialize the port based on the machine ID from the bootloader. | ||
92 | * Note that we're using macros here instead of switch statement | ||
93 | * as machine_is functions are optimized out for the boards that | ||
94 | * are not selected. | ||
95 | */ | ||
96 | do { | ||
97 | /* omap7xx/8xx based boards using UART1 with shift 0 */ | ||
98 | DEBUG_LL_OMAP7XX(1, herald); | ||
99 | DEBUG_LL_OMAP7XX(1, omap_perseus2); | ||
100 | |||
101 | /* omap15xx/16xx based boards using UART1 */ | ||
102 | DEBUG_LL_OMAP1(1, ams_delta); | ||
103 | DEBUG_LL_OMAP1(1, nokia770); | ||
104 | DEBUG_LL_OMAP1(1, omap_h2); | ||
105 | DEBUG_LL_OMAP1(1, omap_h3); | ||
106 | DEBUG_LL_OMAP1(1, omap_innovator); | ||
107 | DEBUG_LL_OMAP1(1, omap_osk); | ||
108 | DEBUG_LL_OMAP1(1, omap_palmte); | ||
109 | DEBUG_LL_OMAP1(1, omap_palmz71); | ||
110 | |||
111 | /* omap15xx/16xx based boards using UART2 */ | ||
112 | DEBUG_LL_OMAP1(2, omap_palmtt); | ||
113 | |||
114 | /* omap15xx/16xx based boards using UART3 */ | ||
115 | DEBUG_LL_OMAP1(3, sx1); | ||
116 | } while (0); | ||
117 | } | ||
118 | |||
119 | /* | ||
120 | * nothing to do | ||
121 | */ | ||
122 | #define arch_decomp_wdog() | ||
diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c index 6a5baab1f4cb..44389d7cd255 100644 --- a/arch/arm/mach-omap1/io.c +++ b/arch/arm/mach-omap1/io.c | |||
@@ -17,8 +17,8 @@ | |||
17 | #include <asm/mach/map.h> | 17 | #include <asm/mach/map.h> |
18 | 18 | ||
19 | #include <mach/mux.h> | 19 | #include <mach/mux.h> |
20 | #include <plat/tc.h> | 20 | #include <mach/tc.h> |
21 | #include <plat/dma.h> | 21 | #include <plat-omap/dma-omap.h> |
22 | 22 | ||
23 | #include "iomap.h" | 23 | #include "iomap.h" |
24 | #include "common.h" | 24 | #include "common.h" |
diff --git a/arch/arm/mach-omap1/irq.c b/arch/arm/mach-omap1/irq.c index 6995fb6a3345..122ef67939a2 100644 --- a/arch/arm/mach-omap1/irq.c +++ b/arch/arm/mach-omap1/irq.c | |||
@@ -45,7 +45,7 @@ | |||
45 | #include <asm/irq.h> | 45 | #include <asm/irq.h> |
46 | #include <asm/mach/irq.h> | 46 | #include <asm/mach/irq.h> |
47 | 47 | ||
48 | #include <plat/cpu.h> | 48 | #include "soc.h" |
49 | 49 | ||
50 | #include <mach/hardware.h> | 50 | #include <mach/hardware.h> |
51 | 51 | ||
diff --git a/arch/arm/mach-omap1/lcd_dma.c b/arch/arm/mach-omap1/lcd_dma.c index ed42628611bc..7ed8c1857d56 100644 --- a/arch/arm/mach-omap1/lcd_dma.c +++ b/arch/arm/mach-omap1/lcd_dma.c | |||
@@ -27,11 +27,13 @@ | |||
27 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | 29 | ||
30 | #include <plat/dma.h> | 30 | #include <plat-omap/dma-omap.h> |
31 | 31 | ||
32 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
33 | #include <mach/lcdc.h> | 33 | #include <mach/lcdc.h> |
34 | 34 | ||
35 | #include "dma.h" | ||
36 | |||
35 | int omap_lcd_dma_running(void) | 37 | int omap_lcd_dma_running(void) |
36 | { | 38 | { |
37 | /* | 39 | /* |
diff --git a/arch/arm/mach-omap1/mcbsp.c b/arch/arm/mach-omap1/mcbsp.c index bdc2e7541adb..c6d8fdf92e9c 100644 --- a/arch/arm/mach-omap1/mcbsp.c +++ b/arch/arm/mach-omap1/mcbsp.c | |||
@@ -19,14 +19,15 @@ | |||
19 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
20 | #include <linux/slab.h> | 20 | #include <linux/slab.h> |
21 | 21 | ||
22 | #include <plat/dma.h> | 22 | #include <plat-omap/dma-omap.h> |
23 | #include <mach/mux.h> | 23 | #include <mach/mux.h> |
24 | #include <plat/cpu.h> | 24 | #include "soc.h" |
25 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 25 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
26 | 26 | ||
27 | #include <mach/irqs.h> | 27 | #include <mach/irqs.h> |
28 | 28 | ||
29 | #include "iomap.h" | 29 | #include "iomap.h" |
30 | #include "dma.h" | ||
30 | 31 | ||
31 | #define DPS_RSTCT2_PER_EN (1 << 0) | 32 | #define DPS_RSTCT2_PER_EN (1 << 0) |
32 | #define DSP_RSTCT2_WD_PER_EN (1 << 1) | 33 | #define DSP_RSTCT2_WD_PER_EN (1 << 1) |
diff --git a/arch/arm/mach-omap1/mmc.h b/arch/arm/mach-omap1/mmc.h new file mode 100644 index 000000000000..39c2b13de884 --- /dev/null +++ b/arch/arm/mach-omap1/mmc.h | |||
@@ -0,0 +1,18 @@ | |||
1 | #include <linux/mmc/host.h> | ||
2 | #include <linux/platform_data/mmc-omap.h> | ||
3 | |||
4 | #define OMAP15XX_NR_MMC 1 | ||
5 | #define OMAP16XX_NR_MMC 2 | ||
6 | #define OMAP1_MMC_SIZE 0x080 | ||
7 | #define OMAP1_MMC1_BASE 0xfffb7800 | ||
8 | #define OMAP1_MMC2_BASE 0xfffb7c00 /* omap16xx only */ | ||
9 | |||
10 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) | ||
11 | void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | ||
12 | int nr_controllers); | ||
13 | #else | ||
14 | static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, | ||
15 | int nr_controllers) | ||
16 | { | ||
17 | } | ||
18 | #endif | ||
diff --git a/arch/arm/mach-omap1/opp_data.c b/arch/arm/mach-omap1/opp_data.c index 9cd4ddb51397..8dcebe6d8882 100644 --- a/arch/arm/mach-omap1/opp_data.c +++ b/arch/arm/mach-omap1/opp_data.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <plat/clkdev_omap.h> | 13 | #include "clock.h" |
14 | #include "opp.h" | 14 | #include "opp.h" |
15 | 15 | ||
16 | /*------------------------------------------------------------------------- | 16 | /*------------------------------------------------------------------------- |
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index 47ec16155483..b2c2328d7c18 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c | |||
@@ -49,17 +49,17 @@ | |||
49 | #include <asm/mach/time.h> | 49 | #include <asm/mach/time.h> |
50 | #include <asm/mach/irq.h> | 50 | #include <asm/mach/irq.h> |
51 | 51 | ||
52 | #include <plat/cpu.h> | 52 | #include <mach/tc.h> |
53 | #include <plat/clock.h> | ||
54 | #include <plat/sram.h> | ||
55 | #include <plat/tc.h> | ||
56 | #include <mach/mux.h> | 53 | #include <mach/mux.h> |
57 | #include <plat/dma.h> | 54 | #include <plat-omap/dma-omap.h> |
58 | #include <plat/dmtimer.h> | 55 | #include <plat/dmtimer.h> |
59 | 56 | ||
60 | #include <mach/irqs.h> | 57 | #include <mach/irqs.h> |
61 | 58 | ||
59 | #include "../plat-omap/sram.h" | ||
60 | |||
62 | #include "iomap.h" | 61 | #include "iomap.h" |
62 | #include "clock.h" | ||
63 | #include "pm.h" | 63 | #include "pm.h" |
64 | 64 | ||
65 | static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE]; | 65 | static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE]; |
diff --git a/arch/arm/mach-omap1/pm_bus.c b/arch/arm/mach-omap1/pm_bus.c index 7868e75ad077..16bf2f95117c 100644 --- a/arch/arm/mach-omap1/pm_bus.c +++ b/arch/arm/mach-omap1/pm_bus.c | |||
@@ -19,9 +19,6 @@ | |||
19 | #include <linux/clk.h> | 19 | #include <linux/clk.h> |
20 | #include <linux/err.h> | 20 | #include <linux/err.h> |
21 | 21 | ||
22 | #include <plat/omap_device.h> | ||
23 | #include <plat/omap-pm.h> | ||
24 | |||
25 | #ifdef CONFIG_PM_RUNTIME | 22 | #ifdef CONFIG_PM_RUNTIME |
26 | static int omap1_pm_runtime_suspend(struct device *dev) | 23 | static int omap1_pm_runtime_suspend(struct device *dev) |
27 | { | 24 | { |
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c index b9d6834af835..d1ac08016f0b 100644 --- a/arch/arm/mach-omap1/serial.c +++ b/arch/arm/mach-omap1/serial.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <asm/mach-types.h> | 23 | #include <asm/mach-types.h> |
24 | 24 | ||
25 | #include <mach/mux.h> | 25 | #include <mach/mux.h> |
26 | #include <plat/fpga.h> | ||
27 | 26 | ||
28 | #include "pm.h" | 27 | #include "pm.h" |
29 | 28 | ||
diff --git a/arch/arm/mach-omap1/soc.h b/arch/arm/mach-omap1/soc.h new file mode 100644 index 000000000000..6cf9c1cc2bef --- /dev/null +++ b/arch/arm/mach-omap1/soc.h | |||
@@ -0,0 +1,229 @@ | |||
1 | /* | ||
2 | * OMAP cpu type detection | ||
3 | * | ||
4 | * Copyright (C) 2004, 2008 Nokia Corporation | ||
5 | * | ||
6 | * Copyright (C) 2009-11 Texas Instruments. | ||
7 | * | ||
8 | * Written by Tony Lindgren <tony.lindgren@nokia.com> | ||
9 | * | ||
10 | * Added OMAP4/5 specific defines - Santosh Shilimkar<santosh.shilimkar@ti.com> | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License as published by | ||
14 | * the Free Software Foundation; either version 2 of the License, or | ||
15 | * (at your option) any later version. | ||
16 | * | ||
17 | * This program is distributed in the hope that it will be useful, | ||
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | * GNU General Public License for more details. | ||
21 | * | ||
22 | * You should have received a copy of the GNU General Public License | ||
23 | * along with this program; if not, write to the Free Software | ||
24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
25 | * | ||
26 | */ | ||
27 | |||
28 | #ifndef __ASM_ARCH_OMAP_CPU_H | ||
29 | #define __ASM_ARCH_OMAP_CPU_H | ||
30 | |||
31 | #ifndef __ASSEMBLY__ | ||
32 | |||
33 | #include <linux/bitops.h> | ||
34 | |||
35 | /* | ||
36 | * Test if multicore OMAP support is needed | ||
37 | */ | ||
38 | #undef MULTI_OMAP1 | ||
39 | #undef OMAP_NAME | ||
40 | |||
41 | #ifdef CONFIG_ARCH_OMAP730 | ||
42 | # ifdef OMAP_NAME | ||
43 | # undef MULTI_OMAP1 | ||
44 | # define MULTI_OMAP1 | ||
45 | # else | ||
46 | # define OMAP_NAME omap730 | ||
47 | # endif | ||
48 | #endif | ||
49 | #ifdef CONFIG_ARCH_OMAP850 | ||
50 | # ifdef OMAP_NAME | ||
51 | # undef MULTI_OMAP1 | ||
52 | # define MULTI_OMAP1 | ||
53 | # else | ||
54 | # define OMAP_NAME omap850 | ||
55 | # endif | ||
56 | #endif | ||
57 | #ifdef CONFIG_ARCH_OMAP15XX | ||
58 | # ifdef OMAP_NAME | ||
59 | # undef MULTI_OMAP1 | ||
60 | # define MULTI_OMAP1 | ||
61 | # else | ||
62 | # define OMAP_NAME omap1510 | ||
63 | # endif | ||
64 | #endif | ||
65 | #ifdef CONFIG_ARCH_OMAP16XX | ||
66 | # ifdef OMAP_NAME | ||
67 | # undef MULTI_OMAP1 | ||
68 | # define MULTI_OMAP1 | ||
69 | # else | ||
70 | # define OMAP_NAME omap16xx | ||
71 | # endif | ||
72 | #endif | ||
73 | |||
74 | /* | ||
75 | * omap_rev bits: | ||
76 | * CPU id bits (0730, 1510, 1710, 2422...) [31:16] | ||
77 | * CPU revision (See _REV_ defined in cpu.h) [15:08] | ||
78 | * CPU class bits (15xx, 16xx, 24xx, 34xx...) [07:00] | ||
79 | */ | ||
80 | unsigned int omap_rev(void); | ||
81 | |||
82 | /* | ||
83 | * Get the CPU revision for OMAP devices | ||
84 | */ | ||
85 | #define GET_OMAP_REVISION() ((omap_rev() >> 8) & 0xff) | ||
86 | |||
87 | /* | ||
88 | * Macros to group OMAP into cpu classes. | ||
89 | * These can be used in most places. | ||
90 | * cpu_is_omap7xx(): True for OMAP730, OMAP850 | ||
91 | * cpu_is_omap15xx(): True for OMAP1510, OMAP5910 and OMAP310 | ||
92 | * cpu_is_omap16xx(): True for OMAP1610, OMAP5912 and OMAP1710 | ||
93 | */ | ||
94 | #define GET_OMAP_CLASS (omap_rev() & 0xff) | ||
95 | |||
96 | #define IS_OMAP_CLASS(class, id) \ | ||
97 | static inline int is_omap ##class (void) \ | ||
98 | { \ | ||
99 | return (GET_OMAP_CLASS == (id)) ? 1 : 0; \ | ||
100 | } | ||
101 | |||
102 | #define GET_OMAP_SUBCLASS ((omap_rev() >> 20) & 0x0fff) | ||
103 | |||
104 | #define IS_OMAP_SUBCLASS(subclass, id) \ | ||
105 | static inline int is_omap ##subclass (void) \ | ||
106 | { \ | ||
107 | return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ | ||
108 | } | ||
109 | |||
110 | IS_OMAP_CLASS(7xx, 0x07) | ||
111 | IS_OMAP_CLASS(15xx, 0x15) | ||
112 | IS_OMAP_CLASS(16xx, 0x16) | ||
113 | |||
114 | #define cpu_is_omap7xx() 0 | ||
115 | #define cpu_is_omap15xx() 0 | ||
116 | #define cpu_is_omap16xx() 0 | ||
117 | |||
118 | #if defined(MULTI_OMAP1) | ||
119 | # if defined(CONFIG_ARCH_OMAP730) | ||
120 | # undef cpu_is_omap7xx | ||
121 | # define cpu_is_omap7xx() is_omap7xx() | ||
122 | # endif | ||
123 | # if defined(CONFIG_ARCH_OMAP850) | ||
124 | # undef cpu_is_omap7xx | ||
125 | # define cpu_is_omap7xx() is_omap7xx() | ||
126 | # endif | ||
127 | # if defined(CONFIG_ARCH_OMAP15XX) | ||
128 | # undef cpu_is_omap15xx | ||
129 | # define cpu_is_omap15xx() is_omap15xx() | ||
130 | # endif | ||
131 | # if defined(CONFIG_ARCH_OMAP16XX) | ||
132 | # undef cpu_is_omap16xx | ||
133 | # define cpu_is_omap16xx() is_omap16xx() | ||
134 | # endif | ||
135 | #else | ||
136 | # if defined(CONFIG_ARCH_OMAP730) | ||
137 | # undef cpu_is_omap7xx | ||
138 | # define cpu_is_omap7xx() 1 | ||
139 | # endif | ||
140 | # if defined(CONFIG_ARCH_OMAP850) | ||
141 | # undef cpu_is_omap7xx | ||
142 | # define cpu_is_omap7xx() 1 | ||
143 | # endif | ||
144 | # if defined(CONFIG_ARCH_OMAP15XX) | ||
145 | # undef cpu_is_omap15xx | ||
146 | # define cpu_is_omap15xx() 1 | ||
147 | # endif | ||
148 | # if defined(CONFIG_ARCH_OMAP16XX) | ||
149 | # undef cpu_is_omap16xx | ||
150 | # define cpu_is_omap16xx() 1 | ||
151 | # endif | ||
152 | #endif | ||
153 | |||
154 | /* | ||
155 | * Macros to detect individual cpu types. | ||
156 | * These are only rarely needed. | ||
157 | * cpu_is_omap310(): True for OMAP310 | ||
158 | * cpu_is_omap1510(): True for OMAP1510 | ||
159 | * cpu_is_omap1610(): True for OMAP1610 | ||
160 | * cpu_is_omap1611(): True for OMAP1611 | ||
161 | * cpu_is_omap5912(): True for OMAP5912 | ||
162 | * cpu_is_omap1621(): True for OMAP1621 | ||
163 | * cpu_is_omap1710(): True for OMAP1710 | ||
164 | */ | ||
165 | #define GET_OMAP_TYPE ((omap_rev() >> 16) & 0xffff) | ||
166 | |||
167 | #define IS_OMAP_TYPE(type, id) \ | ||
168 | static inline int is_omap ##type (void) \ | ||
169 | { \ | ||
170 | return (GET_OMAP_TYPE == (id)) ? 1 : 0; \ | ||
171 | } | ||
172 | |||
173 | IS_OMAP_TYPE(310, 0x0310) | ||
174 | IS_OMAP_TYPE(1510, 0x1510) | ||
175 | IS_OMAP_TYPE(1610, 0x1610) | ||
176 | IS_OMAP_TYPE(1611, 0x1611) | ||
177 | IS_OMAP_TYPE(5912, 0x1611) | ||
178 | IS_OMAP_TYPE(1621, 0x1621) | ||
179 | IS_OMAP_TYPE(1710, 0x1710) | ||
180 | |||
181 | #define cpu_is_omap310() 0 | ||
182 | #define cpu_is_omap1510() 0 | ||
183 | #define cpu_is_omap1610() 0 | ||
184 | #define cpu_is_omap5912() 0 | ||
185 | #define cpu_is_omap1611() 0 | ||
186 | #define cpu_is_omap1621() 0 | ||
187 | #define cpu_is_omap1710() 0 | ||
188 | |||
189 | /* These are needed to compile common code */ | ||
190 | #ifdef CONFIG_ARCH_OMAP1 | ||
191 | #define cpu_is_omap242x() 0 | ||
192 | #define cpu_is_omap2430() 0 | ||
193 | #define cpu_is_omap243x() 0 | ||
194 | #define cpu_is_omap24xx() 0 | ||
195 | #define cpu_is_omap34xx() 0 | ||
196 | #define cpu_is_omap44xx() 0 | ||
197 | #define soc_is_omap54xx() 0 | ||
198 | #define soc_is_am33xx() 0 | ||
199 | #define cpu_class_is_omap1() 1 | ||
200 | #define cpu_class_is_omap2() 0 | ||
201 | #endif | ||
202 | |||
203 | /* | ||
204 | * Whether we have MULTI_OMAP1 or not, we still need to distinguish | ||
205 | * between 310 vs. 1510 and 1611B/5912 vs. 1710. | ||
206 | */ | ||
207 | |||
208 | #if defined(CONFIG_ARCH_OMAP15XX) | ||
209 | # undef cpu_is_omap310 | ||
210 | # undef cpu_is_omap1510 | ||
211 | # define cpu_is_omap310() is_omap310() | ||
212 | # define cpu_is_omap1510() is_omap1510() | ||
213 | #endif | ||
214 | |||
215 | #if defined(CONFIG_ARCH_OMAP16XX) | ||
216 | # undef cpu_is_omap1610 | ||
217 | # undef cpu_is_omap1611 | ||
218 | # undef cpu_is_omap5912 | ||
219 | # undef cpu_is_omap1621 | ||
220 | # undef cpu_is_omap1710 | ||
221 | # define cpu_is_omap1610() is_omap1610() | ||
222 | # define cpu_is_omap1611() is_omap1611() | ||
223 | # define cpu_is_omap5912() is_omap5912() | ||
224 | # define cpu_is_omap1621() is_omap1621() | ||
225 | # define cpu_is_omap1710() is_omap1710() | ||
226 | #endif | ||
227 | |||
228 | #endif /* __ASSEMBLY__ */ | ||
229 | #endif | ||