public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Andre Przywara <andre.przywara@arm.com>
To: Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: jagan@amarulasolutions.com, u-boot@lists.denx.de,
	linux-sunxi@lists.linux.dev
Subject: Re: [PATCH v2 04/10] sunxi: Convert H616 DRAM options to single setting
Date: Tue, 11 Apr 2023 11:13:04 +0100	[thread overview]
Message-ID: <20230411111304.4ba7ba2d@donnerap.cambridge.arm.com> (raw)
In-Reply-To: <20230410082119.24616-5-jernej.skrabec@gmail.com>

On Mon, 10 Apr 2023 10:21:13 +0200
Jernej Skrabec <jernej.skrabec@gmail.com> wrote:

> Vendor DRAM settings use TPR10 parameter to enable various features.
> There are many mores features that just those that are currently
> mentioned. Since new will be added later and most are not known, let's
> reuse value from vendor DRAM driver as-is. This will also help adding
> support for new boards.
> 
> Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>

Thanks, based on my previous review, and the changes to the bit names:

Reviewed-by: Andre Przywara <andre.przywara@arm.com>

Just one note here, mostly for the reference when people stumble upon
this patch: this enables the CA bit delay compensation code for the X96,
which was not enabled before, because DRAM_SUN50I_H616_UNKNOWN_FEATURE
was not set. I don't know if the fixed values written by this
code here were meant for the OrangePi Zero2 (which though never
runs this code), but for the X96 Mate the values written by this patch
will be changed in a later patch.

Cheers,
Andre

