From patchwork Thu Feb 2 14:45:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Belloni X-Patchwork-Id: 9552093 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 3125D604A7 for ; Thu, 2 Feb 2017 14:53:35 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 24DF927DF9 for ; Thu, 2 Feb 2017 14:53:35 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1789328477; Thu, 2 Feb 2017 14:53:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00 autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id A583327DF9 for ; Thu, 2 Feb 2017 14:53:34 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cZIlR-0005jH-VK; Thu, 02 Feb 2017 14:53:33 +0000 Received: from mail.free-electrons.com ([62.4.15.54]) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cZIeJ-0000sC-Gb for linux-arm-kernel@lists.infradead.org; Thu, 02 Feb 2017 14:46:24 +0000 Received: by mail.free-electrons.com (Postfix, from userid 110) id B2BA720DF1; Thu, 2 Feb 2017 15:45:27 +0100 (CET) Received: from localhost (unknown [88.191.26.124]) by mail.free-electrons.com (Postfix) with ESMTPSA id 8DAD920C37; Thu, 2 Feb 2017 15:45:27 +0100 (CET) From: Alexandre Belloni To: Nicolas Ferre Subject: [PATCH 08/13] ARM: at91: pm: tie the memory controller type to the ramc id Date: Thu, 2 Feb 2017 15:45:18 +0100 Message-Id: <20170202144523.11706-9-alexandre.belloni@free-electrons.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170202144523.11706-1-alexandre.belloni@free-electrons.com> References: <20170202144523.11706-1-alexandre.belloni@free-electrons.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170202_064612_450566_2B2DC8FF X-CRM114-Status: GOOD ( 12.84 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Boris Brezillon , Ludovic Desroches , Alexandre Belloni , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Instead of rely on the SoC type to select the memory controller type, use the device tree ids as they are parsed anyway. Signed-off-by: Alexandre Belloni --- arch/arm/mach-at91/pm.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index d4a444c4c38f..b6448043ee7a 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c @@ -313,11 +313,22 @@ static void at91sam9_sdram_standby(void) at91_ramc_write(1, AT91_SDRAMC_LPR, saved_lpr1); } +struct ramc_info { + void (*standby)(void); + unsigned int memctrl; +}; + +static const struct ramc_info ramc_infos[] __initconst = { + { .standby = at91rm9200_standby, .memctrl = AT91_MEMCTRL_MC}, + { .standby = at91sam9_sdram_standby, .memctrl = AT91_MEMCTRL_SDRAMC}, + { .standby = at91_ddr_standby, .memctrl = AT91_MEMCTRL_DDRSDR}, +}; + static const struct of_device_id const ramc_ids[] __initconst = { - { .compatible = "atmel,at91rm9200-sdramc", .data = at91rm9200_standby }, - { .compatible = "atmel,at91sam9260-sdramc", .data = at91sam9_sdram_standby }, - { .compatible = "atmel,at91sam9g45-ddramc", .data = at91_ddr_standby }, - { .compatible = "atmel,sama5d3-ddramc", .data = at91_ddr_standby }, + { .compatible = "atmel,at91rm9200-sdramc", .data = &ramc_infos[0] }, + { .compatible = "atmel,at91sam9260-sdramc", .data = &ramc_infos[1] }, + { .compatible = "atmel,at91sam9g45-ddramc", .data = &ramc_infos[2] }, + { .compatible = "atmel,sama5d3-ddramc", .data = &ramc_infos[2] }, { /*sentinel*/ } }; @@ -327,14 +338,17 @@ static __init void at91_dt_ramc(void) const struct of_device_id *of_id; int idx = 0; const void *standby = NULL; + const struct ramc_info *ramc; for_each_matching_node_and_match(np, ramc_ids, &of_id) { pm_data.ramc[idx] = of_iomap(np, 0); if (!pm_data.ramc[idx]) panic(pr_fmt("unable to map ramc[%d] cpu registers\n"), idx); + ramc = of_id->data; if (!standby) - standby = of_id->data; + standby = ramc->standby; + pm_data.memctrl = ramc->memctrl; idx++; } @@ -457,7 +471,6 @@ void __init at91rm9200_pm_init(void) at91_ramc_write(0, AT91_MC_SDRAMC_LPR, 0); pm_data.uhp_udp_mask = AT91RM9200_PMC_UHP | AT91RM9200_PMC_UDP; - pm_data.memctrl = AT91_MEMCTRL_MC; at91_pm_init(at91rm9200_idle); } @@ -465,7 +478,6 @@ void __init at91rm9200_pm_init(void) void __init at91sam9260_pm_init(void) { at91_dt_ramc(); - pm_data.memctrl = AT91_MEMCTRL_SDRAMC; pm_data.uhp_udp_mask = AT91SAM926x_PMC_UHP | AT91SAM926x_PMC_UDP; at91_pm_init(at91sam9_idle); } @@ -474,7 +486,6 @@ void __init at91sam9g45_pm_init(void) { at91_dt_ramc(); pm_data.uhp_udp_mask = AT91SAM926x_PMC_UHP; - pm_data.memctrl = AT91_MEMCTRL_DDRSDR; at91_pm_init(at91sam9_idle); } @@ -482,7 +493,6 @@ void __init at91sam9x5_pm_init(void) { at91_dt_ramc(); pm_data.uhp_udp_mask = AT91SAM926x_PMC_UHP | AT91SAM926x_PMC_UDP; - pm_data.memctrl = AT91_MEMCTRL_DDRSDR; at91_pm_init(at91sam9_idle); } @@ -490,6 +500,5 @@ void __init sama5_pm_init(void) { at91_dt_ramc(); pm_data.uhp_udp_mask = AT91SAM926x_PMC_UHP | AT91SAM926x_PMC_UDP; - pm_data.memctrl = AT91_MEMCTRL_DDRSDR; at91_pm_init(NULL); }