[PATCH v2] sunxi: H616: dram: fix LPDDR3 TRP6 parsing
Philippe Simons
simons.philippe at gmail.com
Tue Apr 7 18:47:17 CEST 2026
From: Jernej Skrabec <jernej.skrabec at gmail.com>
Allwinner's BSP DRAM code uses parameter TPR6, presumably containing
some "Vref" parameter, to encode the values for *all* four supported DRAM
types. The code selects one byte based on the DRAM type used at runtime.
To allow copying DRAM parameters from vendor firmware, we used this value
and its encoding, but wrongly: the proper order of bytes is DDR3, DDR4,
LPDDR3, LPDDR4, from LSB to MSB, cf. the A523 and A133 DRAM code.
Correct the masking for LPDDR3 to fix DRAM operation on some boards
using this DRAM type.
With LPDDR3 TRP6 parsing fixed, adapt default DRAM_SUNXI_TPR6 value.
Also change LPDDR4 default value to 0x38 used by A523 boards.
Signed-off-by: Jernej Skrabec <jernej.skrabec at gmail.com>
[adjusted commit message, update default value]
Signed-off-by: Philippe Simons <simons.philippe at gmail.com>
---
arch/arm/mach-sunxi/Kconfig | 2 +-
arch/arm/mach-sunxi/dram_sun50i_h616.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index e979ee4a2cc..a1ddc6a1fc8 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -144,7 +144,7 @@ config DRAM_SUNXI_TPR3
config DRAM_SUNXI_TPR6
hex "DRAM TPR6 parameter"
- default 0x3300c080
+ default 0x38c00080
help
TPR6 value from vendor DRAM settings.
diff --git a/arch/arm/mach-sunxi/dram_sun50i_h616.c b/arch/arm/mach-sunxi/dram_sun50i_h616.c
index 3345c9b8e82..42a0550e015 100644
--- a/arch/arm/mach-sunxi/dram_sun50i_h616.c
+++ b/arch/arm/mach-sunxi/dram_sun50i_h616.c
@@ -975,7 +975,7 @@ static bool mctl_phy_init(const struct dram_para *para,
val = para->tpr6 & 0xff;
break;
case SUNXI_DRAM_TYPE_LPDDR3:
- val = para->tpr6 >> 8 & 0xff;
+ val = para->tpr6 >> 16 & 0xff;
break;
case SUNXI_DRAM_TYPE_LPDDR4:
val = para->tpr6 >> 24 & 0xff;
--
2.53.0
More information about the U-Boot
mailing list