From: "Jernej Škrabec" <jernej.skrabec@siol.net>
To: u-boot@lists.denx.de
Subject: [linux-sunxi] [PATCH 12/17] sunxi: Add support for H616 SoC
Date: Mon, 04 Jan 2021 19:43:27 +0100 [thread overview]
Message-ID: <1973497.VMvraQ1ChX@jernej-laptop> (raw)
In-Reply-To: <d0f338c3-09f5-3563-3c3f-a293979f7ee3@sholland.org>
Dne ponedeljek, 04. januar 2021 ob 03:47:06 CET je Samuel Holland napisal(a):
> On 1/3/21 3:26 AM, Jernej Skrabec wrote:
> > H616 is very similar to H6 so most of the infrastructure can be reused.
> > However, two big differences are that it doesn't have functional SRAM A2
> > which is usually used for TF-A and it doesn't have ARISC co-processor.
> > It also needs bigger SPL size - 48 KiB.
> >
> > Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
> > ---
> >
> > arch/arm/dts/sunxi-u-boot.dtsi | 9 +++++++++
> > arch/arm/include/asm/arch-sunxi/cpu_sun50i_h6.h | 7 +++++++
> > arch/arm/mach-sunxi/Kconfig | 11 ++++++++++-
> > arch/arm/mach-sunxi/cpu_info.c | 2 ++
> > drivers/power/Kconfig | 1 +
> > include/configs/sunxi-common.h | 10 ++++++++++
> > 6 files changed, 39 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/dts/sunxi-u-boot.dtsi
> > b/arch/arm/dts/sunxi-u-boot.dtsi index c77cf7cacf0c..7e8644f390a8 100644
> > --- a/arch/arm/dts/sunxi-u-boot.dtsi
> > +++ b/arch/arm/dts/sunxi-u-boot.dtsi
> > @@ -3,6 +3,9 @@
> >
> > #ifdef CONFIG_MACH_SUN50I_H6
> > #define BL31_ADDR 0x104000
> > #define SCP_ADDR 0x114000
> >
> > +#elif defined(CONFIG_MACH_SUN50I_H616)
> > +#define BL31_ADDR 0x40004000
> > +#define SCP_ADDR 0x028000
>
> There should be no SCP_ADDR if there is no SCP firmware.
Nice catch!
>
> > #else
> > #define BL31_ADDR 0x44000
> > #define SCP_ADDR 0x50000
> >
> > @@ -61,6 +64,7 @@
> >
> > };
> >
> > };
> >
> > +#ifndef CONFIG_MACH_SUN50I_H616
> >
> > scp {
> >
> > description = "SCP
firmware";
> > type = "firmware";
> >
> > @@ -73,6 +77,7 @@
> >
> > missing-msg
= "scp-sunxi";
> >
> > };
> >
> > };
> >
> > +#endif
> >
> > @fdt-SEQ {
> >
> > description = "NAME";
> >
> > @@ -87,7 +92,11 @@
> >
> > @config-SEQ {
> >
> > description = "NAME";
> > firmware = "atf";
> >
> > +#ifdef CONFIG_MACH_SUN50I_H616
> > + loadables = "uboot";
> > +#else
> >
> > loadables = "scp",
"uboot";
> >
> > +#endif
> >
> > fdt = "fdt-SEQ";
> >
> > };
> >
> > };
> >
> > diff --git a/arch/arm/include/asm/arch-sunxi/cpu_sun50i_h6.h
> > b/arch/arm/include/asm/arch-sunxi/cpu_sun50i_h6.h index
> > 6392cb07b472..d9cf8ae04288 100644
> > --- a/arch/arm/include/asm/arch-sunxi/cpu_sun50i_h6.h
> > +++ b/arch/arm/include/asm/arch-sunxi/cpu_sun50i_h6.h
> > @@ -28,13 +28,20 @@
> >
> > #define SUNXI_GIC400_BASE 0x03020000
> > #define SUNXI_IOMMU_BASE 0x030F0000
> >
> > +#ifdef CONFIG_MACH_SUN50I_H6
> >
> > #define SUNXI_DRAM_COM_BASE 0x04002000
> > #define SUNXI_DRAM_CTL0_BASE 0x04003000
> > #define SUNXI_DRAM_PHY0_BASE 0x04005000
> >
> > +#endif
> >
> > #define SUNXI_NFC_BASE 0x04011000
> > #define SUNXI_MMC0_BASE 0x04020000
> > #define SUNXI_MMC1_BASE 0x04021000
> > #define SUNXI_MMC2_BASE 0x04022000
> >
> > +#ifdef CONFIG_MACH_SUN50I_H616
> > +#define SUNXI_DRAM_COM_BASE 0x047FA000
> > +#define SUNXI_DRAM_CTL0_BASE 0x047FB000
> > +#define SUNXI_DRAM_PHY0_BASE 0x04800000
> > +#endif
> >
> > #define SUNXI_UART0_BASE 0x05000000
> > #define SUNXI_UART1_BASE 0x05000400
> >
> > diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
> > index 1a5497989f04..859b30d74ceb 100644
> > --- a/arch/arm/mach-sunxi/Kconfig
> > +++ b/arch/arm/mach-sunxi/Kconfig
> > @@ -190,9 +190,10 @@ config MACH_SUNXI_H3_H5
> >
> > select SUPPORT_SPL
> >
> > # TODO: try out A80's 8GiB DRAM space
> >
> > +# TODO: H616 supports 4 GiB DRAM space
> >
> > config SUNXI_DRAM_MAX_SIZE
> >
> > hex
> >
> > - default 0xC0000000 if MACH_SUN50I || MACH_SUN50I_H5 ||
MACH_SUN50I_H6
> > + default 0xC0000000 if MACH_SUN50I || MACH_SUN50I_H5 ||
MACH_SUN50I_H6 ||
> > MACH_SUN50I_H616>
> > default 0x80000000
> >
> > choice
> >
> > @@ -354,6 +355,12 @@ config MACH_SUN50I_H6
> >
> > select PHY_SUN4I_USB
> > select DRAM_SUN50I_H6
> >
> > +config MACH_SUN50I_H616
> > + bool "sun50i (Allwinner H616)"
> > + select ARM64
> > + select DRAM_SUN50I_H616
> > + select SUN50I_GEN_H6
> > +
> >
> > endchoice
> >
> > # The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 ||
> > A33"
> >
> > @@ -589,6 +596,7 @@ config SYS_CLK_FREQ
> >
> > default 816000000 if MACH_SUN50I || MACH_SUN50I_H5
> > default 1008000000 if MACH_SUN8I
> > default 1008000000 if MACH_SUN9I
> >
> > + default 1008000000 if MACH_SUN50I_H616
> >
> > config SYS_CONFIG_NAME
> >
> > default "sun4i" if MACH_SUN4I
> >
> > @@ -599,6 +607,7 @@ config SYS_CONFIG_NAME
> >
> > default "sun9i" if MACH_SUN9I
> > default "sun50i" if MACH_SUN50I
> > default "sun50i" if MACH_SUN50I_H6
> >
> > + default "sun50i" if MACH_SUN50I_H616
> >
> > config SYS_BOARD
> >
> > default "sunxi"
> >
> > diff --git a/arch/arm/mach-sunxi/cpu_info.c
> > b/arch/arm/mach-sunxi/cpu_info.c index 875e5a1a8a8e..ba33ef24300c 100644
> > --- a/arch/arm/mach-sunxi/cpu_info.c
> > +++ b/arch/arm/mach-sunxi/cpu_info.c
> > @@ -99,6 +99,8 @@ int print_cpuinfo(void)
> >
> > puts("CPU: Allwinner H5 (SUN50I)\n");
> >
> > #elif defined CONFIG_MACH_SUN50I_H6
> >
> > puts("CPU: Allwinner H6 (SUN50I)\n");
> >
> > +#elif defined CONFIG_MACH_SUN50I_H616
> > + puts("CPU: Allwinner H616 (SUN50I)\n");
> >
> > #else
> > #warning Please update cpu_info.c with correct CPU information
> >
> > puts("CPU: SUNXI Family\n");
> >
> > diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
> > index d17cf2d9112a..c5fbf1f832a9 100644
> > --- a/drivers/power/Kconfig
> > +++ b/drivers/power/Kconfig
> > @@ -13,6 +13,7 @@ choice
> >
> > depends on ARCH_SUNXI
> > default AXP209_POWER if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
> > default AXP221_POWER if MACH_SUN6I || MACH_SUN8I_A23 ||
MACH_SUN8I_A33
> > || MACH_SUN8I_R40>
> > + default AXP305_POWER if MACH_SUN50I_H616
> >
> > default AXP818_POWER if MACH_SUN8I_A83T
> > default SUNXI_NO_PMIC if MACH_SUNXI_H3_H5 || MACH_SUN50I ||
> > MACH_SUN8I_V3S
> >
> > diff --git a/include/configs/sunxi-common.h
> > b/include/configs/sunxi-common.h index 203cb10fbabc..6e8f547214d6 100644
> > --- a/include/configs/sunxi-common.h
> > +++ b/include/configs/sunxi-common.h
> > @@ -178,9 +178,14 @@
> >
> > #define LOW_LEVEL_SRAM_STACK 0x00018000
> > #endif /* !CONFIG_ARM64 */
> > #elif CONFIG_SUNXI_SRAM_ADDRESS == 0x20000
> >
> > +#ifdef CONFIG_MACH_SUN50I_H616
> > +#define CONFIG_SPL_MAX_SIZE 0xbfa0 /* 48 KiB
*/
> > +#define LOW_LEVEL_SRAM_STACK 0x58000
> > +#else
> >
> > #define CONFIG_SPL_MAX_SIZE 0x7fa0 /* 32 KiB
*/
> > /* end of SRAM A2 on H6 for now */
> > #define LOW_LEVEL_SRAM_STACK 0x00118000
> >
> > +#endif
> >
> > #else
> > #define CONFIG_SPL_MAX_SIZE 0x5fa0 /* 24KB on
sun4i/sun7i */
> > #define LOW_LEVEL_SRAM_STACK 0x00008000 /* End of sram */
> >
> > @@ -188,7 +193,12 @@
> >
> > #define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACK
> >
> > +/* H616 supports 48 KiB SPL */
> > +#ifdef CONFIG_MACH_SUN50I_H616
> > +#define CONFIG_SPL_PAD_TO 49152 /* decimal
for 'dd' */
>
> H616 supports much larger SPLs than 48 KiB, and CONFIG_SPL_PAD_TO
> enforces both a minimum and maximum size. So please leave
> CONFIG_SPL_PAD_TO undefined on the new platform (or for all
> SUN50I_GEN_H6, where the SPL size restriction was removed).
I thought padding is required for proper build. I'll test that.
Best regards,
Jernej
>
> > +#else
> >
> > #define CONFIG_SPL_PAD_TO 32768 /* decimal
for 'dd' */
> >
> > +#endif
> >
> > /* I2C */
>
> Cheers,
> Samuel
next prev parent reply other threads:[~2021-01-04 18:43 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-03 9:26 [PATCH 00/17] sunxi: Introduce H616 support Jernej Skrabec
2021-01-03 9:26 ` [PATCH 01/17] sunxi: Add support for AXP305 PMIC Jernej Skrabec
2021-01-05 22:36 ` Jaehoon Chung
2021-01-06 10:11 ` André Przywara
2021-01-06 23:33 ` Jaehoon Chung
2021-01-07 9:49 ` André Przywara
2021-01-11 0:02 ` André Przywara
2021-01-11 1:32 ` Jaehoon Chung
2021-01-11 19:48 ` Jernej Škrabec
2021-01-03 9:26 ` [PATCH 02/17] sunxi: Introduce common symbol for H6 like SoCs Jernej Skrabec
2021-01-03 23:43 ` [linux-sunxi] " Samuel Holland
2021-01-04 10:35 ` André Przywara
2021-01-04 18:28 ` Jernej Škrabec
2021-01-11 0:13 ` André Przywara
2021-01-03 9:26 ` [PATCH 03/17] mmc: sunxi: Replace H6 ifdefs with H6 gen macro Jernej Skrabec
2021-01-11 0:13 ` André Przywara
2021-01-03 9:26 ` [PATCH 04/17] i2c: mvtwsi: sunxi: update macro Jernej Skrabec
2021-01-03 23:55 ` [linux-sunxi] " Samuel Holland
2021-01-04 5:57 ` Heiko Schocher
2021-01-03 9:26 ` [PATCH 05/17] sunxi: prcm: Add memory map for H6 like SoCs Jernej Skrabec
2021-01-04 0:03 ` [linux-sunxi] " Samuel Holland
2021-01-11 16:13 ` Jernej Škrabec
2021-01-03 9:26 ` [PATCH 06/17] sunxi: Add support for I2C on " Jernej Skrabec
2021-01-04 0:04 ` [linux-sunxi] " Samuel Holland
2021-01-03 9:26 ` [PATCH 07/17] sunxi: support loading with SPL > 32KB Jernej Skrabec
2021-01-04 2:02 ` [linux-sunxi] " Samuel Holland
2021-01-11 18:17 ` Jernej Škrabec
2021-01-03 9:26 ` [PATCH 08/17] sunxi: introduce support for H616 clocks Jernej Skrabec
2021-01-04 2:28 ` [linux-sunxi] " Samuel Holland
2021-01-03 9:26 ` [PATCH 09/17] sunxi: add support for H616 uart0 Jernej Skrabec
2021-01-04 2:30 ` [linux-sunxi] " Samuel Holland
2021-01-03 9:26 ` [PATCH 10/17] sunxi: add support for R_I2C on H616 Jernej Skrabec
2021-01-04 2:33 ` [linux-sunxi] " Samuel Holland
2021-01-04 18:36 ` Jernej Škrabec
2021-01-03 9:26 ` [PATCH 11/17] sunxi: Add H616 DRAM support Jernej Skrabec
2021-01-04 2:39 ` [linux-sunxi] " Samuel Holland
2021-01-04 18:39 ` Jernej Škrabec
2021-01-05 3:14 ` Samuel Holland
2021-01-03 9:26 ` [PATCH 12/17] sunxi: Add support for H616 SoC Jernej Skrabec
2021-01-04 2:47 ` [linux-sunxi] " Samuel Holland
2021-01-04 18:43 ` Jernej Škrabec [this message]
2021-01-03 9:26 ` [PATCH 13/17] net: sun8i-emac: Determine pinmux based on SoC, not EMAC type Jernej Skrabec
2021-01-03 9:26 ` [PATCH 14/17] arm: sunxi: add initial H616 DTSI and headers Jernej Skrabec
2021-01-03 9:26 ` [PATCH 15/17] sunxi: gpio: introduce compatible for H616 Jernej Skrabec
2021-01-11 0:36 ` André Przywara
2021-01-03 9:26 ` [PATCH 16/17] clk: sunxi: Add support for H616 clocks Jernej Skrabec
2021-01-11 0:44 ` André Przywara
2021-01-03 9:26 ` [PATCH 17/17] sunxi: Add support for OrangePi Zero2 Jernej Skrabec
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=1973497.VMvraQ1ChX@jernej-laptop \
--to=jernej.skrabec@siol.net \
--cc=u-boot@lists.denx.de \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox