All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 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.