From ed8dfd22ea2533a1b169881c3de94be8daa0e297 Mon Sep 17 00:00:00 2001 From: Paul Walmsley Date: Thu, 23 Feb 2012 16:41:52 -0800 Subject: [PATCH 1/8] ARM: OMAP2+: I2C: always compile I2C reset code, even if I2C driver is not built During kernel init, we reset all IP blocks on the OMAP that we can, even if there is no driver compiled for that IP block. Unlike most IP blocks, the I2C block requires some extra programming for this to work. This reset code is incorrectly omitted when the I2C driver is deselected. In this circumstance, the build breaks. Fix by compiling the I2C reset code unconditionally. Problem reported by Russell King . Signed-off-by: Paul Walmsley Cc: Russell King Tested-by: Shubhrajyoti Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/Makefile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index bd76394ccaf8..56a6e98652cc 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -4,7 +4,7 @@ # Common support obj-y := id.o io.o control.o mux.o devices.o serial.o gpmc.o timer.o pm.o \ - common.o gpio.o dma.o wd_timer.o display.o + common.o gpio.o dma.o wd_timer.o display.o i2c.o omap-2-3-common = irq.o sdrc.o hwmod-common = omap_hwmod.o \ @@ -182,9 +182,6 @@ obj-$(CONFIG_OMAP_IOMMU) += iommu2.o iommu-$(CONFIG_OMAP_IOMMU) := omap-iommu.o obj-y += $(iommu-m) $(iommu-y) -i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o -obj-y += $(i2c-omap-m) $(i2c-omap-y) - ifneq ($(CONFIG_TIDSPBRIDGE),) obj-y += dsp.o endif From b2a5124e596e51619e4fbf72fde5baf84538285d Mon Sep 17 00:00:00 2001 From: Tony Lindgren Date: Thu, 23 Feb 2012 16:41:52 -0800 Subject: [PATCH 2/8] ARM: OMAP2+: Fix Kconfig dependencies for USB_ARCH_HAS_EHCI Otherwise we get: warning: (ARCH_OMAP3 && ARCH_OMAP4) selects USB_ARCH_HAS_EHCI which has unmet direct dependencies (USB_SUPPORT) Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index d965da45160e..337f98dd8148 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -32,7 +32,7 @@ config ARCH_OMAP3 depends on ARCH_OMAP2PLUS default y select CPU_V7 - select USB_ARCH_HAS_EHCI + select USB_ARCH_HAS_EHCI if USB_SUPPORT select ARCH_HAS_OPP select PM_OPP if PM select ARM_CPU_SUSPEND if PM @@ -52,7 +52,7 @@ config ARCH_OMAP4 select ARM_ERRATA_720789 select ARCH_HAS_OPP select PM_OPP if PM - select USB_ARCH_HAS_EHCI + select USB_ARCH_HAS_EHCI if USB_SUPPORT select ARM_CPU_SUSPEND if PM comment "OMAP Core Type" From e3a98fe11b296b833ac540fbc19f407c790fdc05 Mon Sep 17 00:00:00 2001 From: Tony Lindgren Date: Thu, 23 Feb 2012 16:41:53 -0800 Subject: [PATCH 3/8] ARM: OMAP2+: Fix OMAP_HDQ_BASE build error If CONFIG_SOC_OMAP3430 is not set and CONFIG_HDQ_MASTER_OMAP is selected for w1 driver we get the following error: arch/arm/mach-omap2/devices.c:662:13: error: 'OMAP_HDQ_BASE' undeclared here (not in a function) Looks like OMAP_HDQ_BASE is valid for all omaps except 2420, so we can remove the ifdef and not register the device on 2420. Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/devices.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 283d11eae693..3ffefe275ea0 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -654,9 +654,7 @@ void __init omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data) /*-------------------------------------------------------------------------*/ #if defined(CONFIG_HDQ_MASTER_OMAP) || defined(CONFIG_HDQ_MASTER_OMAP_MODULE) -#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_SOC_OMAP3430) #define OMAP_HDQ_BASE 0x480B2000 -#endif static struct resource omap_hdq_resources[] = { { .start = OMAP_HDQ_BASE, @@ -679,7 +677,10 @@ static struct platform_device omap_hdq_dev = { }; static inline void omap_hdq_init(void) { - (void) platform_device_register(&omap_hdq_dev); + if (cpu_is_omap2420()) + return; + + platform_device_register(&omap_hdq_dev); } #else static inline void omap_hdq_init(void) {} From cc4915d8a0bbe6825eb9fc2c687a0151441af7db Mon Sep 17 00:00:00 2001 From: Tony Lindgren Date: Thu, 23 Feb 2012 14:21:28 -0800 Subject: [PATCH 4/8] ARM: OMAP2+: Fix board_mux section type conflict when OMAP_MUX is not set Otherwise we can get: arch/arm/mach-omap2/mux.h:249:31: error: board_mux causes a section type conflict Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/mux.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/mach-omap2/mux.h b/arch/arm/mach-omap2/mux.h index 2132308ad1e4..69fe060a0b75 100644 --- a/arch/arm/mach-omap2/mux.h +++ b/arch/arm/mach-omap2/mux.h @@ -246,7 +246,7 @@ static inline void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state) { } -static struct omap_board_mux *board_mux __initdata __maybe_unused; +static struct omap_board_mux *board_mux __maybe_unused; #endif From 38232f7bd112bba6dd65309a218f21d3171c84fd Mon Sep 17 00:00:00 2001 From: Tony Lindgren Date: Thu, 23 Feb 2012 14:29:59 -0800 Subject: [PATCH 5/8] ARM: OMAP2+: Fix zoom LCD backlight if TWL_CORE is not selected Otherwise we get: arch/arm/mach-omap2/board-zoom-display.c:64: undefined reference to `twl_i2c_read_u8' arch/arm/mach-omap2/board-zoom-display.c:65: undefined reference to `twl_i2c_read_u8' arch/arm/mach-omap2/board-zoom-display.c:84: undefined reference to `twl_i2c_write_u8' arch/arm/mach-omap2/board-zoom-display.c:86: undefined reference to `twl_i2c_write_u8' arch/arm/mach-omap2/board-zoom-display.c:91: undefined reference to `twl_i2c_write_u8' arch/arm/mach-omap2/board-zoom-display.c:92: undefined reference to `twl_i2c_write_u8' arch/arm/mach-omap2/board-zoom-display.c:72: undefined reference to `twl_i2c_write_u8' Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/board-zoom-display.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/mach-omap2/board-zoom-display.c b/arch/arm/mach-omap2/board-zoom-display.c index d4683ba5f721..2a13b9f6c61c 100644 --- a/arch/arm/mach-omap2/board-zoom-display.c +++ b/arch/arm/mach-omap2/board-zoom-display.c @@ -55,6 +55,7 @@ static void zoom_panel_disable_lcd(struct omap_dss_device *dssdev) static int zoom_set_bl_intensity(struct omap_dss_device *dssdev, int level) { +#ifdef CONFIG_TWL4030_CORE unsigned char c; u8 mux_pwm, enb_pwm; @@ -90,6 +91,9 @@ static int zoom_set_bl_intensity(struct omap_dss_device *dssdev, int level) c = ((50 * (100 - level)) / 100) + 1; twl_i2c_write_u8(TWL4030_MODULE_PWM1, 0x7F, TWL_LED_PWMOFF); twl_i2c_write_u8(TWL4030_MODULE_PWM1, c, TWL_LED_PWMON); +#else + pr_warn("Backlight not enabled\n"); +#endif return 0; } From 149f1d5c8d2fd6879cdf93ca70f1cb745e698a1e Mon Sep 17 00:00:00 2001 From: Tony Lindgren Date: Thu, 23 Feb 2012 14:55:40 -0800 Subject: [PATCH 6/8] ARM: OMAP2+: Fix devexit for smartreflex when CONFIG_HOTPLUG is not set Otherwise we get: `omap_sr_remove' referenced in section `.data' of arch/arm/mach-omap2/built-in.o: defined in discarded section `.devexit.text' of arch/arm/mach-omap2/built-in.o Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/smartreflex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c index 7e755bb0ffc4..47c77a1d932a 100644 --- a/arch/arm/mach-omap2/smartreflex.c +++ b/arch/arm/mach-omap2/smartreflex.c @@ -1012,7 +1012,7 @@ static int __devexit omap_sr_remove(struct platform_device *pdev) } static struct platform_driver smartreflex_driver = { - .remove = omap_sr_remove, + .remove = __devexit_p(omap_sr_remove), .driver = { .name = "smartreflex", }, From 3e2e613f5f1c5d8b30e6ce49954143bdfaa03dd5 Mon Sep 17 00:00:00 2001 From: Tony Lindgren Date: Thu, 23 Feb 2012 14:58:08 -0800 Subject: [PATCH 7/8] ARM: OMAP: Fix devexit for dma when CONFIG_HOTPLUG is not set Otherwise we get: `omap_system_dma_remove' referenced in section `.data' of arch/arm/plat-omap/built-in.o: defined in discarded section `.devexit.text' of arch/arm/plat-omap/built-in.o Signed-off-by: Tony Lindgren --- arch/arm/plat-omap/dma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 002fb4d96bbc..cb856fe0434a 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c @@ -2125,7 +2125,7 @@ static int __devexit omap_system_dma_remove(struct platform_device *pdev) static struct platform_driver omap_system_dma_driver = { .probe = omap_system_dma_probe, - .remove = omap_system_dma_remove, + .remove = __devexit_p(omap_system_dma_remove), .driver = { .name = "omap_dma_system" }, From c295fb633e321a7df3b8846c4eaddc5da3e0aaed Mon Sep 17 00:00:00 2001 From: Tony Lindgren Date: Thu, 23 Feb 2012 16:41:53 -0800 Subject: [PATCH 8/8] ARM: OMAP2+: Fix multiple randconfig errors with SOC_OMAP and SOC_OMAP_NOOP If we don't have ARCH_OMAP2, 3 or 4 selected randconfig will always fail with multiple errors as the CPU and MACHINE are not set. Fix this by changing arch/arm/Makefile to build mach-omap2 based on ARCH_OMAP2PLUS. And let's introduce SOC_OMAP and SOC_OMAP_NOOP that allow randconfig to generate buildable .config files. Note that we can also remove few uncecssary ARCH_OMAP2PLUS lines as they are all within if ARCH_OMAP2PLUS block. Cc: Russell King Signed-off-by: Tony Lindgren --- arch/arm/Makefile | 4 +-- arch/arm/mach-omap2/Kconfig | 51 ++++++++++++++++++++++++------------- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 1683bfb9166f..ea69448be0ed 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -164,9 +164,7 @@ machine-$(CONFIG_ARCH_MXS) := mxs machine-$(CONFIG_ARCH_NETX) := netx machine-$(CONFIG_ARCH_NOMADIK) := nomadik machine-$(CONFIG_ARCH_OMAP1) := omap1 -machine-$(CONFIG_ARCH_OMAP2) := omap2 -machine-$(CONFIG_ARCH_OMAP3) := omap2 -machine-$(CONFIG_ARCH_OMAP4) := omap2 +machine-$(CONFIG_ARCH_OMAP2PLUS) := omap2 machine-$(CONFIG_ARCH_ORION5X) := orion5x machine-$(CONFIG_ARCH_PICOXCELL) := picoxcell machine-$(CONFIG_ARCH_PNX4008) := pnx4008 diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 337f98dd8148..c4ae0a77f7b4 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -21,16 +21,12 @@ config ARCH_OMAP2PLUS_TYPICAL Compile a kernel suitable for booting most boards config ARCH_OMAP2 - bool "TI OMAP2" - depends on ARCH_OMAP2PLUS - default y + bool select CPU_V6 select MULTI_IRQ_HANDLER config ARCH_OMAP3 - bool "TI OMAP3" - depends on ARCH_OMAP2PLUS - default y + bool select CPU_V7 select USB_ARCH_HAS_EHCI if USB_SUPPORT select ARCH_HAS_OPP @@ -39,9 +35,7 @@ config ARCH_OMAP3 select MULTI_IRQ_HANDLER config ARCH_OMAP4 - bool "TI OMAP4" - default y - depends on ARCH_OMAP2PLUS + bool select CACHE_L2X0 select CPU_V7 select ARM_GIC @@ -56,36 +50,58 @@ config ARCH_OMAP4 select ARM_CPU_SUSPEND if PM comment "OMAP Core Type" - depends on ARCH_OMAP2 + +config SOC_OMAP + bool config SOC_OMAP2420 bool "OMAP2420 support" - depends on ARCH_OMAP2 default y + select SOC_OMAP + select ARCH_OMAP2 select OMAP_DM_TIMER select ARCH_OMAP_OTG config SOC_OMAP2430 bool "OMAP2430 support" - depends on ARCH_OMAP2 default y + select SOC_OMAP + select ARCH_OMAP2 select ARCH_OMAP_OTG config SOC_OMAP3430 bool "OMAP3430 support" - depends on ARCH_OMAP3 default y + select SOC_OMAP + select ARCH_OMAP3 select ARCH_OMAP_OTG config SOC_OMAPTI81XX bool "TI81XX support" - depends on ARCH_OMAP3 default y + select SOC_OMAP + select ARCH_OMAP3 config SOC_OMAPAM33XX bool "AM33XX support" - depends on ARCH_OMAP3 default y + select SOC_OMAP + select ARCH_OMAP3 + +config SOC_OMAP44XX + bool "OMAP44XX support" + default y + select SOC_OMAP + select ARCH_OMAP4 + +config SOC_OMAP_NOOP + bool + depends on !SOC_OMAP + default y + select ARCH_OMAP2 + select ARCH_OMAP3 + select ARCH_OMAP4 + select MACH_OMAP_GENERIC config OMAP_PACKAGE_ZAF bool @@ -112,17 +128,17 @@ config OMAP_PACKAGE_CBS bool comment "OMAP Board Type" - depends on ARCH_OMAP2PLUS config MACH_OMAP_GENERIC bool "Generic OMAP2+ board" - depends on ARCH_OMAP2PLUS select USE_OF default y help Support for generic TI OMAP2+ boards using Flattened Device Tree. More information at Documentation/devicetree +if SOC_OMAP + config MACH_OMAP2_TUSB6010 bool depends on ARCH_OMAP2 && SOC_OMAP2420 @@ -343,6 +359,7 @@ config MACH_OMAP4_PANDA select OMAP_PACKAGE_CBS select REGULATOR_FIXED_VOLTAGE if REGULATOR +endif config OMAP3_EMU bool "OMAP3 debugging peripherals" depends on ARCH_OMAP3