summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaveen Kumar Gaddipati <naveen.gaddipati@stericsson.com>2011-09-06 20:48:48 +0530
committerUlf Hansson <ulf.hansson@stericsson.com>2011-09-19 16:07:24 +0200
commitb1cb3a0217f8e8d7b035dbe36b41e68665e489b4 (patch)
tree48a66f8f45acbce989ae80eda6308ac43fc27622
parent956bf048d49efeab6b0873a0a9b7a3ce847adcf0 (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-arch9
-rw-r--r--arch/arm/mach-ux500/board-u5500.c2
-rw-r--r--arch/arm/mach-ux500/cpu-db5500.c1
-rw-r--r--arch/arm/mach-ux500/dma-db8500.c6
-rw-r--r--arch/arm/mach-ux500/hotplug.c22
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);
}