From patchwork Wed Sep 5 09:59:00 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Loic Pallardy X-Patchwork-Id: 1408151 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork2.kernel.org (Postfix) with ESMTP id 1A198DF264 for ; Wed, 5 Sep 2012 10:08:02 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1T9CRe-0006bX-5x; Wed, 05 Sep 2012 10:02:51 +0000 Received: from eu1sys200aog102.obsmtp.com ([207.126.144.113]) by merlin.infradead.org with smtps (Exim 4.76 #1 (Red Hat Linux)) id 1T9COo-00058K-43 for linux-arm-kernel@lists.infradead.org; Wed, 05 Sep 2012 10:00:07 +0000 Received: from beta.dmz-us.st.com ([167.4.1.35]) (using TLSv1) by eu1sys200aob102.postini.com ([207.126.147.11]) with SMTP ID DSNKUEcikWGk3FFWcSlEvepRGKPXOLDq620H@postini.com; Wed, 05 Sep 2012 09:59:53 UTC Received: from zeta.dmz-us.st.com (ns4.st.com [167.4.16.71]) by beta.dmz-us.st.com (STMicroelectronics) with ESMTP id 62F3857; Wed, 5 Sep 2012 09:59:07 +0000 (GMT) Received: from relay2.stm.gmessaging.net (unknown [10.230.100.18]) by zeta.dmz-us.st.com (STMicroelectronics) with ESMTP id 0ADCAAB; Wed, 5 Sep 2012 06:05:37 +0000 (GMT) Received: from exdcvycastm004.EQ1STM.local (alteon-source-exch [10.230.100.61]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (Client CN "exdcvycastm004", Issuer "exdcvycastm004" (not verified)) by relay2.stm.gmessaging.net (Postfix) with ESMTPS id A633DA8065; Wed, 5 Sep 2012 11:59:30 +0200 (CEST) Received: from lmenx30v.lme.st.com (10.230.100.153) by smtp.stericsson.com (10.230.100.2) with Microsoft SMTP Server (TLS) id 8.3.83.0; Wed, 5 Sep 2012 11:59:35 +0200 From: Loic Pallardy To: Samuel Ortiz , , , Linus Walleij Subject: [PATCH 04/17] mfd: dbx500-prcmu: Introduce TCDM mapping struct Date: Wed, 5 Sep 2012 11:59:00 +0200 Message-ID: <1346839153-6465-5-git-send-email-loic.pallardy-ext@stericsson.com> X-Mailer: git-send-email 1.7.11.1 In-Reply-To: <1346839153-6465-1-git-send-email-loic.pallardy-ext@stericsson.com> References: <1346839153-6465-1-git-send-email-loic.pallardy-ext@stericsson.com> MIME-Version: 1.0 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -4.2 (----) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-4.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at http://www.dnswl.org/, medium trust [207.126.144.113 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: Loic Pallardy , Loic Pallardy , STEricsson_nomadik_linux , Loic Pallardy , Maxime Coquelin , Lee Jones , LT ST-Ericsson X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org 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 Signed-off-by: Maxime Coquelin Acked-by: Linus Walleij --- 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 #include #include +#include #include #include #include @@ -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 #include #include +#include #include #include @@ -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 #if defined(CONFIG_UX500_SOC_DB8500) #include -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)