From: Ulrich Hecht <ulrich.hecht+renesas@gmail.com> To: linux-renesas-soc@vger.kernel.org, u-boot@lists.denx.de Cc: geert@linux-m68k.org, marek.vasut@gmail.com, yoshihiro.shimoda.uh@renesas.com, magnus.damm@gmail.com, takuya.sakata.wz@bp.renesas.com, Ulrich Hecht <ulrich.hecht+renesas@gmail.com> Subject: [RFC] ARM: rmobile: create DT memory nodes for R8A7795 3.0 and newer Date: Fri, 15 Jun 2018 11:40:04 +0200 [thread overview] Message-ID: <1529055605-29942-1-git-send-email-ulrich.hecht+renesas@gmail.com> (raw) Uses an SMC call to the ATF to determine the memory configuration, then creates appropriate DT memory nodes. Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com> --- This is an attempt to avoid having to have a ton of different device trees for Renesas R8A7795 H3 SoCs from revision 3.0, which come in a number of different memory configurations. The specific configuration is statically baked into the ARM Trusted Firmware binary, so this solution adds an SMC "SiP Service Call" to the ATF returning the memory configuration, and then has u-boot build appropriate memory nodes. This has not been tested in the flesh successfully, as I only have a revision 1.0 board. I'd like to get some feedback on whether this approach is sound, though. Thanks. Depends on "[RFC ATF] Add SMCCC_RENESAS_MEMCONF SMC call". CU Uli board/renesas/salvator-x/salvator-x.c | 51 +++++++++++++++++++++++++++++++++++ configs/r8a7795_salvator-x_defconfig | 2 ++ 2 files changed, 53 insertions(+) diff --git a/board/renesas/salvator-x/salvator-x.c b/board/renesas/salvator-x/salvator-x.c index 651877c..307cb64 100644 --- a/board/renesas/salvator-x/salvator-x.c +++ b/board/renesas/salvator-x/salvator-x.c @@ -24,6 +24,7 @@ #include <asm/arch/sh_sdhi.h> #include <i2c.h> #include <mmc.h> +#include <linux/arm-smccc.h> DECLARE_GLOBAL_DATA_PTR; @@ -136,3 +137,53 @@ void reset_cpu(ulong addr) writel(RST_CODE, RST_CA57RESCNT); #endif } + +#define ARM_SMCCC_RENESAS_MEMCONF 0x82000000UL +int ft_board_setup(void *blob, bd_t *bd) +{ + if (rmobile_get_cpu_type() == RMOBILE_CPU_TYPE_R8A7795 && + rmobile_get_cpu_rev_integer() >= 3) { + u64 base[CONFIG_NR_DRAM_BANKS]; + u64 size[CONFIG_NR_DRAM_BANKS]; + struct arm_smccc_res res; + + arm_smccc_smc(ARM_SMCCC_RENESAS_MEMCONF, + 0, 0, 0, 0, 0, 0, 0, &res); + + switch (res.a0) { + case 1: + base[0] = 0x048000000ULL; + size[0] = 0x038000000ULL; + base[1] = 0x500000000ULL; + size[1] = 0x040000000ULL; + base[2] = 0x600000000ULL; + size[2] = 0x040000000ULL; + base[3] = 0x700000000ULL; + size[3] = 0x040000000ULL; + fdt_fixup_memory_banks(blob, base, size, 4); + break; + case 2: + base[0] = 0x048000000ULL; + size[0] = 0x078000000ULL; + base[1] = 0x500000000ULL; + size[1] = 0x080000000ULL; + fdt_fixup_memory_banks(blob, base, size, 2); + break; + case 3: + base[0] = 0x048000000ULL; + size[0] = 0x078000000ULL; + base[1] = 0x500000000ULL; + size[1] = 0x080000000ULL; + base[2] = 0x600000000ULL; + size[2] = 0x080000000ULL; + base[3] = 0x700000000ULL; + size[3] = 0x080000000ULL; + fdt_fixup_memory_banks(blob, base, size, 4); + break; + default: + break; + } + } + + return 0; +} diff --git a/configs/r8a7795_salvator-x_defconfig b/configs/r8a7795_salvator-x_defconfig index fdfa41c..cd2bb59 100644 --- a/configs/r8a7795_salvator-x_defconfig +++ b/configs/r8a7795_salvator-x_defconfig @@ -61,3 +61,5 @@ CONFIG_USB_EHCI_GENERIC=y CONFIG_USB_STORAGE=y CONFIG_OF_LIBFDT_OVERLAY=y CONFIG_SMBIOS_MANUFACTURER="" +CONFIG_OF_BOARD_SETUP=y +CONFIG_ARM_SMCCC=y -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Ulrich Hecht <ulrich.hecht+renesas@gmail.com> To: u-boot@lists.denx.de Subject: [U-Boot] [RFC] ARM: rmobile: create DT memory nodes for R8A7795 3.0 and newer Date: Fri, 15 Jun 2018 11:40:04 +0200 [thread overview] Message-ID: <1529055605-29942-1-git-send-email-ulrich.hecht+renesas@gmail.com> (raw) Uses an SMC call to the ATF to determine the memory configuration, then creates appropriate DT memory nodes. Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com> --- This is an attempt to avoid having to have a ton of different device trees for Renesas R8A7795 H3 SoCs from revision 3.0, which come in a number of different memory configurations. The specific configuration is statically baked into the ARM Trusted Firmware binary, so this solution adds an SMC "SiP Service Call" to the ATF returning the memory configuration, and then has u-boot build appropriate memory nodes. This has not been tested in the flesh successfully, as I only have a revision 1.0 board. I'd like to get some feedback on whether this approach is sound, though. Thanks. Depends on "[RFC ATF] Add SMCCC_RENESAS_MEMCONF SMC call". CU Uli board/renesas/salvator-x/salvator-x.c | 51 +++++++++++++++++++++++++++++++++++ configs/r8a7795_salvator-x_defconfig | 2 ++ 2 files changed, 53 insertions(+) diff --git a/board/renesas/salvator-x/salvator-x.c b/board/renesas/salvator-x/salvator-x.c index 651877c..307cb64 100644 --- a/board/renesas/salvator-x/salvator-x.c +++ b/board/renesas/salvator-x/salvator-x.c @@ -24,6 +24,7 @@ #include <asm/arch/sh_sdhi.h> #include <i2c.h> #include <mmc.h> +#include <linux/arm-smccc.h> DECLARE_GLOBAL_DATA_PTR; @@ -136,3 +137,53 @@ void reset_cpu(ulong addr) writel(RST_CODE, RST_CA57RESCNT); #endif } + +#define ARM_SMCCC_RENESAS_MEMCONF 0x82000000UL +int ft_board_setup(void *blob, bd_t *bd) +{ + if (rmobile_get_cpu_type() == RMOBILE_CPU_TYPE_R8A7795 && + rmobile_get_cpu_rev_integer() >= 3) { + u64 base[CONFIG_NR_DRAM_BANKS]; + u64 size[CONFIG_NR_DRAM_BANKS]; + struct arm_smccc_res res; + + arm_smccc_smc(ARM_SMCCC_RENESAS_MEMCONF, + 0, 0, 0, 0, 0, 0, 0, &res); + + switch (res.a0) { + case 1: + base[0] = 0x048000000ULL; + size[0] = 0x038000000ULL; + base[1] = 0x500000000ULL; + size[1] = 0x040000000ULL; + base[2] = 0x600000000ULL; + size[2] = 0x040000000ULL; + base[3] = 0x700000000ULL; + size[3] = 0x040000000ULL; + fdt_fixup_memory_banks(blob, base, size, 4); + break; + case 2: + base[0] = 0x048000000ULL; + size[0] = 0x078000000ULL; + base[1] = 0x500000000ULL; + size[1] = 0x080000000ULL; + fdt_fixup_memory_banks(blob, base, size, 2); + break; + case 3: + base[0] = 0x048000000ULL; + size[0] = 0x078000000ULL; + base[1] = 0x500000000ULL; + size[1] = 0x080000000ULL; + base[2] = 0x600000000ULL; + size[2] = 0x080000000ULL; + base[3] = 0x700000000ULL; + size[3] = 0x080000000ULL; + fdt_fixup_memory_banks(blob, base, size, 4); + break; + default: + break; + } + } + + return 0; +} diff --git a/configs/r8a7795_salvator-x_defconfig b/configs/r8a7795_salvator-x_defconfig index fdfa41c..cd2bb59 100644 --- a/configs/r8a7795_salvator-x_defconfig +++ b/configs/r8a7795_salvator-x_defconfig @@ -61,3 +61,5 @@ CONFIG_USB_EHCI_GENERIC=y CONFIG_USB_STORAGE=y CONFIG_OF_LIBFDT_OVERLAY=y CONFIG_SMBIOS_MANUFACTURER="" +CONFIG_OF_BOARD_SETUP=y +CONFIG_ARM_SMCCC=y -- 2.7.4
next reply other threads:[~2018-06-15 9:40 UTC|newest] Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-06-15 9:40 Ulrich Hecht [this message] 2018-06-15 9:40 ` [U-Boot] [RFC] ARM: rmobile: create DT memory nodes for R8A7795 3.0 and newer Ulrich Hecht 2018-06-15 9:40 ` [RFC ATF] Add SMCCC_RENESAS_MEMCONF SMC call Ulrich Hecht 2018-06-15 9:40 ` [U-Boot] " Ulrich Hecht 2018-06-15 10:09 ` [U-Boot] [RFC] ARM: rmobile: create DT memory nodes for R8A7795 3.0 and newer Marek Vasut 2018-06-15 10:09 ` Marek Vasut 2018-06-15 10:37 ` Ulrich Hecht 2018-06-15 10:37 ` [U-Boot] " Ulrich Hecht 2018-06-15 11:43 ` Marek Vasut 2018-06-15 11:43 ` Marek Vasut 2018-06-15 12:00 ` Marek Vasut 2018-06-15 12:00 ` Marek Vasut 2018-06-15 23:21 ` Laurent Pinchart 2018-06-15 23:21 ` [U-Boot] " Laurent Pinchart 2018-06-15 23:42 ` Marek Vasut 2018-06-15 23:42 ` [U-Boot] " Marek Vasut 2018-06-16 15:44 ` Laurent Pinchart 2018-06-16 15:44 ` [U-Boot] " Laurent Pinchart 2018-06-17 0:08 ` Marek Vasut 2018-06-17 0:08 ` [U-Boot] " Marek Vasut 2018-06-19 2:15 ` Laurent Pinchart 2018-06-19 2:15 ` Laurent Pinchart 2018-06-19 5:43 ` Magnus Damm 2018-06-19 5:43 ` [U-Boot] " Magnus Damm 2018-06-19 5:56 ` Laurent Pinchart 2018-06-19 5:56 ` Laurent Pinchart 2018-06-19 6:44 ` Magnus Damm 2018-06-19 6:58 ` Geert Uytterhoeven 2018-06-19 6:58 ` [U-Boot] " Geert Uytterhoeven 2018-06-19 7:11 ` Laurent Pinchart 2018-06-19 7:11 ` Laurent Pinchart 2018-06-19 7:17 ` Geert Uytterhoeven 2018-06-19 7:17 ` [U-Boot] " Geert Uytterhoeven 2018-06-20 4:55 ` Marek Vasut 2018-06-20 4:55 ` [U-Boot] " Marek Vasut 2018-06-28 17:24 ` Eugeniu Rosca 2018-06-28 17:24 ` Eugeniu Rosca
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1529055605-29942-1-git-send-email-ulrich.hecht+renesas@gmail.com \ --to=ulrich.hecht+renesas@gmail.com \ --cc=geert@linux-m68k.org \ --cc=linux-renesas-soc@vger.kernel.org \ --cc=magnus.damm@gmail.com \ --cc=marek.vasut@gmail.com \ --cc=takuya.sakata.wz@bp.renesas.com \ --cc=u-boot@lists.denx.de \ --cc=yoshihiro.shimoda.uh@renesas.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.