From: Stephen Rothwell Date: Wed, 12 Oct 2011 03:25:12 +0000 (+1100) Subject: Merge remote-tracking branch 'mfd/for-next' X-Git-Tag: next-20111012~41 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=8cca88242ed5a1b41ddb9ba75c2936dded8e15ec;p=karo-tx-linux.git Merge remote-tracking branch 'mfd/for-next' Conflicts: arch/arm/mach-imx/mach-mx31moboard.c arch/arm/mach-u300/include/mach/irqs.h --- 8cca88242ed5a1b41ddb9ba75c2936dded8e15ec diff --cc arch/arm/mach-imx/mach-mx31moboard.c index fff7791b7e7c,f7e302d718b4..07034f44466a --- a/arch/arm/mach-imx/mach-mx31moboard.c +++ b/arch/arm/mach-imx/mach-mx31moboard.c @@@ -28,9 -28,7 +28,10 @@@ #include #include #include +#include +#include +#include + #include #include #include diff --cc arch/arm/mach-omap2/board-omap3beagle.c index 3826493d1b2b,9cc9fa9315d4..ac6de1d70887 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c @@@ -447,8 -448,20 +448,13 @@@ static struct platform_device keys_gpi static void __init omap3_beagle_init_early(void) { omap2_init_common_infrastructure(); - omap2_init_common_devices(mt46h32m32lf6_sdrc_params, - mt46h32m32lf6_sdrc_params); -} - -static void __init omap3_beagle_init_irq(void) -{ - omap3_init_irq(); } + static struct platform_device madc_hwmon = { + .name = "twl4030_madc_hwmon", + .id = -1, + }; + static struct platform_device *omap3_beagle_devices[] __initdata = { &leds_gpio, &keys_gpio, diff --cc arch/arm/mach-u300/include/mach/irqs.h index d270fea32926,a6867b12773e..db3fbfa1d6e9 --- a/arch/arm/mach-u300/include/mach/irqs.h +++ b/arch/arm/mach-u300/include/mach/irqs.h @@@ -106,25 -106,9 +106,17 @@@ #define IRQ_U300_NFIF 45 #define IRQ_U300_NFIF2 46 #define IRQ_U300_SYSCON_PLL_LOCK 47 -#define U300_NR_IRQS 48 +#define U300_VIC_IRQS_END 48 #endif -#define NR_IRQS U300_NR_IRQS +/* Maximum 8*7 GPIO lines */ +#ifdef CONFIG_GPIO_U300 +#define IRQ_U300_GPIO_BASE (U300_VIC_IRQS_END) +#define IRQ_U300_GPIO_END (IRQ_U300_GPIO_BASE + 56) +#else +#define IRQ_U300_GPIO_END (U300_VIC_IRQS_END) +#endif + - /* Optional AB3550 mixsig chip */ - #ifdef CONFIG_AB3550_CORE - #define IRQ_AB3550_BASE (IRQ_U300_GPIO_END) - #define IRQ_AB3550_END (IRQ_AB3550_BASE + 38) - #else - #define IRQ_AB3550_END (IRQ_U300_GPIO_END) - #endif - - #define NR_IRQS (IRQ_AB3550_END) ++#define NR_IRQS (IRQ_U300_GPIO_END) #endif diff --cc arch/arm/mach-ux500/board-u5500.c index e014aa749b03,5c9e66502ebb..82025ba70c03 --- a/arch/arm/mach-ux500/board-u5500.c +++ b/arch/arm/mach-ux500/board-u5500.c @@@ -8,8 -8,10 +8,9 @@@ #include #include #include -#include #include #include + #include #include #include diff --cc arch/arm/mach-ux500/cpu.c index 1405d0eb7edb,bb5653993ca2..f41857494375 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c @@@ -47,6 -53,96 +47,6 @@@ void __init ux500_init_irq(void if (cpu_is_u5500()) db5500_prcmu_early_init(); if (cpu_is_u8500()) - prcmu_early_init(); + db8500_prcmu_early_init(); clk_init(); } - -#ifdef CONFIG_CACHE_L2X0 -static inline void ux500_cache_wait(void __iomem *reg, unsigned long mask) -{ - /* wait for the operation to complete */ - while (readl_relaxed(reg) & mask) - ; -} - -static inline void ux500_cache_sync(void) -{ - void __iomem *base = l2x0_base; - - writel_relaxed(0, base + L2X0_CACHE_SYNC); - ux500_cache_wait(base + L2X0_CACHE_SYNC, 1); -} - -/* - * The L2 cache cannot be turned off in the non-secure world. - * Dummy until a secure service is in place. - */ -static void ux500_l2x0_disable(void) -{ -} - -/* - * This is only called when doing a kexec, just after turning off the L2 - * and L1 cache, and it is surrounded by a spinlock in the generic version. - * However, we're not really turning off the L2 cache right now and the - * PL310 does not support exclusive accesses (used to implement the spinlock). - * So, the invalidation needs to be done without the spinlock. - */ -static void ux500_l2x0_inv_all(void) -{ - void __iomem *base = l2x0_base; - uint32_t l2x0_way_mask = (1<<16) - 1; /* Bitmask of active ways */ - - /* invalidate all ways */ - writel_relaxed(l2x0_way_mask, base + L2X0_INV_WAY); - ux500_cache_wait(base + L2X0_INV_WAY, l2x0_way_mask); - ux500_cache_sync(); -} - -static int ux500_l2x0_init(void) -{ - if (cpu_is_u5500()) - l2x0_base = __io_address(U5500_L2CC_BASE); - else if (cpu_is_u8500()) - l2x0_base = __io_address(U8500_L2CC_BASE); - else - ux500_unknown_soc(); - - /* 64KB way size, 8 way associativity, force WA */ - l2x0_init(l2x0_base, 0x3e060000, 0xc0000fff); - - /* Override invalidate function */ - outer_cache.disable = ux500_l2x0_disable; - outer_cache.inv_all = ux500_l2x0_inv_all; - - return 0; -} -early_initcall(ux500_l2x0_init); -#endif - -static void __init ux500_timer_init(void) -{ -#ifdef CONFIG_LOCAL_TIMERS - /* Setup the local timer base */ - if (cpu_is_u5500()) - twd_base = __io_address(U5500_TWD_BASE); - else if (cpu_is_u8500()) - twd_base = __io_address(U8500_TWD_BASE); - else - ux500_unknown_soc(); -#endif - if (cpu_is_u5500()) - mtu_base = __io_address(U5500_MTU0_BASE); - else if (cpu_is_u8500ed()) - mtu_base = __io_address(U8500_MTU0_BASE_ED); - else if (cpu_is_u8500()) - mtu_base = __io_address(U8500_MTU0_BASE); - else - ux500_unknown_soc(); - - nmdk_timer_init(); -} - -struct sys_timer ux500_timer = { - .init = ux500_timer_init, -}; diff --cc drivers/gpio/Kconfig index 4ab5d6614ffa,fbc5fd449a04..646503036227 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@@ -170,18 -178,9 +170,18 @@@ config GPIO_SC The Intel Tunnel Creek processor has 5 GPIOs powered by the core power rail and 9 from suspend power supply. +config GPIO_U300 + bool "ST-Ericsson U300 COH 901 335/571 GPIO" + depends on GPIOLIB && ARCH_U300 + help + Say yes here to support GPIO interface on ST-Ericsson U300. + The names of the two IP block variants supported are + COH 901 335 and COH 901 571/3. They contain 3, 5 or 7 + ports of 8 GPIO pins each. + config GPIO_VX855 tristate "VIA VX855/VX875 GPIO" - depends on MFD_SUPPORT && PCI + depends on PCI select MFD_CORE select MFD_VX855 help