diff options
author | Naveen Kumar Gaddipati <naveen.gaddipati@stericsson.com> | 2011-09-06 20:48:48 +0530 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@stericsson.com> | 2011-09-19 16:07:24 +0200 |
commit | b1cb3a0217f8e8d7b035dbe36b41e68665e489b4 (patch) | |
tree | 48a66f8f45acbce989ae80eda6308ac43fc27622 | |
parent | 956bf048d49efeab6b0873a0a9b7a3ce847adcf0 (diff) |
mach-ux500:Platform data for kernel 3.0
Platform data for kernel 3.0 migration.
ST-Ericsson ID: 352334
ST-Ericsson Linux next: NA
ST-Ericsson FOSS-OUT ID: NA
Signed-off-by: Naveen Kumar Gaddipati <naveen.gaddipati@stericsson.com>
-rw-r--r-- | arch/arm/mach-ux500/Kconfig-arch | 9 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-u5500.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu-db5500.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-ux500/dma-db8500.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-ux500/hotplug.c | 22 |
5 files changed, 26 insertions, 14 deletions
diff --git a/arch/arm/mach-ux500/Kconfig-arch b/arch/arm/mach-ux500/Kconfig-arch index 8466a0aeedd..013c76d8e74 100644 --- a/arch/arm/mach-ux500/Kconfig-arch +++ b/arch/arm/mach-ux500/Kconfig-arch @@ -83,7 +83,7 @@ config DISPLAY_GENERIC_DSI_PRIMARY_ROTATION_ANGLE config DISPLAY_GENERIC_DSI_PRIMARY_VSYNC bool "Enable v-sync for primary display" - depends on DISPLAY_GENERIC_DSI_PRIMARY || DISPLAY_SONY_SY35560_DSI_PRIMARY + depends on DISPLAY_GENERIC_DSI_PRIMARY default n help Say yes to enable v-sync for primary display @@ -101,13 +101,6 @@ config DISPLAY_SONY_ACX424AKP_DSI_PRIMARY help Say yes here when using a sony acx424akp DSI display -config SONY_SY35560_ENABLE_ESD_CHECK - bool "Enable esd status check for primary display" - depends on DISPLAY_SONY_SY35560_DSI_PRIMARY - default n - help - Say yes to enable esd status check for primary display - config DISPLAY_GENERIC_DSI_SECONDARY bool "Sub display support" depends on MACH_U8500 diff --git a/arch/arm/mach-ux500/board-u5500.c b/arch/arm/mach-ux500/board-u5500.c index 3532864e560..b993aa8e449 100644 --- a/arch/arm/mach-ux500/board-u5500.c +++ b/arch/arm/mach-ux500/board-u5500.c @@ -520,7 +520,7 @@ static void __init u5500_uart_init(void) db5500_add_uart0(NULL); db5500_add_uart1(NULL); db5500_add_uart2(NULL); - db5500_add_uart3(); + db5500_add_uart3(NULL); } static void __init u5500_init_machine(void) diff --git a/arch/arm/mach-ux500/cpu-db5500.c b/arch/arm/mach-ux500/cpu-db5500.c index 8ad842ba29b..70fa6c0efc9 100644 --- a/arch/arm/mach-ux500/cpu-db5500.c +++ b/arch/arm/mach-ux500/cpu-db5500.c @@ -38,6 +38,7 @@ static struct map_desc u5500_io_desc[] __initdata = { __IO_DEV_DESC(U5500_L2CC_BASE, SZ_4K), __IO_DEV_DESC(U5500_TWD_BASE, SZ_4K), __IO_DEV_DESC(U5500_MTU0_BASE, SZ_4K), + __IO_DEV_DESC(U5500_MTU1_BASE, SZ_4K), __IO_DEV_DESC(U5500_SCU_BASE, SZ_4K), __IO_DEV_DESC(U5500_RTC_BASE, SZ_4K), __IO_DEV_DESC(U5500_BACKUPRAM0_BASE, SZ_8K), diff --git a/arch/arm/mach-ux500/dma-db8500.c b/arch/arm/mach-ux500/dma-db8500.c index fba1f56d329..12bc9a3406c 100644 --- a/arch/arm/mach-ux500/dma-db8500.c +++ b/arch/arm/mach-ux500/dma-db8500.c @@ -187,7 +187,7 @@ static const dma_addr_t dma40_tx_map[DB8500_DMA_NR_DEV] = { [DB8500_DMA_DEV47_SLIM0_CH9_TX_DST_SXA7_RX_TX] = 0, [DB8500_DMA_DEV48_CAC1_TX] = U8500_CRYP1_BASE + CRYP1_TX_REG_OFFSET, [DB8500_DMA_DEV49_CAC1_TX_HAC1_TX] = 0, - [DB8500_DMA_DEV50_HAC1_TX] = 0, + [DB8500_DMA_DEV50_HAC1_TX] = U8500_HASH1_BASE + HASH1_TX_REG_OFFSET, [DB8500_DMA_MEMCPY_TX_0] = 0, [DB8500_DMA_DEV52_SLIM1_CH4_TX_HSI_TX_CH4] = 0, [DB8500_DMA_DEV53_SLIM1_CH5_TX_HSI_TX_CH5] = 0, @@ -228,6 +228,7 @@ static struct stedma40_platform_data dma40_plat_data = { #ifdef CONFIG_UX500_CONTEXT #define D40_DREG_GCC 0x000 #define D40_DREG_LCPA 0x020 +#define D40_DREG_LCLA 0x024 static void __iomem *base; @@ -235,10 +236,12 @@ static int dma_context_notifier_call(struct notifier_block *this, unsigned long event, void *data) { static unsigned long lcpa; + static unsigned long lcla; static unsigned long gcc; switch (event) { case CONTEXT_APE_SAVE: + lcla = readl(base + D40_DREG_LCLA); lcpa = readl(base + D40_DREG_LCPA); gcc = readl(base + D40_DREG_GCC); break; @@ -246,6 +249,7 @@ static int dma_context_notifier_call(struct notifier_block *this, case CONTEXT_APE_RESTORE: writel(gcc, base + D40_DREG_GCC); writel(lcpa, base + D40_DREG_LCPA); + writel(lcla, base + D40_DREG_LCLA); break; } return NOTIFY_OK; diff --git a/arch/arm/mach-ux500/hotplug.c b/arch/arm/mach-ux500/hotplug.c index cc88c5309b7..0d71ee4e399 100644 --- a/arch/arm/mach-ux500/hotplug.c +++ b/arch/arm/mach-ux500/hotplug.c @@ -11,21 +11,22 @@ #include <linux/kernel.h> #include <linux/errno.h> #include <linux/smp.h> +#include <linux/completion.h> #include <asm/cacheflush.h> -#ifdef CONFIG_U8500_CPUIDLE -#include "pm/cpuidle.h" -#endif #include "pm/context.h" extern volatile int pen_release; +static DECLARE_COMPLETION(cpu_killed); + static inline void platform_do_lowpower(unsigned int cpu) { flush_cache_all(); for (;;) { + context_varm_save_core(); context_save_cpu_registers(); @@ -45,7 +46,7 @@ static inline void platform_do_lowpower(unsigned int cpu) int platform_cpu_kill(unsigned int cpu) { - return 1; + return wait_for_completion_timeout(&cpu_killed, 5000); } /* @@ -55,6 +56,19 @@ int platform_cpu_kill(unsigned int cpu) */ void platform_cpu_die(unsigned int cpu) { +#ifdef DEBUG + unsigned int this_cpu = hard_smp_processor_id(); + + if (cpu != this_cpu) { + printk(KERN_CRIT "Eek! platform_cpu_die running on %u, should be %u\n", + this_cpu, cpu); + BUG(); + } +#endif + + printk(KERN_NOTICE "CPU%u: shutdown\n", cpu); + complete(&cpu_killed); + /* directly enter low power state, skipping secure registers */ platform_do_lowpower(cpu); } |