From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: ARC-Seal: i=1; a=rsa-sha256; t=1516758466; cv=none; d=google.com; s=arc-20160816; b=PX2x7gxKiAdTfXnEancK45/42KfXqPm/s4g0MjCtIQCTZB5LFqkXX8J+gz6B+6/PP7 Wf8lHq+ORLysQMBBgli+QmPnnbJ0bKhi87354efwaShsDYL3QXd6pdVp3kusVkjbXjTc iG6yRWDtEbDhwpssumMI6v79a05Rfx1iSldcXLoVh4+Z1kULtVNQzFae2FB6Ihvd68U3 XGChiNosOekPnjFiErys7lGl+5689SqZwjkO4soFrzNqztRdgNf0tXNMnG/ECDgycna2 arufkKMEbZ5vPfAYngQCRm2M5w49mIjGowqzlRdelvH/cBo886UMlgo9nMoRSKKxduDe cOdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=1WjXs0HilWNKqnpeXmwKeMtrsJsAYpOPG4zfrCrrmTs=; b=G+Xf3uhGJSUSQIxt/2mcUPMFA/bnNrVIumvigK1NMs7FVe1N11oGZ/7gc3Me0jwrn+ jQLqDuGJ+6D4BU6pwhpvzIeTv0IKNmCjLyre+S1Rb6v1VBG17cfCaPwkOf0gmTgOK0e0 J73+TiR4NJzcvg95iiF4Tu5xzufgxN7kIIBPa6uwbcMu5lhxUPtUqW39SUCy4JFj+jlM wGOXUFpEzuZEAlW7o2rZkIKbckt5piUV7C0hHThITqPhRHEqWufV/gLNw5abESPfYp0B Uba2WmEIxjkEQ5RKBkPoyhZwnVmogTYdFi407qOWn9hjQajfmzw5csTMt9XpJkpdyGnt SvfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=AEnCBveX; spf=pass (google.com: domain of f.fainelli@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=f.fainelli@gmail.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=AEnCBveX; spf=pass (google.com: domain of f.fainelli@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=f.fainelli@gmail.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com X-Google-Smtp-Source: AH8x224XHRKoXoceLsqa5GptjtkpMtJFdJw3YvdzDfd2Ec8SbFxi2J0MlH47/ugBi7EQZpD6sdHy7g== From: Florian Fainelli To: linux-mips@linux-mips.org Cc: Florian Fainelli , Ralf Baechle , Kevin Cernekee , Florian Fainelli , James Hogan , Paul Burton , Matt Redfearn , "Maciej W. Rozycki" , Huacai Chen , Kate Stewart , Greg Kroah-Hartman , Marcin Nowakowski , Andrew Morton , "Eric W. Biederman" , Ingo Molnar , David Howells , Kees Cook , Thomas Meyer , "Bryan O'Donoghue" , Robin Murphy , Michal Hocko , Lucas Stach , Vladimir Murzin , Bart Van Assche , linux-kernel@vger.kernel.org (open list) Subject: [PATCH RFC 5/6] MIPS: BMIPS: Handshake with CFE Date: Tue, 23 Jan 2018 17:47:05 -0800 Message-Id: <1516758426-8127-6-git-send-email-f.fainelli@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516758426-8127-1-git-send-email-f.fainelli@gmail.com> References: <1516758426-8127-1-git-send-email-f.fainelli@gmail.com> X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1590436526133234821?= X-GMAIL-MSGID: =?utf-8?q?1590436526133234821?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: From: Florian Fainelli Handshake with CFE and retrieve the environment variable DRAM0_SIZE, which will tell us, on Broadcom STB chips, the amount of populated RAM that we have on the first memory controller (aka MEMC0). This is necessary in order to know how and if we can make use of eXtended KSEG0/1. Signed-off-by: Florian Fainelli --- arch/mips/bmips/setup.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/arch/mips/bmips/setup.c b/arch/mips/bmips/setup.c index 3b6f687f177c..d1b7b8b82ae1 100644 --- a/arch/mips/bmips/setup.c +++ b/arch/mips/bmips/setup.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -28,12 +29,18 @@ #include #include #include +#include +#include #define RELO_NORMAL_VEC BIT(18) #define REG_BCM6328_OTP ((void __iomem *)CKSEG1ADDR(0x1000062c)) #define BCM6328_TP1_DISABLED BIT(9) +unsigned long __initdata cfe_seal; +unsigned long __initdata cfe_entry; +unsigned long __initdata cfe_handle; + static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000; struct bmips_quirk { @@ -123,9 +130,45 @@ static const struct bmips_quirk bmips_quirk_list[] = { { }, }; +static unsigned long dram0_size_mb; + +extern void bmips_tlb_init(void); + +static char __initdata cfe_buf[COMMAND_LINE_SIZE]; + +static inline int __init parse_ulong(const char *buf, unsigned long *val) +{ + char *endp; + unsigned long tmp; + + tmp = simple_strtoul(buf, &endp, 0); + if (*endp == 0) { + *val = tmp; + return 0; + } + + return -1; +} + +#define FETCH(name, fn, arg) do { \ + if (cfe_getenv(name, cfe_buf, COMMAND_LINE_SIZE) == CFE_OK) { \ + fn(cfe_buf, arg); \ + } \ + } while (0) + +static void __init __maybe_unused cfe_read_configuration(void) +{ + if (cfe_seal != CFE_EPTSEAL) + return; + + FETCH("DRAM0_SIZE", parse_ulong, &dram0_size_mb); +} + void __init prom_init(void) { + cfe_init(cfe_handle, cfe_entry); bmips_cpu_setup(); + cfe_read_configuration(); register_bmips_smp_ops(); } -- 2.7.4