lkml.org 
[lkml]   [2012]   [Sep]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 04/17] mfd: dbx500-prcmu: Introduce TCDM mapping struct
Date
TCDM size varies between DBs models.
This patch introduces a new structure aimed to handle the TCDM
dynamically.

Each SoC from ux500 family declares its mapping and pass it to
prcmu early init.

Signed-off-by: Loic Pallardy <loic.pallardy@stericsson.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/arm/mach-ux500/board-mop500.c | 3 ++-
arch/arm/mach-ux500/cpu-db8500.c | 11 +++++++++++
arch/arm/mach-ux500/include/mach/devices.h | 3 +++
include/linux/mfd/dbx500-prcmu.h | 9 +++++++--
4 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index 057dfdb..a38493b 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -28,6 +28,7 @@
#include <linux/mfd/tps6105x.h>
#include <linux/mfd/abx500/ab8500-gpio.h>
#include <linux/mfd/abx500/ab8500-codec.h>
+#include <linux/mfd/dbx500-prcmu.h>
#include <linux/leds-lp5521.h>
#include <linux/input.h>
#include <linux/smsc911x.h>
@@ -718,7 +719,7 @@ static void __init u9540_init_machine(void)

static void __init mop500_init_irq(void)
{
- prcmu_early_init();
+ prcmu_early_init(&db8500_tcdm_map);
ux500_init_irq();
}

diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index f3ed787..59dcf82 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -17,6 +17,7 @@
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/mfd/abx500/ab8500.h>
+#include <linux/mfd/dbx500-prcmu.h>

#include <asm/mach/map.h>
#include <asm/pmu.h>
@@ -133,6 +134,16 @@ static struct platform_device db8500_prcmu_device = {
.name = "db8500-prcmu",
};

+struct prcmu_tcdm_map db8500_tcdm_map = {
+ .tcdm_size = SZ_4K,
+ .legacy_offset = 0,
+};
+
+struct prcmu_tcdm_map db9540_tcdm_map = {
+ .tcdm_size = SZ_4K + SZ_8K,
+ .legacy_offset = SZ_8K,
+};
+
static struct platform_device *platform_devs[] __initdata = {
&u8500_dma40_device,
&db8500_pmu_device,
diff --git a/arch/arm/mach-ux500/include/mach/devices.h b/arch/arm/mach-ux500/include/mach/devices.h
index cbc6f1e..1caa76e 100644
--- a/arch/arm/mach-ux500/include/mach/devices.h
+++ b/arch/arm/mach-ux500/include/mach/devices.h
@@ -20,4 +20,7 @@ extern struct platform_device ux500_cryp1_device;
extern struct platform_device u8500_dma40_device;
extern struct platform_device ux500_ske_keypad_device;

+extern struct prcmu_tcdm_map db8500_tcdm_map;
+extern struct prcmu_tcdm_map db9540_tcdm_map;
+
#endif
diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h
index 5b90e94..55025ba 100644
--- a/include/linux/mfd/dbx500-prcmu.h
+++ b/include/linux/mfd/dbx500-prcmu.h
@@ -213,13 +213,18 @@ enum ddr_pwrst {
DDR_PWR_STATE_OFFHIGHLAT = 0x03
};

+struct prcmu_tcdm_map {
+ u32 tcdm_size;
+ u32 legacy_offset;
+};
+
#include <linux/mfd/db8500-prcmu.h>

#if defined(CONFIG_UX500_SOC_DB8500)

#include <mach/id.h>

-static inline void __init prcmu_early_init(void)
+static inline void __init prcmu_early_init(struct prcmu_tcdm_map *map)
{
return db8500_prcmu_early_init();
}
@@ -438,7 +443,7 @@ static inline int prcmu_config_a9wdog(u8 num, bool sleep_auto_off)
}
#else

-static inline void __init prcmu_early_init(void) {}
+static inline void __init prcmu_early_init(struct prcmu_tcdm_map *map) {}

static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk,
bool keep_ap_pll)
--
1.7.11.1


\
 
 \ /
  Last update: 2012-09-05 13:03    [W:0.085 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site