]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
rockchip: sdram: Add rockchip_sdram_type() helper
authorJonas Karlman <jonas@kwiboo.se>
Fri, 1 Aug 2025 17:09:27 +0000 (17:09 +0000)
committerKever Yang <kever.yang@rock-chips.com>
Sat, 13 Dec 2025 16:02:10 +0000 (00:02 +0800)
Add a helper function based on rockchip_sdram_size() that return what
DRAM type is used on current running board.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
arch/arm/include/asm/arch-rockchip/sdram.h
arch/arm/mach-rockchip/sdram.c

index 4fb45ac5c76e671e9fbccde651840910ddfdde01..476fc1c4ee33aab689207e083529bdefaacb3b6b 100644 (file)
@@ -87,6 +87,9 @@ enum {
 #define SYS_REG_CS1_COL_SHIFT(ch)              (0 + (ch) * 2)
 #define SYS_REG_CS1_COL_MASK                   3
 
+/* Get sdram type decode from reg */
+u8 rockchip_sdram_type(phys_addr_t reg);
+
 /* Get sdram size decode from reg */
 size_t rockchip_sdram_size(phys_addr_t reg);
 
index 3bc482331c7e7e5bb40270dab8fe6a2d8a986dad..d560f90e873d02e1a799ab0d7c1e085df0c1c54a 100644 (file)
@@ -345,6 +345,21 @@ int dram_init_banksize(void)
        return 0;
 }
 
+u8 rockchip_sdram_type(phys_addr_t reg)
+{
+       u32 dram_type, version;
+       u32 sys_reg2 = readl(reg);
+       u32 sys_reg3 = readl(reg + 4);
+
+       dram_type = (sys_reg2 >> SYS_REG_DDRTYPE_SHIFT) & SYS_REG_DDRTYPE_MASK;
+       version = (sys_reg3 >> SYS_REG_VERSION_SHIFT) & SYS_REG_VERSION_MASK;
+       if (version >= 3)
+               dram_type |= ((sys_reg3 >> SYS_REG_EXTEND_DDRTYPE_SHIFT) &
+                             SYS_REG_EXTEND_DDRTYPE_MASK) << 3;
+
+       return dram_type;
+}
+
 size_t rockchip_sdram_size(phys_addr_t reg)
 {
        u32 rank, cs0_col, bk, cs0_row, cs1_row, bw, row_3_4;