diff options
Diffstat (limited to 'arch/arm/mach-omap2')
36 files changed, 556 insertions, 444 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 0af7ca02314d..cb31d4390d52 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -6,7 +6,6 @@ config ARCH_OMAP2 | |||
6 | depends on ARCH_MULTI_V6 | 6 | depends on ARCH_MULTI_V6 |
7 | select ARCH_OMAP2PLUS | 7 | select ARCH_OMAP2PLUS |
8 | select CPU_V6 | 8 | select CPU_V6 |
9 | select MULTI_IRQ_HANDLER | ||
10 | select SOC_HAS_OMAP2_SDRC | 9 | select SOC_HAS_OMAP2_SDRC |
11 | 10 | ||
12 | config ARCH_OMAP3 | 11 | config ARCH_OMAP3 |
@@ -15,13 +14,10 @@ config ARCH_OMAP3 | |||
15 | select ARCH_OMAP2PLUS | 14 | select ARCH_OMAP2PLUS |
16 | select ARCH_HAS_OPP | 15 | select ARCH_HAS_OPP |
17 | select ARM_CPU_SUSPEND if PM | 16 | select ARM_CPU_SUSPEND if PM |
18 | select CPU_V7 | ||
19 | select MULTI_IRQ_HANDLER | ||
20 | select OMAP_INTERCONNECT | 17 | select OMAP_INTERCONNECT |
21 | select PM_OPP if PM | 18 | select PM_OPP if PM |
22 | select PM_RUNTIME if CPU_IDLE | 19 | select PM_RUNTIME if CPU_IDLE |
23 | select SOC_HAS_OMAP2_SDRC | 20 | select SOC_HAS_OMAP2_SDRC |
24 | select USB_ARCH_HAS_EHCI if USB_SUPPORT | ||
25 | 21 | ||
26 | config ARCH_OMAP4 | 22 | config ARCH_OMAP4 |
27 | bool "TI OMAP4" | 23 | bool "TI OMAP4" |
@@ -33,16 +29,13 @@ config ARCH_OMAP4 | |||
33 | select ARM_ERRATA_720789 | 29 | select ARM_ERRATA_720789 |
34 | select ARM_GIC | 30 | select ARM_GIC |
35 | select CACHE_L2X0 | 31 | select CACHE_L2X0 |
36 | select CPU_V7 | ||
37 | select HAVE_ARM_SCU if SMP | 32 | select HAVE_ARM_SCU if SMP |
38 | select HAVE_ARM_TWD if SMP | 33 | select HAVE_ARM_TWD if SMP |
39 | select HAVE_SMP | ||
40 | select OMAP_INTERCONNECT | 34 | select OMAP_INTERCONNECT |
41 | select PL310_ERRATA_588369 | 35 | select PL310_ERRATA_588369 |
42 | select PL310_ERRATA_727915 | 36 | select PL310_ERRATA_727915 |
43 | select PM_OPP if PM | 37 | select PM_OPP if PM |
44 | select PM_RUNTIME if CPU_IDLE | 38 | select PM_RUNTIME if CPU_IDLE |
45 | select USB_ARCH_HAS_EHCI if USB_SUPPORT | ||
46 | select ARM_ERRATA_754322 | 39 | select ARM_ERRATA_754322 |
47 | select ARM_ERRATA_775420 | 40 | select ARM_ERRATA_775420 |
48 | 41 | ||
@@ -53,10 +46,8 @@ config SOC_OMAP5 | |||
53 | select ARCH_HAS_OPP | 46 | select ARCH_HAS_OPP |
54 | select ARM_CPU_SUSPEND if PM | 47 | select ARM_CPU_SUSPEND if PM |
55 | select ARM_GIC | 48 | select ARM_GIC |
56 | select CPU_V7 | ||
57 | select HAVE_ARM_SCU if SMP | 49 | select HAVE_ARM_SCU if SMP |
58 | select HAVE_ARM_TWD if SMP | 50 | select HAVE_ARM_TWD if SMP |
59 | select HAVE_SMP | ||
60 | select HAVE_ARM_ARCH_TIMER | 51 | select HAVE_ARM_ARCH_TIMER |
61 | select ARM_ERRATA_798181 if SMP | 52 | select ARM_ERRATA_798181 if SMP |
62 | 53 | ||
@@ -66,16 +57,12 @@ config SOC_AM33XX | |||
66 | select ARCH_OMAP2PLUS | 57 | select ARCH_OMAP2PLUS |
67 | select ARCH_HAS_OPP | 58 | select ARCH_HAS_OPP |
68 | select ARM_CPU_SUSPEND if PM | 59 | select ARM_CPU_SUSPEND if PM |
69 | select CPU_V7 | ||
70 | select MULTI_IRQ_HANDLER | ||
71 | 60 | ||
72 | config SOC_AM43XX | 61 | config SOC_AM43XX |
73 | bool "TI AM43x" | 62 | bool "TI AM43x" |
74 | depends on ARCH_MULTI_V7 | 63 | depends on ARCH_MULTI_V7 |
75 | select CPU_V7 | ||
76 | select ARCH_OMAP2PLUS | 64 | select ARCH_OMAP2PLUS |
77 | select ARCH_HAS_OPP | 65 | select ARCH_HAS_OPP |
78 | select MULTI_IRQ_HANDLER | ||
79 | select ARM_GIC | 66 | select ARM_GIC |
80 | select MACH_OMAP_GENERIC | 67 | select MACH_OMAP_GENERIC |
81 | 68 | ||
@@ -86,9 +73,8 @@ config SOC_DRA7XX | |||
86 | select ARCH_HAS_OPP | 73 | select ARCH_HAS_OPP |
87 | select ARM_CPU_SUSPEND if PM | 74 | select ARM_CPU_SUSPEND if PM |
88 | select ARM_GIC | 75 | select ARM_GIC |
89 | select CPU_V7 | ||
90 | select HAVE_SMP | ||
91 | select HAVE_ARM_ARCH_TIMER | 76 | select HAVE_ARM_ARCH_TIMER |
77 | select IRQ_CROSSBAR | ||
92 | 78 | ||
93 | config ARCH_OMAP2PLUS | 79 | config ARCH_OMAP2PLUS |
94 | bool | 80 | bool |
@@ -98,17 +84,12 @@ config ARCH_OMAP2PLUS | |||
98 | select ARCH_OMAP | 84 | select ARCH_OMAP |
99 | select ARCH_REQUIRE_GPIOLIB | 85 | select ARCH_REQUIRE_GPIOLIB |
100 | select CLKSRC_MMIO | 86 | select CLKSRC_MMIO |
101 | select COMMON_CLK | ||
102 | select GENERIC_CLOCKEVENTS | ||
103 | select GENERIC_IRQ_CHIP | 87 | select GENERIC_IRQ_CHIP |
104 | select MACH_OMAP_GENERIC | 88 | select MACH_OMAP_GENERIC |
105 | select OMAP_DM_TIMER | 89 | select OMAP_DM_TIMER |
106 | select PINCTRL | 90 | select PINCTRL |
107 | select PROC_DEVICETREE if PROC_FS | ||
108 | select SOC_BUS | 91 | select SOC_BUS |
109 | select SPARSE_IRQ | ||
110 | select TI_PRIV_EDMA | 92 | select TI_PRIV_EDMA |
111 | select USE_OF | ||
112 | help | 93 | help |
113 | Systems based on OMAP2, OMAP3, OMAP4 or OMAP5 | 94 | Systems based on OMAP2, OMAP3, OMAP4 or OMAP5 |
114 | 95 | ||
@@ -169,12 +150,6 @@ config SOC_TI81XX | |||
169 | depends on ARCH_OMAP3 | 150 | depends on ARCH_OMAP3 |
170 | default y | 151 | default y |
171 | 152 | ||
172 | config OMAP_PACKAGE_ZAF | ||
173 | bool | ||
174 | |||
175 | config OMAP_PACKAGE_ZAC | ||
176 | bool | ||
177 | |||
178 | config OMAP_PACKAGE_CBC | 153 | config OMAP_PACKAGE_CBC |
179 | bool | 154 | bool |
180 | 155 | ||
@@ -284,7 +259,6 @@ config MACH_NOKIA_N8X0 | |||
284 | default y | 259 | default y |
285 | select MACH_NOKIA_N810 | 260 | select MACH_NOKIA_N810 |
286 | select MACH_NOKIA_N810_WIMAX | 261 | select MACH_NOKIA_N810_WIMAX |
287 | select OMAP_PACKAGE_ZAC | ||
288 | 262 | ||
289 | config MACH_NOKIA_RX51 | 263 | config MACH_NOKIA_RX51 |
290 | bool "Nokia N900 (RX-51) phone" | 264 | bool "Nokia N900 (RX-51) phone" |
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index e6eec6f72fd3..8421f38cf445 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -60,6 +60,7 @@ AFLAGS_sram34xx.o :=-Wa,-march=armv7-a | |||
60 | obj-$(CONFIG_SOC_OMAP2420) += omap2-restart.o | 60 | obj-$(CONFIG_SOC_OMAP2420) += omap2-restart.o |
61 | obj-$(CONFIG_SOC_OMAP2430) += omap2-restart.o | 61 | obj-$(CONFIG_SOC_OMAP2430) += omap2-restart.o |
62 | obj-$(CONFIG_SOC_AM33XX) += am33xx-restart.o | 62 | obj-$(CONFIG_SOC_AM33XX) += am33xx-restart.o |
63 | obj-$(CONFIG_SOC_AM43XX) += omap4-restart.o | ||
63 | obj-$(CONFIG_ARCH_OMAP3) += omap3-restart.o | 64 | obj-$(CONFIG_ARCH_OMAP3) += omap3-restart.o |
64 | obj-$(CONFIG_ARCH_OMAP4) += omap4-restart.o | 65 | obj-$(CONFIG_ARCH_OMAP4) += omap4-restart.o |
65 | obj-$(CONFIG_SOC_OMAP5) += omap4-restart.o | 66 | obj-$(CONFIG_SOC_OMAP5) += omap4-restart.o |
diff --git a/arch/arm/mach-omap2/am35xx-emac.c b/arch/arm/mach-omap2/am35xx-emac.c index 25b79a297365..6a6935caac1e 100644 --- a/arch/arm/mach-omap2/am35xx-emac.c +++ b/arch/arm/mach-omap2/am35xx-emac.c | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <linux/err.h> | 18 | #include <linux/err.h> |
19 | #include <linux/davinci_emac.h> | 19 | #include <linux/davinci_emac.h> |
20 | #include <asm/system.h> | ||
21 | #include "omap_device.h" | 20 | #include "omap_device.h" |
22 | #include "am35xx.h" | 21 | #include "am35xx.h" |
23 | #include "control.h" | 22 | #include "control.h" |
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index 8dd0ec858cf1..018353d88b96 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c | |||
@@ -16,6 +16,8 @@ | |||
16 | * | 16 | * |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/clk-provider.h> | ||
20 | #include <linux/clkdev.h> | ||
19 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
20 | #include <linux/init.h> | 22 | #include <linux/init.h> |
21 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
@@ -542,8 +544,22 @@ static struct isp_platform_data cm_t35_isp_pdata = { | |||
542 | .subdevs = cm_t35_isp_subdevs, | 544 | .subdevs = cm_t35_isp_subdevs, |
543 | }; | 545 | }; |
544 | 546 | ||
547 | static struct regulator_consumer_supply cm_t35_camera_supplies[] = { | ||
548 | REGULATOR_SUPPLY("vaa", "3-005d"), | ||
549 | REGULATOR_SUPPLY("vdd", "3-005d"), | ||
550 | }; | ||
551 | |||
545 | static void __init cm_t35_init_camera(void) | 552 | static void __init cm_t35_init_camera(void) |
546 | { | 553 | { |
554 | struct clk *clk; | ||
555 | |||
556 | clk = clk_register_fixed_rate(NULL, "mt9t001-clkin", NULL, CLK_IS_ROOT, | ||
557 | 48000000); | ||
558 | clk_register_clkdev(clk, NULL, "3-005d"); | ||
559 | |||
560 | regulator_register_fixed(2, cm_t35_camera_supplies, | ||
561 | ARRAY_SIZE(cm_t35_camera_supplies)); | ||
562 | |||
547 | if (omap3_init_camera(&cm_t35_isp_pdata) < 0) | 563 | if (omap3_init_camera(&cm_t35_isp_pdata) < 0) |
548 | pr_warn("CM-T3x: Failed registering camera device!\n"); | 564 | pr_warn("CM-T3x: Failed registering camera device!\n"); |
549 | } | 565 | } |
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 8e3daa11602b..b8920b6bc104 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c | |||
@@ -35,7 +35,11 @@ static struct of_device_id omap_dt_match_table[] __initdata = { | |||
35 | 35 | ||
36 | static void __init omap_generic_init(void) | 36 | static void __init omap_generic_init(void) |
37 | { | 37 | { |
38 | omapdss_early_init_of(); | ||
39 | |||
38 | pdata_quirks_init(omap_dt_match_table); | 40 | pdata_quirks_init(omap_dt_match_table); |
41 | |||
42 | omapdss_init_of(); | ||
39 | } | 43 | } |
40 | 44 | ||
41 | #ifdef CONFIG_SOC_OMAP2420 | 45 | #ifdef CONFIG_SOC_OMAP2420 |
@@ -229,8 +233,9 @@ DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)") | |||
229 | .init_late = am43xx_init_late, | 233 | .init_late = am43xx_init_late, |
230 | .init_irq = omap_gic_of_init, | 234 | .init_irq = omap_gic_of_init, |
231 | .init_machine = omap_generic_init, | 235 | .init_machine = omap_generic_init, |
232 | .init_time = omap3_sync32k_timer_init, | 236 | .init_time = omap3_gptimer_timer_init, |
233 | .dt_compat = am43_boards_compat, | 237 | .dt_compat = am43_boards_compat, |
238 | .restart = omap44xx_restart, | ||
234 | MACHINE_END | 239 | MACHINE_END |
235 | #endif | 240 | #endif |
236 | 241 | ||
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index de1bc6bbe585..cf18340eb3bb 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c | |||
@@ -536,11 +536,13 @@ static struct spi_board_info omap3pandora_spi_board_info[] __initdata = { | |||
536 | 536 | ||
537 | static void __init pandora_wl1251_init(void) | 537 | static void __init pandora_wl1251_init(void) |
538 | { | 538 | { |
539 | struct wl12xx_platform_data pandora_wl1251_pdata; | 539 | struct wl1251_platform_data pandora_wl1251_pdata; |
540 | int ret; | 540 | int ret; |
541 | 541 | ||
542 | memset(&pandora_wl1251_pdata, 0, sizeof(pandora_wl1251_pdata)); | 542 | memset(&pandora_wl1251_pdata, 0, sizeof(pandora_wl1251_pdata)); |
543 | 543 | ||
544 | pandora_wl1251_pdata.power_gpio = -1; | ||
545 | |||
544 | ret = gpio_request_one(PANDORA_WIFI_IRQ_GPIO, GPIOF_IN, "wl1251 irq"); | 546 | ret = gpio_request_one(PANDORA_WIFI_IRQ_GPIO, GPIOF_IN, "wl1251 irq"); |
545 | if (ret < 0) | 547 | if (ret < 0) |
546 | goto fail; | 548 | goto fail; |
@@ -550,7 +552,7 @@ static void __init pandora_wl1251_init(void) | |||
550 | goto fail_irq; | 552 | goto fail_irq; |
551 | 553 | ||
552 | pandora_wl1251_pdata.use_eeprom = true; | 554 | pandora_wl1251_pdata.use_eeprom = true; |
553 | ret = wl12xx_set_platform_data(&pandora_wl1251_pdata); | 555 | ret = wl1251_set_platform_data(&pandora_wl1251_pdata); |
554 | if (ret < 0) | 556 | if (ret < 0) |
555 | goto fail_irq; | 557 | goto fail_irq; |
556 | 558 | ||
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index 8760bbe3baab..ddfc8df83c6a 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -84,7 +84,7 @@ enum { | |||
84 | RX51_SPI_MIPID, /* LCD panel */ | 84 | RX51_SPI_MIPID, /* LCD panel */ |
85 | }; | 85 | }; |
86 | 86 | ||
87 | static struct wl12xx_platform_data wl1251_pdata; | 87 | static struct wl1251_platform_data wl1251_pdata; |
88 | static struct tsc2005_platform_data tsc2005_pdata; | 88 | static struct tsc2005_platform_data tsc2005_pdata; |
89 | 89 | ||
90 | #if defined(CONFIG_SENSORS_LIS3_I2C) || defined(CONFIG_SENSORS_LIS3_I2C_MODULE) | 90 | #if defined(CONFIG_SENSORS_LIS3_I2C) || defined(CONFIG_SENSORS_LIS3_I2C_MODULE) |
@@ -1173,13 +1173,7 @@ static inline void board_smc91x_init(void) | |||
1173 | 1173 | ||
1174 | #endif | 1174 | #endif |
1175 | 1175 | ||
1176 | static void rx51_wl1251_set_power(bool enable) | ||
1177 | { | ||
1178 | gpio_set_value(RX51_WL1251_POWER_GPIO, enable); | ||
1179 | } | ||
1180 | |||
1181 | static struct gpio rx51_wl1251_gpios[] __initdata = { | 1176 | static struct gpio rx51_wl1251_gpios[] __initdata = { |
1182 | { RX51_WL1251_POWER_GPIO, GPIOF_OUT_INIT_LOW, "wl1251 power" }, | ||
1183 | { RX51_WL1251_IRQ_GPIO, GPIOF_IN, "wl1251 irq" }, | 1177 | { RX51_WL1251_IRQ_GPIO, GPIOF_IN, "wl1251 irq" }, |
1184 | }; | 1178 | }; |
1185 | 1179 | ||
@@ -1196,17 +1190,16 @@ static void __init rx51_init_wl1251(void) | |||
1196 | if (irq < 0) | 1190 | if (irq < 0) |
1197 | goto err_irq; | 1191 | goto err_irq; |
1198 | 1192 | ||
1199 | wl1251_pdata.set_power = rx51_wl1251_set_power; | 1193 | wl1251_pdata.power_gpio = RX51_WL1251_POWER_GPIO; |
1200 | rx51_peripherals_spi_board_info[RX51_SPI_WL1251].irq = irq; | 1194 | rx51_peripherals_spi_board_info[RX51_SPI_WL1251].irq = irq; |
1201 | 1195 | ||
1202 | return; | 1196 | return; |
1203 | 1197 | ||
1204 | err_irq: | 1198 | err_irq: |
1205 | gpio_free(RX51_WL1251_IRQ_GPIO); | 1199 | gpio_free(RX51_WL1251_IRQ_GPIO); |
1206 | gpio_free(RX51_WL1251_POWER_GPIO); | ||
1207 | error: | 1200 | error: |
1208 | printk(KERN_ERR "wl1251 board initialisation failed\n"); | 1201 | printk(KERN_ERR "wl1251 board initialisation failed\n"); |
1209 | wl1251_pdata.set_power = NULL; | 1202 | wl1251_pdata.power_gpio = -1; |
1210 | 1203 | ||
1211 | /* | 1204 | /* |
1212 | * Now rx51_peripherals_spi_board_info[1].irq is zero and | 1205 | * Now rx51_peripherals_spi_board_info[1].irq is zero and |
diff --git a/arch/arm/mach-omap2/cclock3xxx_data.c b/arch/arm/mach-omap2/cclock3xxx_data.c index 11ed9152e665..8f5121b89688 100644 --- a/arch/arm/mach-omap2/cclock3xxx_data.c +++ b/arch/arm/mach-omap2/cclock3xxx_data.c | |||
@@ -3497,10 +3497,6 @@ static struct omap_clk omap3xxx_clks[] = { | |||
3497 | CLK(NULL, "dss_tv_fck", &dss_tv_fck), | 3497 | CLK(NULL, "dss_tv_fck", &dss_tv_fck), |
3498 | CLK(NULL, "dss_96m_fck", &dss_96m_fck), | 3498 | CLK(NULL, "dss_96m_fck", &dss_96m_fck), |
3499 | CLK(NULL, "dss2_alwon_fck", &dss2_alwon_fck), | 3499 | CLK(NULL, "dss2_alwon_fck", &dss2_alwon_fck), |
3500 | CLK(NULL, "utmi_p1_gfclk", &dummy_ck), | ||
3501 | CLK(NULL, "utmi_p2_gfclk", &dummy_ck), | ||
3502 | CLK(NULL, "xclk60mhsp1_ck", &dummy_ck), | ||
3503 | CLK(NULL, "xclk60mhsp2_ck", &dummy_ck), | ||
3504 | CLK(NULL, "init_60m_fclk", &dummy_ck), | 3500 | CLK(NULL, "init_60m_fclk", &dummy_ck), |
3505 | CLK(NULL, "gpt1_fck", &gpt1_fck), | 3501 | CLK(NULL, "gpt1_fck", &gpt1_fck), |
3506 | CLK(NULL, "aes2_ick", &aes2_ick), | 3502 | CLK(NULL, "aes2_ick", &aes2_ick), |
diff --git a/arch/arm/mach-omap2/clkt_dpll.c b/arch/arm/mach-omap2/clkt_dpll.c index 47f9562ca7aa..2649ce445845 100644 --- a/arch/arm/mach-omap2/clkt_dpll.c +++ b/arch/arm/mach-omap2/clkt_dpll.c | |||
@@ -306,7 +306,7 @@ long omap2_dpll_round_rate(struct clk_hw *hw, unsigned long target_rate, | |||
306 | 306 | ||
307 | ref_rate = __clk_get_rate(dd->clk_ref); | 307 | ref_rate = __clk_get_rate(dd->clk_ref); |
308 | clk_name = __clk_get_name(hw->clk); | 308 | clk_name = __clk_get_name(hw->clk); |
309 | pr_debug("clock: %s: starting DPLL round_rate, target rate %ld\n", | 309 | pr_debug("clock: %s: starting DPLL round_rate, target rate %lu\n", |
310 | clk_name, target_rate); | 310 | clk_name, target_rate); |
311 | 311 | ||
312 | scaled_rt_rp = target_rate / (ref_rate / DPLL_SCALE_FACTOR); | 312 | scaled_rt_rp = target_rate / (ref_rate / DPLL_SCALE_FACTOR); |
@@ -342,7 +342,7 @@ long omap2_dpll_round_rate(struct clk_hw *hw, unsigned long target_rate, | |||
342 | if (r == DPLL_MULT_UNDERFLOW) | 342 | if (r == DPLL_MULT_UNDERFLOW) |
343 | continue; | 343 | continue; |
344 | 344 | ||
345 | pr_debug("clock: %s: m = %d: n = %d: new_rate = %ld\n", | 345 | pr_debug("clock: %s: m = %d: n = %d: new_rate = %lu\n", |
346 | clk_name, m, n, new_rate); | 346 | clk_name, m, n, new_rate); |
347 | 347 | ||
348 | if (target_rate == new_rate) { | 348 | if (target_rate == new_rate) { |
@@ -354,7 +354,7 @@ long omap2_dpll_round_rate(struct clk_hw *hw, unsigned long target_rate, | |||
354 | } | 354 | } |
355 | 355 | ||
356 | if (target_rate != new_rate) { | 356 | if (target_rate != new_rate) { |
357 | pr_debug("clock: %s: cannot round to rate %ld\n", | 357 | pr_debug("clock: %s: cannot round to rate %lu\n", |
358 | clk_name, target_rate); | 358 | clk_name, target_rate); |
359 | return ~0; | 359 | return ~0; |
360 | } | 360 | } |
diff --git a/arch/arm/mach-omap2/clockdomains3xxx_data.c b/arch/arm/mach-omap2/clockdomains3xxx_data.c index e6b91e552d3d..f03dc97921ad 100644 --- a/arch/arm/mach-omap2/clockdomains3xxx_data.c +++ b/arch/arm/mach-omap2/clockdomains3xxx_data.c | |||
@@ -247,7 +247,7 @@ static struct clockdomain neon_clkdm = { | |||
247 | static struct clockdomain iva2_clkdm = { | 247 | static struct clockdomain iva2_clkdm = { |
248 | .name = "iva2_clkdm", | 248 | .name = "iva2_clkdm", |
249 | .pwrdm = { .name = "iva2_pwrdm" }, | 249 | .pwrdm = { .name = "iva2_pwrdm" }, |
250 | .flags = CLKDM_CAN_HWSUP_SWSUP, | 250 | .flags = CLKDM_CAN_SWSUP, |
251 | .dep_bit = OMAP3430_PM_WKDEP_MPU_EN_IVA2_SHIFT, | 251 | .dep_bit = OMAP3430_PM_WKDEP_MPU_EN_IVA2_SHIFT, |
252 | .wkdep_srcs = iva2_wkdeps, | 252 | .wkdep_srcs = iva2_wkdeps, |
253 | .clktrctrl_mask = OMAP3430_CLKTRCTRL_IVA2_MASK, | 253 | .clktrctrl_mask = OMAP3430_CLKTRCTRL_IVA2_MASK, |
diff --git a/arch/arm/mach-omap2/cminst44xx.c b/arch/arm/mach-omap2/cminst44xx.c index 731ca134348c..f5c4731b6f06 100644 --- a/arch/arm/mach-omap2/cminst44xx.c +++ b/arch/arm/mach-omap2/cminst44xx.c | |||
@@ -254,6 +254,11 @@ void omap4_cminst_clkdm_force_wakeup(u8 part, u16 inst, u16 cdoffs) | |||
254 | * | 254 | * |
255 | */ | 255 | */ |
256 | 256 | ||
257 | void omap4_cminst_clkdm_force_sleep(u8 part, u16 inst, u16 cdoffs) | ||
258 | { | ||
259 | _clktrctrl_write(OMAP34XX_CLKSTCTRL_FORCE_SLEEP, part, inst, cdoffs); | ||
260 | } | ||
261 | |||
257 | /** | 262 | /** |
258 | * omap4_cminst_wait_module_ready - wait for a module to be in 'func' state | 263 | * omap4_cminst_wait_module_ready - wait for a module to be in 'func' state |
259 | * @part: PRCM partition ID that the CM_CLKCTRL register exists in | 264 | * @part: PRCM partition ID that the CM_CLKCTRL register exists in |
@@ -404,8 +409,17 @@ static int omap4_clkdm_clear_all_wkup_sleep_deps(struct clockdomain *clkdm) | |||
404 | 409 | ||
405 | static int omap4_clkdm_sleep(struct clockdomain *clkdm) | 410 | static int omap4_clkdm_sleep(struct clockdomain *clkdm) |
406 | { | 411 | { |
407 | omap4_cminst_clkdm_enable_hwsup(clkdm->prcm_partition, | 412 | if (clkdm->flags & CLKDM_CAN_HWSUP) |
408 | clkdm->cm_inst, clkdm->clkdm_offs); | 413 | omap4_cminst_clkdm_enable_hwsup(clkdm->prcm_partition, |
414 | clkdm->cm_inst, | ||
415 | clkdm->clkdm_offs); | ||
416 | else if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP) | ||
417 | omap4_cminst_clkdm_force_sleep(clkdm->prcm_partition, | ||
418 | clkdm->cm_inst, | ||
419 | clkdm->clkdm_offs); | ||
420 | else | ||
421 | return -EINVAL; | ||
422 | |||
409 | return 0; | 423 | return 0; |
410 | } | 424 | } |
411 | 425 | ||
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index a6aae300542c..d88aff7baff8 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
@@ -315,5 +315,8 @@ extern int omap_dss_reset(struct omap_hwmod *); | |||
315 | /* SoC specific clock initializer */ | 315 | /* SoC specific clock initializer */ |
316 | int omap_clk_init(void); | 316 | int omap_clk_init(void); |
317 | 317 | ||
318 | int __init omapdss_init_of(void); | ||
319 | void __init omapdss_early_init_of(void); | ||
320 | |||
318 | #endif /* __ASSEMBLER__ */ | 321 | #endif /* __ASSEMBLER__ */ |
319 | #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ | 322 | #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 0dd6398bade4..e58609b312c7 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -229,6 +229,9 @@ static struct omap_iommu_arch_data omap3_isp_iommu = { | |||
229 | 229 | ||
230 | int omap3_init_camera(struct isp_platform_data *pdata) | 230 | int omap3_init_camera(struct isp_platform_data *pdata) |
231 | { | 231 | { |
232 | if (of_have_populated_dt()) | ||
233 | omap3_isp_iommu.name = "480bd400.mmu"; | ||
234 | |||
232 | omap3isp_device.dev.platform_data = pdata; | 235 | omap3isp_device.dev.platform_data = pdata; |
233 | omap3isp_device.dev.archdata.iommu = &omap3_isp_iommu; | 236 | omap3isp_device.dev.archdata.iommu = &omap3_isp_iommu; |
234 | 237 | ||
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c index 4cf165502b35..16d33d831287 100644 --- a/arch/arm/mach-omap2/display.c +++ b/arch/arm/mach-omap2/display.c | |||
@@ -23,6 +23,9 @@ | |||
23 | #include <linux/clk.h> | 23 | #include <linux/clk.h> |
24 | #include <linux/err.h> | 24 | #include <linux/err.h> |
25 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
26 | #include <linux/of.h> | ||
27 | #include <linux/of_platform.h> | ||
28 | #include <linux/slab.h> | ||
26 | 29 | ||
27 | #include <video/omapdss.h> | 30 | #include <video/omapdss.h> |
28 | #include "omap_hwmod.h" | 31 | #include "omap_hwmod.h" |
@@ -301,7 +304,6 @@ int __init omap_display_init(struct omap_dss_board_info *board_data) | |||
301 | board_data->version = ver; | 304 | board_data->version = ver; |
302 | board_data->dsi_enable_pads = omap_dsi_enable_pads; | 305 | board_data->dsi_enable_pads = omap_dsi_enable_pads; |
303 | board_data->dsi_disable_pads = omap_dsi_disable_pads; | 306 | board_data->dsi_disable_pads = omap_dsi_disable_pads; |
304 | board_data->get_context_loss_count = omap_pm_get_dev_context_loss_count; | ||
305 | board_data->set_min_bus_tput = omap_dss_set_min_bus_tput; | 307 | board_data->set_min_bus_tput = omap_dss_set_min_bus_tput; |
306 | 308 | ||
307 | omap_display_device.dev.platform_data = board_data; | 309 | omap_display_device.dev.platform_data = board_data; |
@@ -552,3 +554,166 @@ int omap_dss_reset(struct omap_hwmod *oh) | |||
552 | 554 | ||
553 | return r; | 555 | return r; |
554 | } | 556 | } |
557 | |||
558 | /* list of 'compatible' nodes to convert to omapdss specific */ | ||
559 | static const char * const dss_compat_conv_list[] __initconst = { | ||
560 | "composite-connector", | ||
561 | "dvi-connector", | ||
562 | "hdmi-connector", | ||
563 | "panel-dpi", | ||
564 | "panel-dsi-cm", | ||
565 | "sony,acx565akm", | ||
566 | "svideo-connector", | ||
567 | "ti,tfp410", | ||
568 | "ti,tpd12s015", | ||
569 | }; | ||
570 | |||
571 | /* prepend compatible string with "omapdss," */ | ||
572 | static __init void omapdss_omapify_node(struct device_node *node, | ||
573 | const char *compat) | ||
574 | { | ||
575 | char *new_compat; | ||
576 | struct property *prop; | ||
577 | |||
578 | new_compat = kasprintf(GFP_KERNEL, "omapdss,%s", compat); | ||
579 | |||
580 | prop = kzalloc(sizeof(*prop), GFP_KERNEL); | ||
581 | |||
582 | if (!prop) { | ||
583 | pr_err("omapdss_omapify_node: kzalloc failed\n"); | ||
584 | return; | ||
585 | } | ||
586 | |||
587 | prop->name = "compatible"; | ||
588 | prop->value = new_compat; | ||
589 | prop->length = strlen(new_compat) + 1; | ||
590 | |||
591 | of_update_property(node, prop); | ||
592 | } | ||
593 | |||
594 | /* | ||
595 | * As omapdss panel drivers are omapdss specific, but we want to define the | ||
596 | * DT-data in generic manner, we convert the compatible strings of the panel | ||
597 | * nodes from "panel-foo" to "omapdss,panel-foo". This way we can have both | ||
598 | * correct DT data and omapdss specific drivers. | ||
599 | * | ||
600 | * When we get generic panel drivers to the kernel, this will be removed. | ||
601 | */ | ||
602 | void __init omapdss_early_init_of(void) | ||
603 | { | ||
604 | int i; | ||
605 | |||
606 | for (i = 0; i < ARRAY_SIZE(dss_compat_conv_list); ++i) { | ||
607 | const char *compat = dss_compat_conv_list[i]; | ||
608 | struct device_node *node = NULL; | ||
609 | |||
610 | while ((node = of_find_compatible_node(node, NULL, compat))) { | ||
611 | if (!of_device_is_available(node)) | ||
612 | continue; | ||
613 | |||
614 | omapdss_omapify_node(node, compat); | ||
615 | } | ||
616 | } | ||
617 | } | ||
618 | |||
619 | struct device_node * __init omapdss_find_dss_of_node(void) | ||
620 | { | ||
621 | struct device_node *node; | ||
622 | |||
623 | node = of_find_compatible_node(NULL, NULL, "ti,omap2-dss"); | ||
624 | if (node) | ||
625 | return node; | ||
626 | |||
627 | node = of_find_compatible_node(NULL, NULL, "ti,omap3-dss"); | ||
628 | if (node) | ||
629 | return node; | ||
630 | |||
631 | node = of_find_compatible_node(NULL, NULL, "ti,omap4-dss"); | ||
632 | if (node) | ||
633 | return node; | ||
634 | |||
635 | return NULL; | ||
636 | } | ||
637 | |||
638 | int __init omapdss_init_of(void) | ||
639 | { | ||
640 | int r; | ||
641 | enum omapdss_version ver; | ||
642 | struct device_node *node; | ||
643 | struct platform_device *pdev; | ||
644 | |||
645 | static struct omap_dss_board_info board_data = { | ||
646 | .dsi_enable_pads = omap_dsi_enable_pads, | ||
647 | .dsi_disable_pads = omap_dsi_disable_pads, | ||
648 | .set_min_bus_tput = omap_dss_set_min_bus_tput, | ||
649 | }; | ||
650 | |||
651 | /* only create dss helper devices if dss is enabled in the .dts */ | ||
652 | |||
653 | node = omapdss_find_dss_of_node(); | ||
654 | if (!node) | ||
655 | return 0; | ||
656 | |||
657 | if (!of_device_is_available(node)) | ||
658 | return 0; | ||
659 | |||
660 | ver = omap_display_get_version(); | ||
661 | |||
662 | if (ver == OMAPDSS_VER_UNKNOWN) { | ||
663 | pr_err("DSS not supported on this SoC\n"); | ||
664 | return -ENODEV; | ||
665 | } | ||
666 | |||
667 | pdev = of_find_device_by_node(node); | ||
668 | |||
669 | if (!pdev) { | ||
670 | pr_err("Unable to find DSS platform device\n"); | ||
671 | return -ENODEV; | ||
672 | } | ||
673 | |||
674 | r = of_platform_populate(node, NULL, NULL, &pdev->dev); | ||
675 | if (r) { | ||
676 | pr_err("Unable to populate DSS submodule devices\n"); | ||
677 | return r; | ||
678 | } | ||
679 | |||
680 | board_data.version = ver; | ||
681 | |||
682 | omap_display_device.dev.platform_data = &board_data; | ||
683 | |||
684 | r = platform_device_register(&omap_display_device); | ||
685 | if (r < 0) { | ||
686 | pr_err("Unable to register omapdss device\n"); | ||
687 | return r; | ||
688 | } | ||
689 | |||
690 | /* create DRM device */ | ||
691 | r = omap_init_drm(); | ||
692 | if (r < 0) { | ||
693 | pr_err("Unable to register omapdrm device\n"); | ||
694 | return r; | ||
695 | } | ||
696 | |||
697 | /* create vrfb device */ | ||
698 | r = omap_init_vrfb(); | ||
699 | if (r < 0) { | ||
700 | pr_err("Unable to register omapvrfb device\n"); | ||
701 | return r; | ||
702 | } | ||
703 | |||
704 | /* create FB device */ | ||
705 | r = omap_init_fb(); | ||
706 | if (r < 0) { | ||
707 | pr_err("Unable to register omapfb device\n"); | ||
708 | return r; | ||
709 | } | ||
710 | |||
711 | /* create V4L2 display device */ | ||
712 | r = omap_init_vout(); | ||
713 | if (r < 0) { | ||
714 | pr_err("Unable to register omap_vout device\n"); | ||
715 | return r; | ||
716 | } | ||
717 | |||
718 | return 0; | ||
719 | } | ||
diff --git a/arch/arm/mach-omap2/display.h b/arch/arm/mach-omap2/display.h index f3d2ce4bc262..7375854b16c7 100644 --- a/arch/arm/mach-omap2/display.h +++ b/arch/arm/mach-omap2/display.h | |||
@@ -30,4 +30,7 @@ int omap_init_drm(void); | |||
30 | int omap_init_vrfb(void); | 30 | int omap_init_vrfb(void); |
31 | int omap_init_fb(void); | 31 | int omap_init_fb(void); |
32 | int omap_init_vout(void); | 32 | int omap_init_vout(void); |
33 | |||
34 | struct device_node * __init omapdss_find_dss_of_node(void); | ||
35 | |||
33 | #endif | 36 | #endif |
diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c index 49fd0d501c9b..5689c88d986d 100644 --- a/arch/arm/mach-omap2/dma.c +++ b/arch/arm/mach-omap2/dma.c | |||
@@ -35,97 +35,80 @@ | |||
35 | #include "omap_hwmod.h" | 35 | #include "omap_hwmod.h" |
36 | #include "omap_device.h" | 36 | #include "omap_device.h" |
37 | 37 | ||
38 | #define OMAP2_DMA_STRIDE 0x60 | 38 | static enum omap_reg_offsets dma_common_ch_end; |
39 | 39 | ||
40 | static u32 errata; | 40 | static const struct omap_dma_reg reg_map[] = { |
41 | static u8 dma_stride; | 41 | [REVISION] = { 0x0000, 0x00, OMAP_DMA_REG_32BIT }, |
42 | 42 | [GCR] = { 0x0078, 0x00, OMAP_DMA_REG_32BIT }, | |
43 | static struct omap_dma_dev_attr *d; | 43 | [IRQSTATUS_L0] = { 0x0008, 0x00, OMAP_DMA_REG_32BIT }, |
44 | 44 | [IRQSTATUS_L1] = { 0x000c, 0x00, OMAP_DMA_REG_32BIT }, | |
45 | static enum omap_reg_offsets dma_common_ch_start, dma_common_ch_end; | 45 | [IRQSTATUS_L2] = { 0x0010, 0x00, OMAP_DMA_REG_32BIT }, |
46 | 46 | [IRQSTATUS_L3] = { 0x0014, 0x00, OMAP_DMA_REG_32BIT }, | |
47 | static u16 reg_map[] = { | 47 | [IRQENABLE_L0] = { 0x0018, 0x00, OMAP_DMA_REG_32BIT }, |
48 | [REVISION] = 0x00, | 48 | [IRQENABLE_L1] = { 0x001c, 0x00, OMAP_DMA_REG_32BIT }, |
49 | [GCR] = 0x78, | 49 | [IRQENABLE_L2] = { 0x0020, 0x00, OMAP_DMA_REG_32BIT }, |
50 | [IRQSTATUS_L0] = 0x08, | 50 | [IRQENABLE_L3] = { 0x0024, 0x00, OMAP_DMA_REG_32BIT }, |
51 | [IRQSTATUS_L1] = 0x0c, | 51 | [SYSSTATUS] = { 0x0028, 0x00, OMAP_DMA_REG_32BIT }, |
52 | [IRQSTATUS_L2] = 0x10, | 52 | [OCP_SYSCONFIG] = { 0x002c, 0x00, OMAP_DMA_REG_32BIT }, |
53 | [IRQSTATUS_L3] = 0x14, | 53 | [CAPS_0] = { 0x0064, 0x00, OMAP_DMA_REG_32BIT }, |
54 | [IRQENABLE_L0] = 0x18, | 54 | [CAPS_2] = { 0x006c, 0x00, OMAP_DMA_REG_32BIT }, |
55 | [IRQENABLE_L1] = 0x1c, | 55 | [CAPS_3] = { 0x0070, 0x00, OMAP_DMA_REG_32BIT }, |
56 | [IRQENABLE_L2] = 0x20, | 56 | [CAPS_4] = { 0x0074, 0x00, OMAP_DMA_REG_32BIT }, |
57 | [IRQENABLE_L3] = 0x24, | ||
58 | [SYSSTATUS] = 0x28, | ||
59 | [OCP_SYSCONFIG] = 0x2c, | ||
60 | [CAPS_0] = 0x64, | ||
61 | [CAPS_2] = 0x6c, | ||
62 | [CAPS_3] = 0x70, | ||
63 | [CAPS_4] = 0x74, | ||
64 | 57 | ||
65 | /* Common register offsets */ | 58 | /* Common register offsets */ |
66 | [CCR] = 0x80, | 59 | [CCR] = { 0x0080, 0x60, OMAP_DMA_REG_32BIT }, |
67 | [CLNK_CTRL] = 0x84, | 60 | [CLNK_CTRL] = { 0x0084, 0x60, OMAP_DMA_REG_32BIT }, |
68 | [CICR] = 0x88, | 61 | [CICR] = { 0x0088, 0x60, OMAP_DMA_REG_32BIT }, |
69 | [CSR] = 0x8c, | 62 | [CSR] = { 0x008c, 0x60, OMAP_DMA_REG_32BIT }, |
70 | [CSDP] = 0x90, | 63 | [CSDP] = { 0x0090, 0x60, OMAP_DMA_REG_32BIT }, |
71 | [CEN] = 0x94, | 64 | [CEN] = { 0x0094, 0x60, OMAP_DMA_REG_32BIT }, |
72 | [CFN] = 0x98, | 65 | [CFN] = { 0x0098, 0x60, OMAP_DMA_REG_32BIT }, |
73 | [CSEI] = 0xa4, | 66 | [CSEI] = { 0x00a4, 0x60, OMAP_DMA_REG_32BIT }, |
74 | [CSFI] = 0xa8, | 67 | [CSFI] = { 0x00a8, 0x60, OMAP_DMA_REG_32BIT }, |
75 | [CDEI] = 0xac, | 68 | [CDEI] = { 0x00ac, 0x60, OMAP_DMA_REG_32BIT }, |
76 | [CDFI] = 0xb0, | 69 | [CDFI] = { 0x00b0, 0x60, OMAP_DMA_REG_32BIT }, |
77 | [CSAC] = 0xb4, | 70 | [CSAC] = { 0x00b4, 0x60, OMAP_DMA_REG_32BIT }, |
78 | [CDAC] = 0xb8, | 71 | [CDAC] = { 0x00b8, 0x60, OMAP_DMA_REG_32BIT }, |
79 | 72 | ||
80 | /* Channel specific register offsets */ | 73 | /* Channel specific register offsets */ |
81 | [CSSA] = 0x9c, | 74 | [CSSA] = { 0x009c, 0x60, OMAP_DMA_REG_32BIT }, |
82 | [CDSA] = 0xa0, | 75 | [CDSA] = { 0x00a0, 0x60, OMAP_DMA_REG_32BIT }, |
83 | [CCEN] = 0xbc, | 76 | [CCEN] = { 0x00bc, 0x60, OMAP_DMA_REG_32BIT }, |
84 | [CCFN] = 0xc0, | 77 | [CCFN] = { 0x00c0, 0x60, OMAP_DMA_REG_32BIT }, |
85 | [COLOR] = 0xc4, | 78 | [COLOR] = { 0x00c4, 0x60, OMAP_DMA_REG_32BIT }, |
86 | 79 | ||
87 | /* OMAP4 specific registers */ | 80 | /* OMAP4 specific registers */ |
88 | [CDP] = 0xd0, | 81 | [CDP] = { 0x00d0, 0x60, OMAP_DMA_REG_32BIT }, |
89 | [CNDP] = 0xd4, | 82 | [CNDP] = { 0x00d4, 0x60, OMAP_DMA_REG_32BIT }, |
90 | [CCDN] = 0xd8, | 83 | [CCDN] = { 0x00d8, 0x60, OMAP_DMA_REG_32BIT }, |
91 | }; | 84 | }; |
92 | 85 | ||
93 | static void __iomem *dma_base; | 86 | static void __iomem *dma_base; |
94 | static inline void dma_write(u32 val, int reg, int lch) | 87 | static inline void dma_write(u32 val, int reg, int lch) |
95 | { | 88 | { |
96 | u8 stride; | 89 | void __iomem *addr = dma_base; |
97 | u32 offset; | ||
98 | 90 | ||
99 | stride = (reg >= dma_common_ch_start) ? dma_stride : 0; | 91 | addr += reg_map[reg].offset; |
100 | offset = reg_map[reg] + (stride * lch); | 92 | addr += reg_map[reg].stride * lch; |
101 | __raw_writel(val, dma_base + offset); | 93 | |
94 | __raw_writel(val, addr); | ||
102 | } | 95 | } |
103 | 96 | ||
104 | static inline u32 dma_read(int reg, int lch) | 97 | static inline u32 dma_read(int reg, int lch) |
105 | { | 98 | { |
106 | u8 stride; | 99 | void __iomem *addr = dma_base; |
107 | u32 offset, val; | ||
108 | |||
109 | stride = (reg >= dma_common_ch_start) ? dma_stride : 0; | ||
110 | offset = reg_map[reg] + (stride * lch); | ||
111 | val = __raw_readl(dma_base + offset); | ||
112 | return val; | ||
113 | } | ||
114 | 100 | ||
115 | static inline void omap2_disable_irq_lch(int lch) | 101 | addr += reg_map[reg].offset; |
116 | { | 102 | addr += reg_map[reg].stride * lch; |
117 | u32 val; | ||
118 | 103 | ||
119 | val = dma_read(IRQENABLE_L0, lch); | 104 | return __raw_readl(addr); |
120 | val &= ~(1 << lch); | ||
121 | dma_write(val, IRQENABLE_L0, lch); | ||
122 | } | 105 | } |
123 | 106 | ||
124 | static void omap2_clear_dma(int lch) | 107 | static void omap2_clear_dma(int lch) |
125 | { | 108 | { |
126 | int i = dma_common_ch_start; | 109 | int i; |
127 | 110 | ||
128 | for (; i <= dma_common_ch_end; i += 1) | 111 | for (i = CSDP; i <= dma_common_ch_end; i += 1) |
129 | dma_write(0, i, lch); | 112 | dma_write(0, i, lch); |
130 | } | 113 | } |
131 | 114 | ||
@@ -137,8 +120,9 @@ static void omap2_show_dma_caps(void) | |||
137 | return; | 120 | return; |
138 | } | 121 | } |
139 | 122 | ||
140 | static u32 configure_dma_errata(void) | 123 | static unsigned configure_dma_errata(void) |
141 | { | 124 | { |
125 | unsigned errata = 0; | ||
142 | 126 | ||
143 | /* | 127 | /* |
144 | * Errata applicable for OMAP2430ES1.0 and all omap2420 | 128 | * Errata applicable for OMAP2430ES1.0 and all omap2420 |
@@ -220,48 +204,50 @@ static u32 configure_dma_errata(void) | |||
220 | return errata; | 204 | return errata; |
221 | } | 205 | } |
222 | 206 | ||
207 | static struct omap_system_dma_plat_info dma_plat_info __initdata = { | ||
208 | .reg_map = reg_map, | ||
209 | .channel_stride = 0x60, | ||
210 | .show_dma_caps = omap2_show_dma_caps, | ||
211 | .clear_dma = omap2_clear_dma, | ||
212 | .dma_write = dma_write, | ||
213 | .dma_read = dma_read, | ||
214 | }; | ||
215 | |||
216 | static struct platform_device_info omap_dma_dev_info = { | ||
217 | .name = "omap-dma-engine", | ||
218 | .id = -1, | ||
219 | .dma_mask = DMA_BIT_MASK(32), | ||
220 | }; | ||
221 | |||
223 | /* One time initializations */ | 222 | /* One time initializations */ |
224 | static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) | 223 | static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) |
225 | { | 224 | { |
226 | struct platform_device *pdev; | 225 | struct platform_device *pdev; |
227 | struct omap_system_dma_plat_info *p; | 226 | struct omap_system_dma_plat_info p; |
227 | struct omap_dma_dev_attr *d; | ||
228 | struct resource *mem; | 228 | struct resource *mem; |
229 | char *name = "omap_dma_system"; | 229 | char *name = "omap_dma_system"; |
230 | 230 | ||
231 | dma_stride = OMAP2_DMA_STRIDE; | 231 | p = dma_plat_info; |
232 | dma_common_ch_start = CSDP; | 232 | p.dma_attr = (struct omap_dma_dev_attr *)oh->dev_attr; |
233 | 233 | p.errata = configure_dma_errata(); | |
234 | p = kzalloc(sizeof(struct omap_system_dma_plat_info), GFP_KERNEL); | ||
235 | if (!p) { | ||
236 | pr_err("%s: Unable to allocate pdata for %s:%s\n", | ||
237 | __func__, name, oh->name); | ||
238 | return -ENOMEM; | ||
239 | } | ||
240 | |||
241 | p->dma_attr = (struct omap_dma_dev_attr *)oh->dev_attr; | ||
242 | p->disable_irq_lch = omap2_disable_irq_lch; | ||
243 | p->show_dma_caps = omap2_show_dma_caps; | ||
244 | p->clear_dma = omap2_clear_dma; | ||
245 | p->dma_write = dma_write; | ||
246 | p->dma_read = dma_read; | ||
247 | |||
248 | p->clear_lch_regs = NULL; | ||
249 | |||
250 | p->errata = configure_dma_errata(); | ||
251 | 234 | ||
252 | pdev = omap_device_build(name, 0, oh, p, sizeof(*p)); | 235 | pdev = omap_device_build(name, 0, oh, &p, sizeof(p)); |
253 | kfree(p); | ||
254 | if (IS_ERR(pdev)) { | 236 | if (IS_ERR(pdev)) { |
255 | pr_err("%s: Can't build omap_device for %s:%s.\n", | 237 | pr_err("%s: Can't build omap_device for %s:%s.\n", |
256 | __func__, name, oh->name); | 238 | __func__, name, oh->name); |
257 | return PTR_ERR(pdev); | 239 | return PTR_ERR(pdev); |
258 | } | 240 | } |
259 | 241 | ||
242 | omap_dma_dev_info.res = pdev->resource; | ||
243 | omap_dma_dev_info.num_res = pdev->num_resources; | ||
244 | |||
260 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 245 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
261 | if (!mem) { | 246 | if (!mem) { |
262 | dev_err(&pdev->dev, "%s: no mem resource\n", __func__); | 247 | dev_err(&pdev->dev, "%s: no mem resource\n", __func__); |
263 | return -EINVAL; | 248 | return -EINVAL; |
264 | } | 249 | } |
250 | |||
265 | dma_base = ioremap(mem->start, resource_size(mem)); | 251 | dma_base = ioremap(mem->start, resource_size(mem)); |
266 | if (!dma_base) { | 252 | if (!dma_base) { |
267 | dev_err(&pdev->dev, "%s: ioremap fail\n", __func__); | 253 | dev_err(&pdev->dev, "%s: ioremap fail\n", __func__); |
@@ -269,13 +255,6 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) | |||
269 | } | 255 | } |
270 | 256 | ||
271 | d = oh->dev_attr; | 257 | d = oh->dev_attr; |
272 | d->chan = kzalloc(sizeof(struct omap_dma_lch) * | ||
273 | (d->lch_count), GFP_KERNEL); | ||
274 | |||
275 | if (!d->chan) { | ||
276 | dev_err(&pdev->dev, "%s: kzalloc fail\n", __func__); | ||
277 | return -ENOMEM; | ||
278 | } | ||
279 | 258 | ||
280 | if (cpu_is_omap34xx() && (omap_type() != OMAP2_DEVICE_TYPE_GP)) | 259 | if (cpu_is_omap34xx() && (omap_type() != OMAP2_DEVICE_TYPE_GP)) |
281 | d->dev_caps |= HS_CHANNELS_RESERVED; | 260 | d->dev_caps |= HS_CHANNELS_RESERVED; |
@@ -289,12 +268,6 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) | |||
289 | return 0; | 268 | return 0; |
290 | } | 269 | } |
291 | 270 | ||
292 | static const struct platform_device_info omap_dma_dev_info = { | ||
293 | .name = "omap-dma-engine", | ||
294 | .id = -1, | ||
295 | .dma_mask = DMA_BIT_MASK(32), | ||
296 | }; | ||
297 | |||
298 | static int __init omap2_system_dma_init(void) | 271 | static int __init omap2_system_dma_init(void) |
299 | { | 272 | { |
300 | struct platform_device *pdev; | 273 | struct platform_device *pdev; |
diff --git a/arch/arm/mach-omap2/dpll3xxx.c b/arch/arm/mach-omap2/dpll3xxx.c index 3c418ea54bbe..fcd8036af910 100644 --- a/arch/arm/mach-omap2/dpll3xxx.c +++ b/arch/arm/mach-omap2/dpll3xxx.c | |||
@@ -525,7 +525,7 @@ int omap3_noncore_dpll_set_rate(struct clk_hw *hw, unsigned long rate, | |||
525 | * stuff is inherited for free | 525 | * stuff is inherited for free |
526 | */ | 526 | */ |
527 | 527 | ||
528 | if (!ret) | 528 | if (!ret && clk_get_parent(hw->clk) != new_parent) |
529 | __clk_reparent(hw->clk, new_parent); | 529 | __clk_reparent(hw->clk, new_parent); |
530 | 530 | ||
531 | return 0; | 531 | return 0; |
diff --git a/arch/arm/mach-omap2/dss-common.c b/arch/arm/mach-omap2/dss-common.c index dadccc91488c..ea2be0f5953b 100644 --- a/arch/arm/mach-omap2/dss-common.c +++ b/arch/arm/mach-omap2/dss-common.c | |||
@@ -33,227 +33,5 @@ | |||
33 | #include "soc.h" | 33 | #include "soc.h" |
34 | #include "dss-common.h" | 34 | #include "dss-common.h" |
35 | #include "mux.h" | 35 | #include "mux.h" |
36 | #include "display.h" | ||
36 | 37 | ||
37 | #define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */ | ||
38 | #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */ | ||
39 | #define HDMI_GPIO_HPD 63 /* Hotplug detect */ | ||
40 | |||
41 | #define PANDA_DVI_TFP410_POWER_DOWN_GPIO 0 | ||
42 | |||
43 | /* DVI Connector */ | ||
44 | static struct connector_dvi_platform_data omap4_panda_dvi_connector_pdata = { | ||
45 | .name = "dvi", | ||
46 | .source = "tfp410.0", | ||
47 | .i2c_bus_num = 2, | ||
48 | }; | ||
49 | |||
50 | static struct platform_device omap4_panda_dvi_connector_device = { | ||
51 | .name = "connector-dvi", | ||
52 | .id = 0, | ||
53 | .dev.platform_data = &omap4_panda_dvi_connector_pdata, | ||
54 | }; | ||
55 | |||
56 | /* TFP410 DPI-to-DVI chip */ | ||
57 | static struct encoder_tfp410_platform_data omap4_panda_tfp410_pdata = { | ||
58 | .name = "tfp410.0", | ||
59 | .source = "dpi.0", | ||
60 | .data_lines = 24, | ||
61 | .power_down_gpio = PANDA_DVI_TFP410_POWER_DOWN_GPIO, | ||
62 | }; | ||
63 | |||
64 | static struct platform_device omap4_panda_tfp410_device = { | ||
65 | .name = "tfp410", | ||
66 | .id = 0, | ||
67 | .dev.platform_data = &omap4_panda_tfp410_pdata, | ||
68 | }; | ||
69 | |||
70 | /* HDMI Connector */ | ||
71 | static struct connector_hdmi_platform_data omap4_panda_hdmi_connector_pdata = { | ||
72 | .name = "hdmi", | ||
73 | .source = "tpd12s015.0", | ||
74 | }; | ||
75 | |||
76 | static struct platform_device omap4_panda_hdmi_connector_device = { | ||
77 | .name = "connector-hdmi", | ||
78 | .id = 0, | ||
79 | .dev.platform_data = &omap4_panda_hdmi_connector_pdata, | ||
80 | }; | ||
81 | |||
82 | /* TPD12S015 HDMI ESD protection & level shifter chip */ | ||
83 | static struct encoder_tpd12s015_platform_data omap4_panda_tpd_pdata = { | ||
84 | .name = "tpd12s015.0", | ||
85 | .source = "hdmi.0", | ||
86 | |||
87 | .ct_cp_hpd_gpio = HDMI_GPIO_CT_CP_HPD, | ||
88 | .ls_oe_gpio = HDMI_GPIO_LS_OE, | ||
89 | .hpd_gpio = HDMI_GPIO_HPD, | ||
90 | }; | ||
91 | |||
92 | static struct platform_device omap4_panda_tpd_device = { | ||
93 | .name = "tpd12s015", | ||
94 | .id = 0, | ||
95 | .dev.platform_data = &omap4_panda_tpd_pdata, | ||
96 | }; | ||
97 | |||
98 | static struct omap_dss_board_info omap4_panda_dss_data = { | ||
99 | .default_display_name = "dvi", | ||
100 | }; | ||
101 | |||
102 | void __init omap4_panda_display_init_of(void) | ||
103 | { | ||
104 | omap_display_init(&omap4_panda_dss_data); | ||
105 | |||
106 | platform_device_register(&omap4_panda_tfp410_device); | ||
107 | platform_device_register(&omap4_panda_dvi_connector_device); | ||
108 | |||
109 | platform_device_register(&omap4_panda_tpd_device); | ||
110 | platform_device_register(&omap4_panda_hdmi_connector_device); | ||
111 | } | ||
112 | |||
113 | |||
114 | /* OMAP4 Blaze display data */ | ||
115 | |||
116 | #define DISPLAY_SEL_GPIO 59 /* LCD2/PicoDLP switch */ | ||
117 | #define DLP_POWER_ON_GPIO 40 | ||
118 | |||
119 | static struct panel_dsicm_platform_data dsi1_panel = { | ||
120 | .name = "lcd", | ||
121 | .source = "dsi.0", | ||
122 | .reset_gpio = 102, | ||
123 | .use_ext_te = false, | ||
124 | .ext_te_gpio = 101, | ||
125 | .pin_config = { | ||
126 | .num_pins = 6, | ||
127 | .pins = { 0, 1, 2, 3, 4, 5 }, | ||
128 | }, | ||
129 | }; | ||
130 | |||
131 | static struct platform_device sdp4430_lcd_device = { | ||
132 | .name = "panel-dsi-cm", | ||
133 | .id = 0, | ||
134 | .dev.platform_data = &dsi1_panel, | ||
135 | }; | ||
136 | |||
137 | static struct panel_dsicm_platform_data dsi2_panel = { | ||
138 | .name = "lcd2", | ||
139 | .source = "dsi.1", | ||
140 | .reset_gpio = 104, | ||
141 | .use_ext_te = false, | ||
142 | .ext_te_gpio = 103, | ||
143 | .pin_config = { | ||
144 | .num_pins = 6, | ||
145 | .pins = { 0, 1, 2, 3, 4, 5 }, | ||
146 | }, | ||
147 | }; | ||
148 | |||
149 | static struct platform_device sdp4430_lcd2_device = { | ||
150 | .name = "panel-dsi-cm", | ||
151 | .id = 1, | ||
152 | .dev.platform_data = &dsi2_panel, | ||
153 | }; | ||
154 | |||
155 | /* HDMI Connector */ | ||
156 | static struct connector_hdmi_platform_data sdp4430_hdmi_connector_pdata = { | ||
157 | .name = "hdmi", | ||
158 | .source = "tpd12s015.0", | ||
159 | }; | ||
160 | |||
161 | static struct platform_device sdp4430_hdmi_connector_device = { | ||
162 | .name = "connector-hdmi", | ||
163 | .id = 0, | ||
164 | .dev.platform_data = &sdp4430_hdmi_connector_pdata, | ||
165 | }; | ||
166 | |||
167 | /* TPD12S015 HDMI ESD protection & level shifter chip */ | ||
168 | static struct encoder_tpd12s015_platform_data sdp4430_tpd_pdata = { | ||
169 | .name = "tpd12s015.0", | ||
170 | .source = "hdmi.0", | ||
171 | |||
172 | .ct_cp_hpd_gpio = HDMI_GPIO_CT_CP_HPD, | ||
173 | .ls_oe_gpio = HDMI_GPIO_LS_OE, | ||
174 | .hpd_gpio = HDMI_GPIO_HPD, | ||
175 | }; | ||
176 | |||
177 | static struct platform_device sdp4430_tpd_device = { | ||
178 | .name = "tpd12s015", | ||
179 | .id = 0, | ||
180 | .dev.platform_data = &sdp4430_tpd_pdata, | ||
181 | }; | ||
182 | |||
183 | |||
184 | static struct omap_dss_board_info sdp4430_dss_data = { | ||
185 | .default_display_name = "lcd", | ||
186 | }; | ||
187 | |||
188 | /* | ||
189 | * we select LCD2 by default (instead of Pico DLP) by setting DISPLAY_SEL_GPIO. | ||
190 | * Setting DLP_POWER_ON gpio enables the VDLP_2V5 VDLP_1V8 and VDLP_1V0 rails | ||
191 | * used by picodlp on the 4430sdp platform. Keep this gpio disabled as LCD2 is | ||
192 | * selected by default | ||
193 | */ | ||
194 | void __init omap_4430sdp_display_init_of(void) | ||
195 | { | ||
196 | int r; | ||
197 | |||
198 | r = gpio_request_one(DISPLAY_SEL_GPIO, GPIOF_OUT_INIT_HIGH, | ||
199 | "display_sel"); | ||
200 | if (r) | ||
201 | pr_err("%s: Could not get display_sel GPIO\n", __func__); | ||
202 | |||
203 | r = gpio_request_one(DLP_POWER_ON_GPIO, GPIOF_OUT_INIT_LOW, | ||
204 | "DLP POWER ON"); | ||
205 | if (r) | ||
206 | pr_err("%s: Could not get DLP POWER ON GPIO\n", __func__); | ||
207 | |||
208 | omap_display_init(&sdp4430_dss_data); | ||
209 | |||
210 | platform_device_register(&sdp4430_lcd_device); | ||
211 | platform_device_register(&sdp4430_lcd2_device); | ||
212 | |||
213 | platform_device_register(&sdp4430_tpd_device); | ||
214 | platform_device_register(&sdp4430_hdmi_connector_device); | ||
215 | } | ||
216 | |||
217 | |||
218 | /* OMAP3 IGEPv2 data */ | ||
219 | |||
220 | #define IGEP2_DVI_TFP410_POWER_DOWN_GPIO 170 | ||
221 | |||
222 | /* DVI Connector */ | ||
223 | static struct connector_dvi_platform_data omap3_igep2_dvi_connector_pdata = { | ||
224 | .name = "dvi", | ||
225 | .source = "tfp410.0", | ||
226 | .i2c_bus_num = 2, | ||
227 | }; | ||
228 | |||
229 | static struct platform_device omap3_igep2_dvi_connector_device = { | ||
230 | .name = "connector-dvi", | ||
231 | .id = 0, | ||
232 | .dev.platform_data = &omap3_igep2_dvi_connector_pdata, | ||
233 | }; | ||
234 | |||
235 | /* TFP410 DPI-to-DVI chip */ | ||
236 | static struct encoder_tfp410_platform_data omap3_igep2_tfp410_pdata = { | ||
237 | .name = "tfp410.0", | ||
238 | .source = "dpi.0", | ||
239 | .data_lines = 24, | ||
240 | .power_down_gpio = IGEP2_DVI_TFP410_POWER_DOWN_GPIO, | ||
241 | }; | ||
242 | |||
243 | static struct platform_device omap3_igep2_tfp410_device = { | ||
244 | .name = "tfp410", | ||
245 | .id = 0, | ||
246 | .dev.platform_data = &omap3_igep2_tfp410_pdata, | ||
247 | }; | ||
248 | |||
249 | static struct omap_dss_board_info igep2_dss_data = { | ||
250 | .default_display_name = "dvi", | ||
251 | }; | ||
252 | |||
253 | void __init omap3_igep2_display_init_of(void) | ||
254 | { | ||
255 | omap_display_init(&igep2_dss_data); | ||
256 | |||
257 | platform_device_register(&omap3_igep2_tfp410_device); | ||
258 | platform_device_register(&omap3_igep2_dvi_connector_device); | ||
259 | } | ||
diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c index 174caecc3186..4349e82debfe 100644 --- a/arch/arm/mach-omap2/gpmc-nand.c +++ b/arch/arm/mach-omap2/gpmc-nand.c | |||
@@ -45,24 +45,31 @@ static struct platform_device gpmc_nand_device = { | |||
45 | 45 | ||
46 | static bool gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt) | 46 | static bool gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt) |
47 | { | 47 | { |
48 | /* support only OMAP3 class */ | 48 | /* platforms which support all ECC schemes */ |
49 | if (!cpu_is_omap34xx() && !soc_is_am33xx()) { | 49 | if (soc_is_am33xx() || cpu_is_omap44xx() || |
50 | pr_err("BCH ecc is not supported on this CPU\n"); | 50 | soc_is_omap54xx() || soc_is_dra7xx()) |
51 | return 1; | ||
52 | |||
53 | /* OMAP3xxx do not have ELM engine, so cannot support ECC schemes | ||
54 | * which require H/W based ECC error detection */ | ||
55 | if ((cpu_is_omap34xx() || cpu_is_omap3630()) && | ||
56 | ((ecc_opt == OMAP_ECC_BCH4_CODE_HW) || | ||
57 | (ecc_opt == OMAP_ECC_BCH8_CODE_HW))) | ||
51 | return 0; | 58 | return 0; |
52 | } | ||
53 | 59 | ||
54 | /* | 60 | /* |
55 | * For now, assume 4-bit mode is only supported on OMAP3630 ES1.x, x>=1 | 61 | * For now, assume 4-bit mode is only supported on OMAP3630 ES1.x, x>=1 |
56 | * and AM33xx derivates. Other chips may be added if confirmed to work. | 62 | * and AM33xx derivates. Other chips may be added if confirmed to work. |
57 | */ | 63 | */ |
58 | if ((ecc_opt == OMAP_ECC_BCH4_CODE_HW) && | 64 | if ((ecc_opt == OMAP_ECC_BCH4_CODE_HW_DETECTION_SW) && |
59 | (!cpu_is_omap3630() || (GET_OMAP_REVISION() == 0)) && | 65 | (!cpu_is_omap3630() || (GET_OMAP_REVISION() == 0))) |
60 | (!soc_is_am33xx())) { | ||
61 | pr_err("BCH 4-bit mode is not supported on this CPU\n"); | ||
62 | return 0; | 66 | return 0; |
63 | } | ||
64 | 67 | ||
65 | return 1; | 68 | /* legacy platforms support only HAM1 (1-bit Hamming) ECC scheme */ |
69 | if (ecc_opt == OMAP_ECC_HAM1_CODE_HW) | ||
70 | return 1; | ||
71 | else | ||
72 | return 0; | ||
66 | } | 73 | } |
67 | 74 | ||
68 | /* This function will go away once the device-tree convertion is complete */ | 75 | /* This function will go away once the device-tree convertion is complete */ |
@@ -133,8 +140,10 @@ int gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data, | |||
133 | 140 | ||
134 | gpmc_update_nand_reg(&gpmc_nand_data->reg, gpmc_nand_data->cs); | 141 | gpmc_update_nand_reg(&gpmc_nand_data->reg, gpmc_nand_data->cs); |
135 | 142 | ||
136 | if (!gpmc_hwecc_bch_capable(gpmc_nand_data->ecc_opt)) | 143 | if (!gpmc_hwecc_bch_capable(gpmc_nand_data->ecc_opt)) { |
144 | dev_err(dev, "Unsupported NAND ECC scheme selected\n"); | ||
137 | return -EINVAL; | 145 | return -EINVAL; |
146 | } | ||
138 | 147 | ||
139 | err = platform_device_register(&gpmc_nand_device); | 148 | err = platform_device_register(&gpmc_nand_device); |
140 | if (err < 0) { | 149 | if (err < 0) { |
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 9428c5f9d4f2..157412e4273a 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -465,8 +465,18 @@ void __init omap3xxx_check_revision(void) | |||
465 | } | 465 | } |
466 | break; | 466 | break; |
467 | case 0xb98c: | 467 | case 0xb98c: |
468 | omap_revision = AM437X_REV_ES1_0; | 468 | switch (rev) { |
469 | cpu_rev = "1.0"; | 469 | case 0: |
470 | omap_revision = AM437X_REV_ES1_0; | ||
471 | cpu_rev = "1.0"; | ||
472 | break; | ||
473 | case 1: | ||
474 | /* FALLTHROUGH */ | ||
475 | default: | ||
476 | omap_revision = AM437X_REV_ES1_1; | ||
477 | cpu_rev = "1.1"; | ||
478 | break; | ||
479 | } | ||
470 | break; | 480 | break; |
471 | case 0xb8f2: | 481 | case 0xb8f2: |
472 | switch (rev) { | 482 | switch (rev) { |
@@ -657,6 +667,8 @@ static const char * __init omap_get_family(void) | |||
657 | return kasprintf(GFP_KERNEL, "OMAP4"); | 667 | return kasprintf(GFP_KERNEL, "OMAP4"); |
658 | else if (soc_is_omap54xx()) | 668 | else if (soc_is_omap54xx()) |
659 | return kasprintf(GFP_KERNEL, "OMAP5"); | 669 | return kasprintf(GFP_KERNEL, "OMAP5"); |
670 | else if (soc_is_am43xx()) | ||
671 | return kasprintf(GFP_KERNEL, "AM43xx"); | ||
660 | else | 672 | else |
661 | return kasprintf(GFP_KERNEL, "Unknown"); | 673 | return kasprintf(GFP_KERNEL, "Unknown"); |
662 | } | 674 | } |
diff --git a/arch/arm/mach-omap2/include/mach/timex.h b/arch/arm/mach-omap2/include/mach/timex.h deleted file mode 100644 index de9f8fc40e7c..000000000000 --- a/arch/arm/mach-omap2/include/mach/timex.h +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-omap2/include/mach/timex.h | ||
3 | */ | ||
4 | |||
5 | #include <plat/timex.h> | ||
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index af432b191255..f14f9ac2dca1 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -604,6 +604,7 @@ void __init am43xx_init_early(void) | |||
604 | omap_prm_base_init(); | 604 | omap_prm_base_init(); |
605 | omap_cm_base_init(); | 605 | omap_cm_base_init(); |
606 | omap3xxx_check_revision(); | 606 | omap3xxx_check_revision(); |
607 | am33xx_check_features(); | ||
607 | am43xx_powerdomains_init(); | 608 | am43xx_powerdomains_init(); |
608 | am43xx_clockdomains_init(); | 609 | am43xx_clockdomains_init(); |
609 | am43xx_hwmod_init(); | 610 | am43xx_hwmod_init(); |
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index e022a869bff2..6037a9a01ed5 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c | |||
@@ -222,6 +222,7 @@ void __init ti81xx_init_irq(void) | |||
222 | static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs *regs) | 222 | static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs *regs) |
223 | { | 223 | { |
224 | u32 irqnr; | 224 | u32 irqnr; |
225 | int handled_irq = 0; | ||
225 | 226 | ||
226 | do { | 227 | do { |
227 | irqnr = readl_relaxed(base_addr + 0x98); | 228 | irqnr = readl_relaxed(base_addr + 0x98); |
@@ -249,8 +250,15 @@ out: | |||
249 | if (irqnr) { | 250 | if (irqnr) { |
250 | irqnr = irq_find_mapping(domain, irqnr); | 251 | irqnr = irq_find_mapping(domain, irqnr); |
251 | handle_IRQ(irqnr, regs); | 252 | handle_IRQ(irqnr, regs); |
253 | handled_irq = 1; | ||
252 | } | 254 | } |
253 | } while (irqnr); | 255 | } while (irqnr); |
256 | |||
257 | /* If an irq is masked or deasserted while active, we will | ||
258 | * keep ending up here with no irq handled. So remove it from | ||
259 | * the INTC with an ack.*/ | ||
260 | if (!handled_irq) | ||
261 | omap_ack_irq(NULL); | ||
254 | } | 262 | } |
255 | 263 | ||
256 | asmlinkage void __exception_irq_entry omap2_intc_handle_irq(struct pt_regs *regs) | 264 | asmlinkage void __exception_irq_entry omap2_intc_handle_irq(struct pt_regs *regs) |
diff --git a/arch/arm/mach-omap2/mux.h b/arch/arm/mach-omap2/mux.h index a722330d4d53..d121fb6df4e6 100644 --- a/arch/arm/mach-omap2/mux.h +++ b/arch/arm/mach-omap2/mux.h | |||
@@ -63,9 +63,6 @@ | |||
63 | #define OMAP_PACKAGE_CUS 5 /* 423-pin 0.65 */ | 63 | #define OMAP_PACKAGE_CUS 5 /* 423-pin 0.65 */ |
64 | #define OMAP_PACKAGE_CBB 4 /* 515-pin 0.40 0.50 */ | 64 | #define OMAP_PACKAGE_CBB 4 /* 515-pin 0.40 0.50 */ |
65 | #define OMAP_PACKAGE_CBC 3 /* 515-pin 0.50 0.65 */ | 65 | #define OMAP_PACKAGE_CBC 3 /* 515-pin 0.50 0.65 */ |
66 | #define OMAP_PACKAGE_ZAC 2 /* 24xx 447-pin POP */ | ||
67 | #define OMAP_PACKAGE_ZAF 1 /* 2420 447-pin SIP */ | ||
68 | |||
69 | 66 | ||
70 | #define OMAP_MUX_NR_MODES 8 /* Available modes */ | 67 | #define OMAP_MUX_NR_MODES 8 /* Available modes */ |
71 | #define OMAP_MUX_NR_SIDES 2 /* Bottom & top */ | 68 | #define OMAP_MUX_NR_SIDES 2 /* Bottom & top */ |
diff --git a/arch/arm/mach-omap2/omap-iommu.c b/arch/arm/mach-omap2/omap-iommu.c index f6daae821ebb..f1fab5684a24 100644 --- a/arch/arm/mach-omap2/omap-iommu.c +++ b/arch/arm/mach-omap2/omap-iommu.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/of.h> | ||
13 | #include <linux/module.h> | 14 | #include <linux/module.h> |
14 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
15 | #include <linux/err.h> | 16 | #include <linux/err.h> |
@@ -58,6 +59,10 @@ static int __init omap_iommu_dev_init(struct omap_hwmod *oh, void *unused) | |||
58 | 59 | ||
59 | static int __init omap_iommu_init(void) | 60 | static int __init omap_iommu_init(void) |
60 | { | 61 | { |
62 | /* If dtb is there, the devices will be created dynamically */ | ||
63 | if (of_have_populated_dt()) | ||
64 | return -ENODEV; | ||
65 | |||
61 | return omap_hwmod_for_each_by_class("mmu", omap_iommu_dev_init, NULL); | 66 | return omap_hwmod_for_each_by_class("mmu", omap_iommu_dev_init, NULL); |
62 | } | 67 | } |
63 | /* must be ready before omap3isp is probed */ | 68 | /* must be ready before omap3isp is probed */ |
diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c index 3664562f9148..693fe486e917 100644 --- a/arch/arm/mach-omap2/omap-wakeupgen.c +++ b/arch/arm/mach-omap2/omap-wakeupgen.c | |||
@@ -138,7 +138,7 @@ static void wakeupgen_mask(struct irq_data *d) | |||
138 | unsigned long flags; | 138 | unsigned long flags; |
139 | 139 | ||
140 | raw_spin_lock_irqsave(&wakeupgen_lock, flags); | 140 | raw_spin_lock_irqsave(&wakeupgen_lock, flags); |
141 | _wakeupgen_clear(d->irq, irq_target_cpu[d->irq]); | 141 | _wakeupgen_clear(d->hwirq, irq_target_cpu[d->hwirq]); |
142 | raw_spin_unlock_irqrestore(&wakeupgen_lock, flags); | 142 | raw_spin_unlock_irqrestore(&wakeupgen_lock, flags); |
143 | } | 143 | } |
144 | 144 | ||
@@ -150,7 +150,7 @@ static void wakeupgen_unmask(struct irq_data *d) | |||
150 | unsigned long flags; | 150 | unsigned long flags; |
151 | 151 | ||
152 | raw_spin_lock_irqsave(&wakeupgen_lock, flags); | 152 | raw_spin_lock_irqsave(&wakeupgen_lock, flags); |
153 | _wakeupgen_set(d->irq, irq_target_cpu[d->irq]); | 153 | _wakeupgen_set(d->hwirq, irq_target_cpu[d->hwirq]); |
154 | raw_spin_unlock_irqrestore(&wakeupgen_lock, flags); | 154 | raw_spin_unlock_irqrestore(&wakeupgen_lock, flags); |
155 | } | 155 | } |
156 | 156 | ||
diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-omap2/omap4-common.c index 6cd3f3772ecf..95e171a055f3 100644 --- a/arch/arm/mach-omap2/omap4-common.c +++ b/arch/arm/mach-omap2/omap4-common.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/of_platform.h> | 22 | #include <linux/of_platform.h> |
23 | #include <linux/export.h> | 23 | #include <linux/export.h> |
24 | #include <linux/irqchip/arm-gic.h> | 24 | #include <linux/irqchip/arm-gic.h> |
25 | #include <linux/irqchip/irq-crossbar.h> | ||
25 | #include <linux/of_address.h> | 26 | #include <linux/of_address.h> |
26 | #include <linux/reboot.h> | 27 | #include <linux/reboot.h> |
27 | 28 | ||
@@ -288,5 +289,8 @@ void __init omap_gic_of_init(void) | |||
288 | 289 | ||
289 | skip_errata_init: | 290 | skip_errata_init: |
290 | omap_wakeupgen_init(); | 291 | omap_wakeupgen_init(); |
292 | #ifdef CONFIG_IRQ_CROSSBAR | ||
293 | irqcrossbar_init(); | ||
294 | #endif | ||
291 | irqchip_init(); | 295 | irqchip_init(); |
292 | } | 296 | } |
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 4c3b1e6df508..a123ff0070bd 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | |||
@@ -1955,10 +1955,6 @@ static struct omap_hwmod_class omap3xxx_usb_host_hs_hwmod_class = { | |||
1955 | .sysc = &omap3xxx_usb_host_hs_sysc, | 1955 | .sysc = &omap3xxx_usb_host_hs_sysc, |
1956 | }; | 1956 | }; |
1957 | 1957 | ||
1958 | static struct omap_hwmod_opt_clk omap3xxx_usb_host_hs_opt_clks[] = { | ||
1959 | { .role = "ehci_logic_fck", .clk = "usbhost_120m_fck", }, | ||
1960 | }; | ||
1961 | |||
1962 | static struct omap_hwmod_irq_info omap3xxx_usb_host_hs_irqs[] = { | 1958 | static struct omap_hwmod_irq_info omap3xxx_usb_host_hs_irqs[] = { |
1963 | { .name = "ohci-irq", .irq = 76 + OMAP_INTC_START, }, | 1959 | { .name = "ohci-irq", .irq = 76 + OMAP_INTC_START, }, |
1964 | { .name = "ehci-irq", .irq = 77 + OMAP_INTC_START, }, | 1960 | { .name = "ehci-irq", .irq = 77 + OMAP_INTC_START, }, |
@@ -1981,8 +1977,6 @@ static struct omap_hwmod omap3xxx_usb_host_hs_hwmod = { | |||
1981 | .idlest_stdby_bit = OMAP3430ES2_ST_USBHOST_STDBY_SHIFT, | 1977 | .idlest_stdby_bit = OMAP3430ES2_ST_USBHOST_STDBY_SHIFT, |
1982 | }, | 1978 | }, |
1983 | }, | 1979 | }, |
1984 | .opt_clks = omap3xxx_usb_host_hs_opt_clks, | ||
1985 | .opt_clks_cnt = ARRAY_SIZE(omap3xxx_usb_host_hs_opt_clks), | ||
1986 | 1980 | ||
1987 | /* | 1981 | /* |
1988 | * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock | 1982 | * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock |
@@ -3029,8 +3023,6 @@ static struct omap_hwmod omap3xxx_mmu_isp_hwmod = { | |||
3029 | .flags = HWMOD_NO_IDLEST, | 3023 | .flags = HWMOD_NO_IDLEST, |
3030 | }; | 3024 | }; |
3031 | 3025 | ||
3032 | #ifdef CONFIG_OMAP_IOMMU_IVA2 | ||
3033 | |||
3034 | /* mmu iva */ | 3026 | /* mmu iva */ |
3035 | 3027 | ||
3036 | static struct omap_mmu_dev_attr mmu_iva_dev_attr = { | 3028 | static struct omap_mmu_dev_attr mmu_iva_dev_attr = { |
@@ -3070,20 +3062,22 @@ static struct omap_hwmod omap3xxx_mmu_iva_hwmod = { | |||
3070 | .name = "mmu_iva", | 3062 | .name = "mmu_iva", |
3071 | .class = &omap3xxx_mmu_hwmod_class, | 3063 | .class = &omap3xxx_mmu_hwmod_class, |
3072 | .mpu_irqs = omap3xxx_mmu_iva_irqs, | 3064 | .mpu_irqs = omap3xxx_mmu_iva_irqs, |
3065 | .clkdm_name = "iva2_clkdm", | ||
3073 | .rst_lines = omap3xxx_mmu_iva_resets, | 3066 | .rst_lines = omap3xxx_mmu_iva_resets, |
3074 | .rst_lines_cnt = ARRAY_SIZE(omap3xxx_mmu_iva_resets), | 3067 | .rst_lines_cnt = ARRAY_SIZE(omap3xxx_mmu_iva_resets), |
3075 | .main_clk = "iva2_ck", | 3068 | .main_clk = "iva2_ck", |
3076 | .prcm = { | 3069 | .prcm = { |
3077 | .omap2 = { | 3070 | .omap2 = { |
3078 | .module_offs = OMAP3430_IVA2_MOD, | 3071 | .module_offs = OMAP3430_IVA2_MOD, |
3072 | .module_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT, | ||
3073 | .idlest_reg_id = 1, | ||
3074 | .idlest_idle_bit = OMAP3430_ST_IVA2_SHIFT, | ||
3079 | }, | 3075 | }, |
3080 | }, | 3076 | }, |
3081 | .dev_attr = &mmu_iva_dev_attr, | 3077 | .dev_attr = &mmu_iva_dev_attr, |
3082 | .flags = HWMOD_NO_IDLEST, | 3078 | .flags = HWMOD_NO_IDLEST, |
3083 | }; | 3079 | }; |
3084 | 3080 | ||
3085 | #endif | ||
3086 | |||
3087 | /* l4_per -> gpio4 */ | 3081 | /* l4_per -> gpio4 */ |
3088 | static struct omap_hwmod_addr_space omap3xxx_gpio4_addrs[] = { | 3082 | static struct omap_hwmod_addr_space omap3xxx_gpio4_addrs[] = { |
3089 | { | 3083 | { |
@@ -3855,9 +3849,7 @@ static struct omap_hwmod_ocp_if *omap34xx_hwmod_ocp_ifs[] __initdata = { | |||
3855 | &omap3xxx_l4_core__hdq1w, | 3849 | &omap3xxx_l4_core__hdq1w, |
3856 | &omap3xxx_sad2d__l3, | 3850 | &omap3xxx_sad2d__l3, |
3857 | &omap3xxx_l4_core__mmu_isp, | 3851 | &omap3xxx_l4_core__mmu_isp, |
3858 | #ifdef CONFIG_OMAP_IOMMU_IVA2 | ||
3859 | &omap3xxx_l3_main__mmu_iva, | 3852 | &omap3xxx_l3_main__mmu_iva, |
3860 | #endif | ||
3861 | &omap34xx_l4_core__ssi, | 3853 | &omap34xx_l4_core__ssi, |
3862 | NULL | 3854 | NULL |
3863 | }; | 3855 | }; |
@@ -3881,9 +3873,7 @@ static struct omap_hwmod_ocp_if *omap36xx_hwmod_ocp_ifs[] __initdata = { | |||
3881 | &omap3xxx_l4_core__hdq1w, | 3873 | &omap3xxx_l4_core__hdq1w, |
3882 | &omap3xxx_sad2d__l3, | 3874 | &omap3xxx_sad2d__l3, |
3883 | &omap3xxx_l4_core__mmu_isp, | 3875 | &omap3xxx_l4_core__mmu_isp, |
3884 | #ifdef CONFIG_OMAP_IOMMU_IVA2 | ||
3885 | &omap3xxx_l3_main__mmu_iva, | 3876 | &omap3xxx_l3_main__mmu_iva, |
3886 | #endif | ||
3887 | NULL | 3877 | NULL |
3888 | }; | 3878 | }; |
3889 | 3879 | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_43xx_data.c b/arch/arm/mach-omap2/omap_hwmod_43xx_data.c index 9002fca76699..5c2cc8083fdd 100644 --- a/arch/arm/mach-omap2/omap_hwmod_43xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_43xx_data.c | |||
@@ -719,6 +719,7 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = { | |||
719 | &am33xx_l4_ls__uart4, | 719 | &am33xx_l4_ls__uart4, |
720 | &am33xx_l4_ls__uart5, | 720 | &am33xx_l4_ls__uart5, |
721 | &am33xx_l4_ls__uart6, | 721 | &am33xx_l4_ls__uart6, |
722 | &am33xx_l4_ls__spinlock, | ||
722 | &am33xx_l4_ls__elm, | 723 | &am33xx_l4_ls__elm, |
723 | &am33xx_l4_ls__epwmss0, | 724 | &am33xx_l4_ls__epwmss0, |
724 | &am33xx_epwmss0__ecap0, | 725 | &am33xx_epwmss0__ecap0, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 3318cae96e7d..1219280bb976 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -2541,8 +2541,7 @@ static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = { | |||
2541 | .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | | 2541 | .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | |
2542 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | | 2542 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | |
2543 | SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), | 2543 | SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), |
2544 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | 2544 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), |
2545 | SIDLE_SMART_WKUP), | ||
2546 | .sysc_fields = &omap_hwmod_sysc_type1, | 2545 | .sysc_fields = &omap_hwmod_sysc_type1, |
2547 | }; | 2546 | }; |
2548 | 2547 | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c index e297d6231c3a..892317294fdc 100644 --- a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c | |||
@@ -1122,6 +1122,71 @@ static struct omap_hwmod omap54xx_mmc5_hwmod = { | |||
1122 | }; | 1122 | }; |
1123 | 1123 | ||
1124 | /* | 1124 | /* |
1125 | * 'mmu' class | ||
1126 | * The memory management unit performs virtual to physical address translation | ||
1127 | * for its requestors. | ||
1128 | */ | ||
1129 | |||
1130 | static struct omap_hwmod_class_sysconfig omap54xx_mmu_sysc = { | ||
1131 | .rev_offs = 0x0000, | ||
1132 | .sysc_offs = 0x0010, | ||
1133 | .syss_offs = 0x0014, | ||
1134 | .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | | ||
1135 | SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | | ||
1136 | SYSS_HAS_RESET_STATUS), | ||
1137 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
1138 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
1139 | }; | ||
1140 | |||
1141 | static struct omap_hwmod_class omap54xx_mmu_hwmod_class = { | ||
1142 | .name = "mmu", | ||
1143 | .sysc = &omap54xx_mmu_sysc, | ||
1144 | }; | ||
1145 | |||
1146 | static struct omap_hwmod_rst_info omap54xx_mmu_dsp_resets[] = { | ||
1147 | { .name = "mmu_cache", .rst_shift = 1 }, | ||
1148 | }; | ||
1149 | |||
1150 | static struct omap_hwmod omap54xx_mmu_dsp_hwmod = { | ||
1151 | .name = "mmu_dsp", | ||
1152 | .class = &omap54xx_mmu_hwmod_class, | ||
1153 | .clkdm_name = "dsp_clkdm", | ||
1154 | .rst_lines = omap54xx_mmu_dsp_resets, | ||
1155 | .rst_lines_cnt = ARRAY_SIZE(omap54xx_mmu_dsp_resets), | ||
1156 | .main_clk = "dpll_iva_h11x2_ck", | ||
1157 | .prcm = { | ||
1158 | .omap4 = { | ||
1159 | .clkctrl_offs = OMAP54XX_CM_DSP_DSP_CLKCTRL_OFFSET, | ||
1160 | .rstctrl_offs = OMAP54XX_RM_DSP_RSTCTRL_OFFSET, | ||
1161 | .context_offs = OMAP54XX_RM_DSP_DSP_CONTEXT_OFFSET, | ||
1162 | .modulemode = MODULEMODE_HWCTRL, | ||
1163 | }, | ||
1164 | }, | ||
1165 | }; | ||
1166 | |||
1167 | /* mmu ipu */ | ||
1168 | static struct omap_hwmod_rst_info omap54xx_mmu_ipu_resets[] = { | ||
1169 | { .name = "mmu_cache", .rst_shift = 2 }, | ||
1170 | }; | ||
1171 | |||
1172 | static struct omap_hwmod omap54xx_mmu_ipu_hwmod = { | ||
1173 | .name = "mmu_ipu", | ||
1174 | .class = &omap54xx_mmu_hwmod_class, | ||
1175 | .clkdm_name = "ipu_clkdm", | ||
1176 | .rst_lines = omap54xx_mmu_ipu_resets, | ||
1177 | .rst_lines_cnt = ARRAY_SIZE(omap54xx_mmu_ipu_resets), | ||
1178 | .main_clk = "dpll_core_h22x2_ck", | ||
1179 | .prcm = { | ||
1180 | .omap4 = { | ||
1181 | .clkctrl_offs = OMAP54XX_CM_IPU_IPU_CLKCTRL_OFFSET, | ||
1182 | .rstctrl_offs = OMAP54XX_RM_IPU_RSTCTRL_OFFSET, | ||
1183 | .context_offs = OMAP54XX_RM_IPU_IPU_CONTEXT_OFFSET, | ||
1184 | .modulemode = MODULEMODE_HWCTRL, | ||
1185 | }, | ||
1186 | }, | ||
1187 | }; | ||
1188 | |||
1189 | /* | ||
1125 | * 'mpu' class | 1190 | * 'mpu' class |
1126 | * mpu sub-system | 1191 | * mpu sub-system |
1127 | */ | 1192 | */ |
@@ -1763,6 +1828,14 @@ static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_1 = { | |||
1763 | .user = OCP_USER_MPU | OCP_USER_SDMA, | 1828 | .user = OCP_USER_MPU | OCP_USER_SDMA, |
1764 | }; | 1829 | }; |
1765 | 1830 | ||
1831 | /* l4_cfg -> mmu_dsp */ | ||
1832 | static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mmu_dsp = { | ||
1833 | .master = &omap54xx_l4_cfg_hwmod, | ||
1834 | .slave = &omap54xx_mmu_dsp_hwmod, | ||
1835 | .clk = "l4_root_clk_div", | ||
1836 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
1837 | }; | ||
1838 | |||
1766 | /* mpu -> l3_main_1 */ | 1839 | /* mpu -> l3_main_1 */ |
1767 | static struct omap_hwmod_ocp_if omap54xx_mpu__l3_main_1 = { | 1840 | static struct omap_hwmod_ocp_if omap54xx_mpu__l3_main_1 = { |
1768 | .master = &omap54xx_mpu_hwmod, | 1841 | .master = &omap54xx_mpu_hwmod, |
@@ -1787,6 +1860,14 @@ static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_2 = { | |||
1787 | .user = OCP_USER_MPU | OCP_USER_SDMA, | 1860 | .user = OCP_USER_MPU | OCP_USER_SDMA, |
1788 | }; | 1861 | }; |
1789 | 1862 | ||
1863 | /* l3_main_2 -> mmu_ipu */ | ||
1864 | static struct omap_hwmod_ocp_if omap54xx_l3_main_2__mmu_ipu = { | ||
1865 | .master = &omap54xx_l3_main_2_hwmod, | ||
1866 | .slave = &omap54xx_mmu_ipu_hwmod, | ||
1867 | .clk = "l3_iclk_div", | ||
1868 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
1869 | }; | ||
1870 | |||
1790 | /* l3_main_1 -> l3_main_3 */ | 1871 | /* l3_main_1 -> l3_main_3 */ |
1791 | static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l3_main_3 = { | 1872 | static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l3_main_3 = { |
1792 | .master = &omap54xx_l3_main_1_hwmod, | 1873 | .master = &omap54xx_l3_main_1_hwmod, |
@@ -2345,6 +2426,7 @@ static struct omap_hwmod_ocp_if *omap54xx_hwmod_ocp_ifs[] __initdata = { | |||
2345 | &omap54xx_l4_wkup__counter_32k, | 2426 | &omap54xx_l4_wkup__counter_32k, |
2346 | &omap54xx_l4_cfg__dma_system, | 2427 | &omap54xx_l4_cfg__dma_system, |
2347 | &omap54xx_l4_abe__dmic, | 2428 | &omap54xx_l4_abe__dmic, |
2429 | &omap54xx_l4_cfg__mmu_dsp, | ||
2348 | &omap54xx_mpu__emif1, | 2430 | &omap54xx_mpu__emif1, |
2349 | &omap54xx_mpu__emif2, | 2431 | &omap54xx_mpu__emif2, |
2350 | &omap54xx_l4_wkup__gpio1, | 2432 | &omap54xx_l4_wkup__gpio1, |
@@ -2360,6 +2442,7 @@ static struct omap_hwmod_ocp_if *omap54xx_hwmod_ocp_ifs[] __initdata = { | |||
2360 | &omap54xx_l4_per__i2c3, | 2442 | &omap54xx_l4_per__i2c3, |
2361 | &omap54xx_l4_per__i2c4, | 2443 | &omap54xx_l4_per__i2c4, |
2362 | &omap54xx_l4_per__i2c5, | 2444 | &omap54xx_l4_per__i2c5, |
2445 | &omap54xx_l3_main_2__mmu_ipu, | ||
2363 | &omap54xx_l4_wkup__kbd, | 2446 | &omap54xx_l4_wkup__kbd, |
2364 | &omap54xx_l4_cfg__mailbox, | 2447 | &omap54xx_l4_cfg__mailbox, |
2365 | &omap54xx_l4_abe__mcbsp1, | 2448 | &omap54xx_l4_abe__mcbsp1, |
diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c index c33e07e2f0d4..c3b73351cb7a 100644 --- a/arch/arm/mach-omap2/pdata-quirks.c +++ b/arch/arm/mach-omap2/pdata-quirks.c | |||
@@ -16,12 +16,14 @@ | |||
16 | #include <linux/wl12xx.h> | 16 | #include <linux/wl12xx.h> |
17 | 17 | ||
18 | #include <linux/platform_data/pinctrl-single.h> | 18 | #include <linux/platform_data/pinctrl-single.h> |
19 | #include <linux/platform_data/iommu-omap.h> | ||
19 | 20 | ||
20 | #include "am35xx.h" | 21 | #include "am35xx.h" |
21 | #include "common.h" | 22 | #include "common.h" |
22 | #include "common-board-devices.h" | 23 | #include "common-board-devices.h" |
23 | #include "dss-common.h" | 24 | #include "dss-common.h" |
24 | #include "control.h" | 25 | #include "control.h" |
26 | #include "omap_device.h" | ||
25 | #include "omap-secure.h" | 27 | #include "omap-secure.h" |
26 | #include "soc.h" | 28 | #include "soc.h" |
27 | 29 | ||
@@ -33,20 +35,6 @@ struct pdata_init { | |||
33 | struct of_dev_auxdata omap_auxdata_lookup[]; | 35 | struct of_dev_auxdata omap_auxdata_lookup[]; |
34 | static struct twl4030_gpio_platform_data twl_gpio_auxdata; | 36 | static struct twl4030_gpio_platform_data twl_gpio_auxdata; |
35 | 37 | ||
36 | /* | ||
37 | * Create alias for USB host PHY clock. | ||
38 | * Remove this when clock phandle can be provided via DT | ||
39 | */ | ||
40 | static void __init __used legacy_init_ehci_clk(char *clkname) | ||
41 | { | ||
42 | int ret; | ||
43 | |||
44 | ret = clk_add_alias("main_clk", NULL, clkname, NULL); | ||
45 | if (ret) | ||
46 | pr_err("%s:Failed to add main_clk alias to %s :%d\n", | ||
47 | __func__, clkname, ret); | ||
48 | } | ||
49 | |||
50 | #if IS_ENABLED(CONFIG_WL12XX) | 38 | #if IS_ENABLED(CONFIG_WL12XX) |
51 | 39 | ||
52 | static struct wl12xx_platform_data wl12xx __initdata; | 40 | static struct wl12xx_platform_data wl12xx __initdata; |
@@ -94,6 +82,12 @@ static void __init hsmmc2_internal_input_clk(void) | |||
94 | omap_ctrl_writel(reg, OMAP343X_CONTROL_DEVCONF1); | 82 | omap_ctrl_writel(reg, OMAP343X_CONTROL_DEVCONF1); |
95 | } | 83 | } |
96 | 84 | ||
85 | static struct iommu_platform_data omap3_iommu_pdata = { | ||
86 | .reset_name = "mmu", | ||
87 | .assert_reset = omap_device_assert_hardreset, | ||
88 | .deassert_reset = omap_device_deassert_hardreset, | ||
89 | }; | ||
90 | |||
97 | static int omap3_sbc_t3730_twl_callback(struct device *dev, | 91 | static int omap3_sbc_t3730_twl_callback(struct device *dev, |
98 | unsigned gpio, | 92 | unsigned gpio, |
99 | unsigned ngpio) | 93 | unsigned ngpio) |
@@ -101,7 +95,7 @@ static int omap3_sbc_t3730_twl_callback(struct device *dev, | |||
101 | int res; | 95 | int res; |
102 | 96 | ||
103 | res = gpio_request_one(gpio + 2, GPIOF_OUT_INIT_HIGH, | 97 | res = gpio_request_one(gpio + 2, GPIOF_OUT_INIT_HIGH, |
104 | "wlan rst"); | 98 | "wlan pwr"); |
105 | if (res) | 99 | if (res) |
106 | return res; | 100 | return res; |
107 | 101 | ||
@@ -110,6 +104,23 @@ static int omap3_sbc_t3730_twl_callback(struct device *dev, | |||
110 | return 0; | 104 | return 0; |
111 | } | 105 | } |
112 | 106 | ||
107 | static void __init omap3_sbc_t3x_usb_hub_init(int gpio, char *hub_name) | ||
108 | { | ||
109 | int err = gpio_request_one(gpio, GPIOF_OUT_INIT_LOW, hub_name); | ||
110 | |||
111 | if (err) { | ||
112 | pr_err("SBC-T3x: %s reset gpio request failed: %d\n", | ||
113 | hub_name, err); | ||
114 | return; | ||
115 | } | ||
116 | |||
117 | gpio_export(gpio, 0); | ||
118 | |||
119 | udelay(10); | ||
120 | gpio_set_value(gpio, 1); | ||
121 | msleep(1); | ||
122 | } | ||
123 | |||
113 | static void __init omap3_sbc_t3730_twl_init(void) | 124 | static void __init omap3_sbc_t3730_twl_init(void) |
114 | { | 125 | { |
115 | twl_gpio_auxdata.setup = omap3_sbc_t3730_twl_callback; | 126 | twl_gpio_auxdata.setup = omap3_sbc_t3730_twl_callback; |
@@ -117,13 +128,19 @@ static void __init omap3_sbc_t3730_twl_init(void) | |||
117 | 128 | ||
118 | static void __init omap3_sbc_t3730_legacy_init(void) | 129 | static void __init omap3_sbc_t3730_legacy_init(void) |
119 | { | 130 | { |
131 | omap3_sbc_t3x_usb_hub_init(167, "sb-t35 usb hub"); | ||
120 | legacy_init_wl12xx(WL12XX_REFCLOCK_38, 0, 136); | 132 | legacy_init_wl12xx(WL12XX_REFCLOCK_38, 0, 136); |
121 | omap_ads7846_init(1, 57, 0, NULL); | 133 | omap_ads7846_init(1, 57, 0, NULL); |
122 | } | 134 | } |
123 | 135 | ||
136 | static void __init omap3_sbc_t3530_legacy_init(void) | ||
137 | { | ||
138 | omap3_sbc_t3x_usb_hub_init(167, "sb-t35 usb hub"); | ||
139 | omap_ads7846_init(1, 57, 0, NULL); | ||
140 | } | ||
141 | |||
124 | static void __init omap3_igep0020_legacy_init(void) | 142 | static void __init omap3_igep0020_legacy_init(void) |
125 | { | 143 | { |
126 | omap3_igep2_display_init_of(); | ||
127 | } | 144 | } |
128 | 145 | ||
129 | static void __init omap3_evm_legacy_init(void) | 146 | static void __init omap3_evm_legacy_init(void) |
@@ -162,7 +179,7 @@ static struct emac_platform_data am35xx_emac_pdata = { | |||
162 | .interrupt_disable = am35xx_disable_emac_int, | 179 | .interrupt_disable = am35xx_disable_emac_int, |
163 | }; | 180 | }; |
164 | 181 | ||
165 | static void __init am3517_evm_legacy_init(void) | 182 | static void __init am35xx_emac_reset(void) |
166 | { | 183 | { |
167 | u32 v; | 184 | u32 v; |
168 | 185 | ||
@@ -172,6 +189,43 @@ static void __init am3517_evm_legacy_init(void) | |||
172 | omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET); /* OCP barrier */ | 189 | omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET); /* OCP barrier */ |
173 | } | 190 | } |
174 | 191 | ||
192 | static struct gpio cm_t3517_wlan_gpios[] __initdata = { | ||
193 | { 56, GPIOF_OUT_INIT_HIGH, "wlan pwr" }, | ||
194 | { 4, GPIOF_OUT_INIT_HIGH, "xcvr noe" }, | ||
195 | }; | ||
196 | |||
197 | static void __init omap3_sbc_t3517_wifi_init(void) | ||
198 | { | ||
199 | int err = gpio_request_array(cm_t3517_wlan_gpios, | ||
200 | ARRAY_SIZE(cm_t3517_wlan_gpios)); | ||
201 | if (err) { | ||
202 | pr_err("SBC-T3517: wl12xx gpios request failed: %d\n", err); | ||
203 | return; | ||
204 | } | ||
205 | |||
206 | gpio_export(cm_t3517_wlan_gpios[0].gpio, 0); | ||
207 | gpio_export(cm_t3517_wlan_gpios[1].gpio, 0); | ||
208 | |||
209 | msleep(100); | ||
210 | gpio_set_value(cm_t3517_wlan_gpios[1].gpio, 0); | ||
211 | } | ||
212 | |||
213 | static void __init omap3_sbc_t3517_legacy_init(void) | ||
214 | { | ||
215 | omap3_sbc_t3x_usb_hub_init(152, "cm-t3517 usb hub"); | ||
216 | omap3_sbc_t3x_usb_hub_init(98, "sb-t35 usb hub"); | ||
217 | am35xx_emac_reset(); | ||
218 | hsmmc2_internal_input_clk(); | ||
219 | omap3_sbc_t3517_wifi_init(); | ||
220 | legacy_init_wl12xx(WL12XX_REFCLOCK_38, 0, 145); | ||
221 | omap_ads7846_init(1, 57, 0, NULL); | ||
222 | } | ||
223 | |||
224 | static void __init am3517_evm_legacy_init(void) | ||
225 | { | ||
226 | am35xx_emac_reset(); | ||
227 | } | ||
228 | |||
175 | static void __init nokia_n900_legacy_init(void) | 229 | static void __init nokia_n900_legacy_init(void) |
176 | { | 230 | { |
177 | hsmmc2_internal_input_clk(); | 231 | hsmmc2_internal_input_clk(); |
@@ -192,23 +246,34 @@ static void __init nokia_n900_legacy_init(void) | |||
192 | #ifdef CONFIG_ARCH_OMAP4 | 246 | #ifdef CONFIG_ARCH_OMAP4 |
193 | static void __init omap4_sdp_legacy_init(void) | 247 | static void __init omap4_sdp_legacy_init(void) |
194 | { | 248 | { |
195 | omap_4430sdp_display_init_of(); | ||
196 | legacy_init_wl12xx(WL12XX_REFCLOCK_26, | 249 | legacy_init_wl12xx(WL12XX_REFCLOCK_26, |
197 | WL12XX_TCXOCLOCK_26, 53); | 250 | WL12XX_TCXOCLOCK_26, 53); |
198 | } | 251 | } |
199 | 252 | ||
200 | static void __init omap4_panda_legacy_init(void) | 253 | static void __init omap4_panda_legacy_init(void) |
201 | { | 254 | { |
202 | omap4_panda_display_init_of(); | ||
203 | legacy_init_ehci_clk("auxclk3_ck"); | ||
204 | legacy_init_wl12xx(WL12XX_REFCLOCK_38, 0, 53); | 255 | legacy_init_wl12xx(WL12XX_REFCLOCK_38, 0, 53); |
205 | } | 256 | } |
206 | #endif | 257 | #endif |
207 | 258 | ||
259 | #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) | ||
260 | static struct iommu_platform_data omap4_iommu_pdata = { | ||
261 | .reset_name = "mmu_cache", | ||
262 | .assert_reset = omap_device_assert_hardreset, | ||
263 | .deassert_reset = omap_device_deassert_hardreset, | ||
264 | }; | ||
265 | #endif | ||
266 | |||
267 | #ifdef CONFIG_SOC_AM33XX | ||
268 | static void __init am335x_evmsk_legacy_init(void) | ||
269 | { | ||
270 | legacy_init_wl12xx(WL12XX_REFCLOCK_38, 0, 31); | ||
271 | } | ||
272 | #endif | ||
273 | |||
208 | #ifdef CONFIG_SOC_OMAP5 | 274 | #ifdef CONFIG_SOC_OMAP5 |
209 | static void __init omap5_uevm_legacy_init(void) | 275 | static void __init omap5_uevm_legacy_init(void) |
210 | { | 276 | { |
211 | legacy_init_ehci_clk("auxclk1_ck"); | ||
212 | } | 277 | } |
213 | #endif | 278 | #endif |
214 | 279 | ||
@@ -259,6 +324,8 @@ struct of_dev_auxdata omap_auxdata_lookup[] __initdata = { | |||
259 | OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002030, "48002030.pinmux", &pcs_pdata), | 324 | OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002030, "48002030.pinmux", &pcs_pdata), |
260 | OF_DEV_AUXDATA("ti,omap3-padconf", 0x480025a0, "480025a0.pinmux", &pcs_pdata), | 325 | OF_DEV_AUXDATA("ti,omap3-padconf", 0x480025a0, "480025a0.pinmux", &pcs_pdata), |
261 | OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002a00, "48002a00.pinmux", &pcs_pdata), | 326 | OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002a00, "48002a00.pinmux", &pcs_pdata), |
327 | OF_DEV_AUXDATA("ti,omap2-iommu", 0x5d000000, "5d000000.mmu", | ||
328 | &omap3_iommu_pdata), | ||
262 | /* Only on am3517 */ | 329 | /* Only on am3517 */ |
263 | OF_DEV_AUXDATA("ti,davinci_mdio", 0x5c030000, "davinci_mdio.0", NULL), | 330 | OF_DEV_AUXDATA("ti,davinci_mdio", 0x5c030000, "davinci_mdio.0", NULL), |
264 | OF_DEV_AUXDATA("ti,am3517-emac", 0x5c000000, "davinci_emac.0", | 331 | OF_DEV_AUXDATA("ti,am3517-emac", 0x5c000000, "davinci_emac.0", |
@@ -268,6 +335,12 @@ struct of_dev_auxdata omap_auxdata_lookup[] __initdata = { | |||
268 | OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a100040, "4a100040.pinmux", &pcs_pdata), | 335 | OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a100040, "4a100040.pinmux", &pcs_pdata), |
269 | OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a31e040, "4a31e040.pinmux", &pcs_pdata), | 336 | OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a31e040, "4a31e040.pinmux", &pcs_pdata), |
270 | #endif | 337 | #endif |
338 | #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) | ||
339 | OF_DEV_AUXDATA("ti,omap4-iommu", 0x4a066000, "4a066000.mmu", | ||
340 | &omap4_iommu_pdata), | ||
341 | OF_DEV_AUXDATA("ti,omap4-iommu", 0x55082000, "55082000.mmu", | ||
342 | &omap4_iommu_pdata), | ||
343 | #endif | ||
271 | { /* sentinel */ }, | 344 | { /* sentinel */ }, |
272 | }; | 345 | }; |
273 | 346 | ||
@@ -277,6 +350,8 @@ struct of_dev_auxdata omap_auxdata_lookup[] __initdata = { | |||
277 | */ | 350 | */ |
278 | static struct pdata_init pdata_quirks[] __initdata = { | 351 | static struct pdata_init pdata_quirks[] __initdata = { |
279 | #ifdef CONFIG_ARCH_OMAP3 | 352 | #ifdef CONFIG_ARCH_OMAP3 |
353 | { "compulab,omap3-sbc-t3517", omap3_sbc_t3517_legacy_init, }, | ||
354 | { "compulab,omap3-sbc-t3530", omap3_sbc_t3530_legacy_init, }, | ||
280 | { "compulab,omap3-sbc-t3730", omap3_sbc_t3730_legacy_init, }, | 355 | { "compulab,omap3-sbc-t3730", omap3_sbc_t3730_legacy_init, }, |
281 | { "nokia,omap3-n900", nokia_n900_legacy_init, }, | 356 | { "nokia,omap3-n900", nokia_n900_legacy_init, }, |
282 | { "nokia,omap3-n9", hsmmc2_internal_input_clk, }, | 357 | { "nokia,omap3-n9", hsmmc2_internal_input_clk, }, |
@@ -290,6 +365,9 @@ static struct pdata_init pdata_quirks[] __initdata = { | |||
290 | { "ti,omap4-sdp", omap4_sdp_legacy_init, }, | 365 | { "ti,omap4-sdp", omap4_sdp_legacy_init, }, |
291 | { "ti,omap4-panda", omap4_panda_legacy_init, }, | 366 | { "ti,omap4-panda", omap4_panda_legacy_init, }, |
292 | #endif | 367 | #endif |
368 | #ifdef CONFIG_SOC_AM33XX | ||
369 | { "ti,am335x-evmsk", am335x_evmsk_legacy_init, }, | ||
370 | #endif | ||
293 | #ifdef CONFIG_SOC_OMAP5 | 371 | #ifdef CONFIG_SOC_OMAP5 |
294 | { "ti,omap5-uevm", omap5_uevm_legacy_init, }, | 372 | { "ti,omap5-uevm", omap5_uevm_legacy_init, }, |
295 | #endif | 373 | #endif |
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h index 7bdd22afce69..d4d0fce325c7 100644 --- a/arch/arm/mach-omap2/pm.h +++ b/arch/arm/mach-omap2/pm.h | |||
@@ -103,7 +103,7 @@ static inline void enable_omap3630_toggle_l2_on_restore(void) { } | |||
103 | 103 | ||
104 | #define PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD (1 << 0) | 104 | #define PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD (1 << 0) |
105 | 105 | ||
106 | #if defined(CONFIG_ARCH_OMAP4) | 106 | #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP4) |
107 | extern u16 pm44xx_errata; | 107 | extern u16 pm44xx_errata; |
108 | #define IS_PM44XX_ERRATUM(id) (pm44xx_errata & (id)) | 108 | #define IS_PM44XX_ERRATUM(id) (pm44xx_errata & (id)) |
109 | #else | 109 | #else |
diff --git a/arch/arm/mach-omap2/prminst44xx.c b/arch/arm/mach-omap2/prminst44xx.c index 280f3c58abe5..05fcf6de44ee 100644 --- a/arch/arm/mach-omap2/prminst44xx.c +++ b/arch/arm/mach-omap2/prminst44xx.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include "prminst44xx.h" | 25 | #include "prminst44xx.h" |
26 | #include "prm-regbits-44xx.h" | 26 | #include "prm-regbits-44xx.h" |
27 | #include "prcm44xx.h" | 27 | #include "prcm44xx.h" |
28 | #include "prcm43xx.h" | ||
28 | #include "prcm_mpu44xx.h" | 29 | #include "prcm_mpu44xx.h" |
29 | #include "soc.h" | 30 | #include "soc.h" |
30 | 31 | ||
@@ -176,6 +177,8 @@ void omap4_prminst_global_warm_sw_reset(void) | |||
176 | dev_inst = OMAP54XX_PRM_DEVICE_INST; | 177 | dev_inst = OMAP54XX_PRM_DEVICE_INST; |
177 | else if (soc_is_dra7xx()) | 178 | else if (soc_is_dra7xx()) |
178 | dev_inst = DRA7XX_PRM_DEVICE_INST; | 179 | dev_inst = DRA7XX_PRM_DEVICE_INST; |
180 | else if (soc_is_am43xx()) | ||
181 | dev_inst = AM43XX_PRM_DEVICE_INST; | ||
179 | else | 182 | else |
180 | return; | 183 | return; |
181 | 184 | ||
diff --git a/arch/arm/mach-omap2/soc.h b/arch/arm/mach-omap2/soc.h index 076bd90a6ce0..30abcc8b20e0 100644 --- a/arch/arm/mach-omap2/soc.h +++ b/arch/arm/mach-omap2/soc.h | |||
@@ -438,7 +438,8 @@ IS_OMAP_TYPE(3430, 0x3430) | |||
438 | #define AM335X_REV_ES2_1 (AM335X_CLASS | (0x2 << 8)) | 438 | #define AM335X_REV_ES2_1 (AM335X_CLASS | (0x2 << 8)) |
439 | 439 | ||
440 | #define AM437X_CLASS 0x43700000 | 440 | #define AM437X_CLASS 0x43700000 |
441 | #define AM437X_REV_ES1_0 AM437X_CLASS | 441 | #define AM437X_REV_ES1_0 (AM437X_CLASS | (0x10 << 8)) |
442 | #define AM437X_REV_ES1_1 (AM437X_CLASS | (0x11 << 8)) | ||
442 | 443 | ||
443 | #define OMAP443X_CLASS 0x44300044 | 444 | #define OMAP443X_CLASS 0x44300044 |
444 | #define OMAP4430_REV_ES1_0 (OMAP443X_CLASS | (0x10 << 8)) | 445 | #define OMAP4430_REV_ES1_0 (OMAP443X_CLASS | (0x10 << 8)) |
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 74044aaf438b..b62de9f9d05c 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
@@ -604,7 +604,8 @@ OMAP_SYS_32K_TIMER_INIT(3_secure, 12, "secure_32k_fck", "ti,timer-secure", | |||
604 | 2, "timer_sys_ck", NULL); | 604 | 2, "timer_sys_ck", NULL); |
605 | #endif /* CONFIG_ARCH_OMAP3 */ | 605 | #endif /* CONFIG_ARCH_OMAP3 */ |
606 | 606 | ||
607 | #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) | 607 | #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) || \ |
608 | defined(CONFIG_SOC_AM43XX) | ||
608 | OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL, | 609 | OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL, |
609 | 1, "timer_sys_ck", "ti,timer-alwon"); | 610 | 1, "timer_sys_ck", "ti,timer-alwon"); |
610 | #endif | 611 | #endif |