> ---
>  .../include/asm/arch-sunxi/dram_sun50i_h616.h |   9 +
>  arch/arm/mach-sunxi/Kconfig                   |  38 +---
>  arch/arm/mach-sunxi/dram_sun50i_h616.c        | 197 +++++++++---------
>  configs/orangepi_zero2_defconfig              |   5 +-
>  configs/x96_mate_defconfig                    |   1 +
>  5 files changed, 117 insertions(+), 133 deletions(-)
> 
> diff --git a/arch/arm/include/asm/arch-sunxi/dram_sun50i_h616.h b/arch/arm/include/asm/arch-sunxi/dram_sun50i_h616.h
> index c9e1f84bfcdd..dbdc6b694ec1 100644
> --- a/arch/arm/include/asm/arch-sunxi/dram_sun50i_h616.h
> +++ b/arch/arm/include/asm/arch-sunxi/dram_sun50i_h616.h
> @@ -137,6 +137,14 @@ check_member(sunxi_mctl_ctl_reg, unk_0x4240, 0x4240);
>  #define MSTR_ACTIVE_RANKS(x)	(((x == 2) ? 3 : 1) << 24)
>  #define MSTR_BURST_LENGTH(x)	(((x) >> 1) << 16)
>  
> +#define TPR10_CA_BIT_DELAY	BIT(16)
> +#define TPR10_DX_BIT_DELAY0	BIT(17)
> +#define TPR10_DX_BIT_DELAY1	BIT(18)
> +#define TPR10_WRITE_LEVELING	BIT(20)
> +#define TPR10_READ_CALIBRATION	BIT(21)
> +#define TPR10_READ_TRAINING	BIT(22)
> +#define TPR10_WRITE_TRAINING	BIT(23)
> +
>  struct dram_para {
>  	u32 clk;
>  	enum sunxi_dram_type type;
> @@ -147,6 +155,7 @@ struct dram_para {
>  	u32 dx_odt;
>  	u32 dx_dri;
>  	u32 ca_dri;
> +	u32 tpr10;
>  };
>  
>  
> diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
> index 14fb9a95905a..1b47a49f938c 100644
> --- a/arch/arm/mach-sunxi/Kconfig
> +++ b/arch/arm/mach-sunxi/Kconfig
> @@ -52,38 +52,6 @@ config DRAM_SUN50I_H616
>  	  like H616.
>  
>  if DRAM_SUN50I_H616
> -config DRAM_SUN50I_H616_WRITE_LEVELING
> -	bool "H616 DRAM write leveling"
> -	---help---
> -	  Select this when DRAM on your H616 board needs write leveling.
> -
> -config DRAM_SUN50I_H616_READ_CALIBRATION
> -	bool "H616 DRAM read calibration"
> -	---help---
> -	  Select this when DRAM on your H616 board needs read calibration.
> -
> -config DRAM_SUN50I_H616_READ_TRAINING
> -	bool "H616 DRAM read training"
> -	---help---
> -	  Select this when DRAM on your H616 board needs read training.
> -
> -config DRAM_SUN50I_H616_WRITE_TRAINING
> -	bool "H616 DRAM write training"
> -	---help---
> -	  Select this when DRAM on your H616 board needs write training.
> -
> -config DRAM_SUN50I_H616_BIT_DELAY_COMPENSATION
> -	bool "H616 DRAM bit delay compensation"
> -	---help---
> -	  Select this when DRAM on your H616 board needs bit delay
> -	  compensation.
> -
> -config DRAM_SUN50I_H616_UNKNOWN_FEATURE
> -	bool "H616 DRAM unknown feature"
> -	---help---
> -	  Select this when DRAM on your H616 board needs this unknown
> -	  feature.
> -
>  config DRAM_SUN50I_H616_DX_ODT
>  	hex "H616 DRAM DX ODT parameter"
>  	help
> @@ -98,6 +66,12 @@ config DRAM_SUN50I_H616_CA_DRI
>  	hex "H616 DRAM CA DRI parameter"
>  	help
>  	  CA DRI value from vendor DRAM settings.
> +
> +config DRAM_SUN50I_H616_TPR10
> +	hex "H616 DRAM TPR10 parameter"
> +	help
> +	  TPR10 value from vendor DRAM settings. It tells which features
> +	  should be configured, like write leveling, read calibration, etc.
>  endif
>  
>  config SUN6I_PRCM
> diff --git a/arch/arm/mach-sunxi/dram_sun50i_h616.c b/arch/arm/mach-sunxi/dram_sun50i_h616.c
> index 06a07dfbf9cc..630c7c3be882 100644
> --- a/arch/arm/mach-sunxi/dram_sun50i_h616.c
> +++ b/arch/arm/mach-sunxi/dram_sun50i_h616.c
> @@ -577,109 +577,112 @@ static bool mctl_phy_bit_delay_compensation(struct dram_para *para)
>  	u32 *ptr;
>  	int i;
>  
> -	clrbits_le32(SUNXI_DRAM_PHY0_BASE + 0x60, 1);
> -	setbits_le32(SUNXI_DRAM_PHY0_BASE + 8, 8);
> -	clrbits_le32(SUNXI_DRAM_PHY0_BASE + 0x190, 0x10);
> +	if (para->tpr10 & TPR10_DX_BIT_DELAY1) {
> +		clrbits_le32(SUNXI_DRAM_PHY0_BASE + 0x60, 1);
> +		setbits_le32(SUNXI_DRAM_PHY0_BASE + 8, 8);
> +		clrbits_le32(SUNXI_DRAM_PHY0_BASE + 0x190, 0x10);
>  
> -	ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x484);
> -	for (i = 0; i < 9; i++) {
> -		writel_relaxed(0x16, ptr);
> -		writel_relaxed(0x16, ptr + 0x30);
> -		ptr += 2;
> -	}
> -	writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x4d0);
> -	writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x590);
> -	writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x4cc);
> -	writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x58c);
> +		ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x484);
> +		for (i = 0; i < 9; i++) {
> +			writel_relaxed(0x16, ptr);
> +			writel_relaxed(0x16, ptr + 0x30);
> +			ptr += 2;
> +		}
> +		writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x4d0);
> +		writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x590);
> +		writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x4cc);
> +		writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x58c);
>  
> -	ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x4d8);
> -	for (i = 0; i < 9; i++) {
> -		writel_relaxed(0x1a, ptr);
> -		writel_relaxed(0x1a, ptr + 0x30);
> -		ptr += 2;
> -	}
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x524);
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x5e4);
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x520);
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x5e0);
> +		ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x4d8);
> +		for (i = 0; i < 9; i++) {
> +			writel_relaxed(0x1a, ptr);
> +			writel_relaxed(0x1a, ptr + 0x30);
> +			ptr += 2;
> +		}
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x524);
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x5e4);
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x520);
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x5e0);
>  
> -	ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x604);
> -	for (i = 0; i < 9; i++) {
> -		writel_relaxed(0x1a, ptr);
> -		writel_relaxed(0x1a, ptr + 0x30);
> -		ptr += 2;
> -	}
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x650);
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x710);
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x64c);
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x70c);
> +		ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x604);
> +		for (i = 0; i < 9; i++) {
> +			writel_relaxed(0x1a, ptr);
> +			writel_relaxed(0x1a, ptr + 0x30);
> +			ptr += 2;
> +		}
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x650);
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x710);
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x64c);
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x70c);
>  
> -	ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x658);
> -	for (i = 0; i < 9; i++) {
> -		writel_relaxed(0x1a, ptr);
> -		writel_relaxed(0x1a, ptr + 0x30);
> -		ptr += 2;
> -	}
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x6a4);
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x764);
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x6a0);
> -	writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x760);
> +		ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x658);
> +		for (i = 0; i < 9; i++) {
> +			writel_relaxed(0x1a, ptr);
> +			writel_relaxed(0x1a, ptr + 0x30);
> +			ptr += 2;
> +		}
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x6a4);
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x764);
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x6a0);
> +		writel_relaxed(0x1e, SUNXI_DRAM_PHY0_BASE + 0x760);
>  
> -	dmb();
> +		dmb();
>  
> -	setbits_le32(SUNXI_DRAM_PHY0_BASE + 0x60, 1);
> +		setbits_le32(SUNXI_DRAM_PHY0_BASE + 0x60, 1);
> +	}
>  
> -	/* second part */
> -	clrbits_le32(SUNXI_DRAM_PHY0_BASE + 0x54, 0x80);
> -	clrbits_le32(SUNXI_DRAM_PHY0_BASE + 0x190, 4);
> +	if (para->tpr10 & TPR10_DX_BIT_DELAY0) {
> +		clrbits_le32(SUNXI_DRAM_PHY0_BASE + 0x54, 0x80);
> +		clrbits_le32(SUNXI_DRAM_PHY0_BASE + 0x190, 4);
>  
> -	ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x480);
> -	for (i = 0; i < 9; i++) {
> -		writel_relaxed(0x10, ptr);
> -		writel_relaxed(0x10, ptr + 0x30);
> -		ptr += 2;
> -	}
> -	writel_relaxed(0x18, SUNXI_DRAM_PHY0_BASE + 0x528);
> -	writel_relaxed(0x18, SUNXI_DRAM_PHY0_BASE + 0x5e8);
> -	writel_relaxed(0x18, SUNXI_DRAM_PHY0_BASE + 0x4c8);
> -	writel_relaxed(0x18, SUNXI_DRAM_PHY0_BASE + 0x588);
> +		ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x480);
> +		for (i = 0; i < 9; i++) {
> +			writel_relaxed(0x10, ptr);
> +			writel_relaxed(0x10, ptr + 0x30);
> +			ptr += 2;
> +		}
> +		writel_relaxed(0x18, SUNXI_DRAM_PHY0_BASE + 0x528);
> +		writel_relaxed(0x18, SUNXI_DRAM_PHY0_BASE + 0x5e8);
> +		writel_relaxed(0x18, SUNXI_DRAM_PHY0_BASE + 0x4c8);
> +		writel_relaxed(0x18, SUNXI_DRAM_PHY0_BASE + 0x588);
>  
> -	ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x4d4);
> -	for (i = 0; i < 9; i++) {
> -		writel_relaxed(0x12, ptr);
> -		writel_relaxed(0x12, ptr + 0x30);
> -		ptr += 2;
> -	}
> -	writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x52c);
> -	writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x5ec);
> -	writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x51c);
> -	writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x5dc);
> +		ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x4d4);
> +		for (i = 0; i < 9; i++) {
> +			writel_relaxed(0x12, ptr);
> +			writel_relaxed(0x12, ptr + 0x30);
> +			ptr += 2;
> +		}
> +		writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x52c);
> +		writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x5ec);
> +		writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x51c);
> +		writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x5dc);
>  
> -	ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x600);
> -	for (i = 0; i < 9; i++) {
> -		writel_relaxed(0x12, ptr);
> -		writel_relaxed(0x12, ptr + 0x30);
> -		ptr += 2;
> -	}
> -	writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x6a8);
> -	writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x768);
> -	writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x648);
> -	writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x708);
> +		ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x600);
> +		for (i = 0; i < 9; i++) {
> +			writel_relaxed(0x12, ptr);
> +			writel_relaxed(0x12, ptr + 0x30);
> +			ptr += 2;
> +		}
> +		writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x6a8);
> +		writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x768);
> +		writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x648);
> +		writel_relaxed(0x1a, SUNXI_DRAM_PHY0_BASE + 0x708);
>  
> -	ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x654);
> -	for (i = 0; i < 9; i++) {
> -		writel_relaxed(0x14, ptr);
> -		writel_relaxed(0x14, ptr + 0x30);
> -		ptr += 2;
> -	}
> -	writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x6ac);
> -	writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x76c);
> -	writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x69c);
> -	writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x75c);
> +		ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x654);
> +		for (i = 0; i < 9; i++) {
> +			writel_relaxed(0x14, ptr);
> +			writel_relaxed(0x14, ptr + 0x30);
> +			ptr += 2;
> +		}
> +		writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x6ac);
> +		writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x76c);
> +		writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x69c);
> +		writel_relaxed(0x1c, SUNXI_DRAM_PHY0_BASE + 0x75c);
>  
> -	dmb();
> +		dmb();
>  
> -	setbits_le32(SUNXI_DRAM_PHY0_BASE + 0x54, 0x80);
> +		setbits_le32(SUNXI_DRAM_PHY0_BASE + 0x54, 0x80);
> +	}
>  
>  	return true;
>  }
> @@ -718,7 +721,7 @@ static bool mctl_phy_init(struct dram_para *para)
>  	for (i = 0; i < ARRAY_SIZE(phy_init); i++)
>  		writel(phy_init[i], &ptr[i]);
>  
> -	if (IS_ENABLED(CONFIG_DRAM_SUN50I_H616_UNKNOWN_FEATURE)) {
> +	if (para->tpr10 & TPR10_CA_BIT_DELAY) {
>  		ptr = (u32 *)(SUNXI_DRAM_PHY0_BASE + 0x780);
>  		for (i = 0; i < 32; i++)
>  			writel(0x16, &ptr[i]);
> @@ -800,7 +803,7 @@ static bool mctl_phy_init(struct dram_para *para)
>  	clrbits_le32(&mctl_ctl->rfshctl3, 1);
>  	writel(1, &mctl_ctl->swctl);
>  
> -	if (IS_ENABLED(CONFIG_DRAM_SUN50I_H616_WRITE_LEVELING)) {
> +	if (para->tpr10 & TPR10_WRITE_LEVELING) {
>  		for (i = 0; i < 5; i++)
>  			if (mctl_phy_write_leveling(para))
>  				break;
> @@ -810,7 +813,7 @@ static bool mctl_phy_init(struct dram_para *para)
>  		}
>  	}
>  
> -	if (IS_ENABLED(CONFIG_DRAM_SUN50I_H616_READ_CALIBRATION)) {
> +	if (para->tpr10 & TPR10_READ_CALIBRATION) {
>  		for (i = 0; i < 5; i++)
>  			if (mctl_phy_read_calibration(para))
>  				break;
> @@ -820,7 +823,7 @@ static bool mctl_phy_init(struct dram_para *para)
>  		}
>  	}
>  
> -	if (IS_ENABLED(CONFIG_DRAM_SUN50I_H616_READ_TRAINING)) {
> +	if (para->tpr10 & TPR10_READ_TRAINING) {
>  		for (i = 0; i < 5; i++)
>  			if (mctl_phy_read_training(para))
>  				break;
> @@ -830,7 +833,7 @@ static bool mctl_phy_init(struct dram_para *para)
>  		}
>  	}
>  
> -	if (IS_ENABLED(CONFIG_DRAM_SUN50I_H616_WRITE_TRAINING)) {
> +	if (para->tpr10 & TPR10_WRITE_TRAINING) {
>  		for (i = 0; i < 5; i++)
>  			if (mctl_phy_write_training(para))
>  				break;
> @@ -840,8 +843,7 @@ static bool mctl_phy_init(struct dram_para *para)
>  		}
>  	}
>  
> -	if (IS_ENABLED(CONFIG_DRAM_SUN50I_H616_BIT_DELAY_COMPENSATION))
> -		mctl_phy_bit_delay_compensation(para);
> +	mctl_phy_bit_delay_compensation(para);
>  
>  	clrbits_le32(SUNXI_DRAM_PHY0_BASE + 0x60, 4);
>  
> @@ -1022,6 +1024,7 @@ unsigned long sunxi_dram_init(void)
>  		.dx_odt = CONFIG_DRAM_SUN50I_H616_DX_ODT,
>  		.dx_dri = CONFIG_DRAM_SUN50I_H616_DX_DRI,
>  		.ca_dri = CONFIG_DRAM_SUN50I_H616_CA_DRI,
> +		.tpr10 = CONFIG_DRAM_SUN50I_H616_TPR10,
>  	};
>  	unsigned long size;
>  
> diff --git a/configs/orangepi_zero2_defconfig b/configs/orangepi_zero2_defconfig
> index d70b15a07705..6cb942f511a1 100644
> --- a/configs/orangepi_zero2_defconfig
> +++ b/configs/orangepi_zero2_defconfig
> @@ -2,13 +2,10 @@ CONFIG_ARM=y
>  CONFIG_ARCH_SUNXI=y
>  CONFIG_DEFAULT_DEVICE_TREE="sun50i-h616-orangepi-zero2"
>  CONFIG_SPL=y
> -CONFIG_DRAM_SUN50I_H616_WRITE_LEVELING=y
> -CONFIG_DRAM_SUN50I_H616_READ_CALIBRATION=y
> -CONFIG_DRAM_SUN50I_H616_READ_TRAINING=y
> -CONFIG_DRAM_SUN50I_H616_WRITE_TRAINING=y
>  CONFIG_DRAM_SUN50I_H616_DX_ODT=0x08080808
>  CONFIG_DRAM_SUN50I_H616_DX_DRI=0x0e0e0e0e
>  CONFIG_DRAM_SUN50I_H616_CA_DRI=0x0e0e
> +CONFIG_DRAM_SUN50I_H616_TPR10=0xf83438
>  CONFIG_MACH_SUN50I_H616=y
>  CONFIG_R_I2C_ENABLE=y
>  CONFIG_SPL_SPI_SUNXI=y
> diff --git a/configs/x96_mate_defconfig b/configs/x96_mate_defconfig
> index 60cc8fbe751c..b00daa458b28 100644
> --- a/configs/x96_mate_defconfig
> +++ b/configs/x96_mate_defconfig
> @@ -6,6 +6,7 @@ CONFIG_DRAM_SUN50I_H616_READ_CALIBRATION=y
>  CONFIG_DRAM_SUN50I_H616_DX_ODT=0x03030303
>  CONFIG_DRAM_SUN50I_H616_DX_DRI=0x0e0e0e0e
>  CONFIG_DRAM_SUN50I_H616_CA_DRI=0x1c12
> +CONFIG_DRAM_SUN50I_H616_TPR10=0x2f0007
>  CONFIG_MACH_SUN50I_H616=y
>  CONFIG_R_I2C_ENABLE=y
>  # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set


  reply	other threads:[~2023-04-11 10:13 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-10  8:21 [PATCH v2 00/10] sunxi: Update H616 DRAM driver Jernej Skrabec
2023-04-10  8:21 ` [PATCH v2 01/10] sunxi: Fix write to H616 DRAM CR register Jernej Skrabec
2023-04-10  8:21 ` [PATCH v2 02/10] sunxi: cosmetic: Fix H616 DRAM driver code style Jernej Skrabec
2023-04-10  8:21 ` [PATCH v2 03/10] sunxi: parameterize H616 DRAM ODT values Jernej Skrabec
2023-04-10  8:21 ` [PATCH v2 04/10] sunxi: Convert H616 DRAM options to single setting Jernej Skrabec
2023-04-11 10:13   ` Andre Przywara [this message]
2023-04-12  5:05     ` Jernej Škrabec
2023-04-10  8:21 ` [PATCH v2 05/10] sunxi: Always configure ODT on H616 DRAM Jernej Skrabec
2023-04-11 10:13   ` Andre Przywara
2023-04-10  8:21 ` [PATCH v2 06/10] sunxi: Make bit delay function in H616 DRAM code void Jernej Skrabec
2023-04-10  8:21 ` [PATCH v2 07/10] sunxi: Parameterize bit delay code in H616 DRAM driver Jernej Skrabec
2023-04-11 10:14   ` Andre Przywara
2023-04-10  8:21 ` [PATCH v2 08/10] sunxi: Parameterize "unknown feature" " Jernej Skrabec
2023-04-11 10:14   ` Andre Przywara
2023-04-10  8:21 ` [PATCH v2 09/10] sunxi: Parameterize some of H616 DDR3 timings Jernej Skrabec
2023-04-11 10:14   ` Andre Przywara
2023-04-10  8:21 ` [PATCH v2 10/10] sunxi: Add TPR2 parameter for H616 DRAM driver Jernej Skrabec
2023-04-11 10:15   ` Andre Przywara
2023-04-11 10:19 ` [PATCH v2 00/10] sunxi: Update " Andre Przywara

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=20230411111304.4ba7ba2d@donnerap.cambridge.arm.com \
    --to=andre.przywara@arm.com \
    --cc=jagan@amarulasolutions.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=linux-sunxi@lists.linux.dev \
    --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