From: Philip Molloy <[email protected]> IP2APB_DDRPHY_IPS_BASE_ADDR() is always passed 0, which is then multiplied by 0x2000000. Since that results in adding 0 to the base address, remove 0x2000000 and the argument entirely. Instead use DDR_PHY_BASE, which was already defined in imx9. Add the missing definition to imx8m.
Signed-off-by: Philip Molloy <[email protected]> --- arch/arm/include/asm/arch-imx8m/ddr.h | 8 ++++---- arch/arm/include/asm/arch-imx9/ddr.h | 6 ++---- drivers/ddr/imx/imx8m/ddr_init.c | 8 ++++---- drivers/ddr/imx/phy/ddrphy_utils.c | 14 +++++++------- drivers/ddr/imx/phy/helper.c | 2 +- 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/arch/arm/include/asm/arch-imx8m/ddr.h b/arch/arm/include/asm/arch-imx8m/ddr.h index 47086d6b9f1..63c3aa682aa 100644 --- a/arch/arm/include/asm/arch-imx8m/ddr.h +++ b/arch/arm/include/asm/arch-imx8m/ddr.h @@ -10,9 +10,9 @@ #include <asm/types.h> #include <asm/arch/imx-regs.h> +#define DDR_PHY_BASE 0x3c000000 #define DDRC_DDR_SS_GPR0 0x3d000000 #define DDRC_IPS_BASE_ADDR_0 0x3f400000 -#define IP2APB_DDRPHY_IPS_BASE_ADDR(X) (0x3c000000 + (X * 0x2000000)) struct ddrc_freq { u32 res0[8]; @@ -635,7 +635,7 @@ enum msg_response { #define DDRC_DFITMG3_SHADOW(X) (DDRC_IPS_BASE_ADDR(X) + 0x21b8) #define DDRC_ODTCFG_SHADOW(X) (DDRC_IPS_BASE_ADDR(X) + 0x2240) -#define DDRPHY_CalBusy(X) (IP2APB_DDRPHY_IPS_BASE_ADDR(X) + 4 * 0x020097) +#define DDRPHY_CalBusy (DDR_PHY_BASE + 4 * 0x020097) #define DRC_PERF_MON_BASE_ADDR(X) (0x3d800000 + ((X) * 0x2000000)) #define DRC_PERF_MON_CNT0_CTL(X) (DRC_PERF_MON_BASE_ADDR(X) + 0x0) @@ -741,8 +741,8 @@ static inline void reg32setbit(unsigned long addr, u32 bit) } #define dwc_ddrphy_apb_wr(addr, data) \ - reg32_write(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(addr), data) + reg32_write(DDR_PHY_BASE + ddrphy_addr_remap(addr), data) #define dwc_ddrphy_apb_rd(addr) \ - reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(addr)) + reg32_read(DDR_PHY_BASE + ddrphy_addr_remap(addr)) #endif diff --git a/arch/arm/include/asm/arch-imx9/ddr.h b/arch/arm/include/asm/arch-imx9/ddr.h index 6c2069b9707..b6090a20a4d 100644 --- a/arch/arm/include/asm/arch-imx9/ddr.h +++ b/arch/arm/include/asm/arch-imx9/ddr.h @@ -34,8 +34,6 @@ #define REG_SRC_DPHY_SW_CTRL (SRC_DPHY_BASE_ADDR + 0x20) #define REG_SRC_DPHY_SINGLE_RESET_SW_CTRL (SRC_DPHY_BASE_ADDR + 0x24) -#define IP2APB_DDRPHY_IPS_BASE_ADDR(X) (DDR_PHY_BASE + ((X) * 0x2000000)) - /* PHY State */ enum pstate { PS0, @@ -136,8 +134,8 @@ static inline void reg32setbit(unsigned long addr, u32 bit) } #define dwc_ddrphy_apb_wr(addr, data) \ - reg32_write(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(addr), data) + reg32_write(DDR_PHY_BASE + ddrphy_addr_remap(addr), data) #define dwc_ddrphy_apb_rd(addr) \ - reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(addr)) + reg32_read(DDR_PHY_BASE + ddrphy_addr_remap(addr)) #endif diff --git a/drivers/ddr/imx/imx8m/ddr_init.c b/drivers/ddr/imx/imx8m/ddr_init.c index e9209ce8b61..39434334205 100644 --- a/drivers/ddr/imx/imx8m/ddr_init.c +++ b/drivers/ddr/imx/imx8m/ddr_init.c @@ -168,13 +168,13 @@ void get_trained_CDD(u32 fsp) ddr_type = reg32_read(DDRC_MSTR(0)) & 0x3f; if (ddr_type == 0x20) { for (i = 0; i < 6; i++) { - tmp = reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + (0x54013 + i) * 4); + tmp = reg32_read(DDR_PHY_BASE + (0x54013 + i) * 4); cdd_cha[i * 2] = tmp & 0xff; cdd_cha[i * 2 + 1] = (tmp >> 8) & 0xff; } for (i = 0; i < 7; i++) { - tmp = reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + (0x5402c + i) * 4); + tmp = reg32_read(DDR_PHY_BASE + (0x5402c + i) * 4); if (i == 0) { cdd_cha[0] = (tmp >> 8) & 0xff; } else if (i == 6) { @@ -205,7 +205,7 @@ void get_trained_CDD(u32 fsp) unsigned int ddr4_cdd[64]; for (i = 0; i < 29; i++) { - tmp = reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + (0x54012 + i) * 4); + tmp = reg32_read(DDR_PHY_BASE + (0x54012 + i) * 4); ddr4_cdd[i * 2] = tmp & 0xff; ddr4_cdd[i * 2 + 1] = (tmp >> 8) & 0xff; } @@ -401,7 +401,7 @@ int ddr_init(struct dram_timing_info *dram_timing) * calibrating. Wait Calibrating done. */ do { - tmp = reg32_read(DDRPHY_CalBusy(0)); + tmp = reg32_read(DDRPHY_CalBusy); } while ((tmp & 0x1)); debug("DDRINFO:ddrphy calibration done\n"); diff --git a/drivers/ddr/imx/phy/ddrphy_utils.c b/drivers/ddr/imx/phy/ddrphy_utils.c index b406418840c..22cd091f6ee 100644 --- a/drivers/ddr/imx/phy/ddrphy_utils.c +++ b/drivers/ddr/imx/phy/ddrphy_utils.c @@ -15,7 +15,7 @@ static inline void poll_pmu_message_ready(void) unsigned int reg; do { - reg = reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(0xd0004)); + reg = reg32_read(DDR_PHY_BASE + ddrphy_addr_remap(0xd0004)); } while (reg & 0x1); } @@ -23,13 +23,13 @@ static inline void ack_pmu_message_receive(void) { unsigned int reg; - reg32_write(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(0xd0031), 0x0); + reg32_write(DDR_PHY_BASE + ddrphy_addr_remap(0xd0031), 0x0); do { - reg = reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(0xd0004)); + reg = reg32_read(DDR_PHY_BASE + ddrphy_addr_remap(0xd0004)); } while (!(reg & 0x1)); - reg32_write(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(0xd0031), 0x1); + reg32_write(DDR_PHY_BASE + ddrphy_addr_remap(0xd0031), 0x1); } static inline unsigned int get_mail(void) @@ -38,7 +38,7 @@ static inline unsigned int get_mail(void) poll_pmu_message_ready(); - reg = reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(0xd0032)); + reg = reg32_read(DDR_PHY_BASE + ddrphy_addr_remap(0xd0032)); ack_pmu_message_receive(); @@ -51,9 +51,9 @@ static inline unsigned int get_stream_message(void) poll_pmu_message_ready(); - reg = reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(0xd0032)); + reg = reg32_read(DDR_PHY_BASE + ddrphy_addr_remap(0xd0032)); - reg2 = reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + ddrphy_addr_remap(0xd0034)); + reg2 = reg32_read(DDR_PHY_BASE + ddrphy_addr_remap(0xd0034)); reg2 = (reg2 << 16) | reg; diff --git a/drivers/ddr/imx/phy/helper.c b/drivers/ddr/imx/phy/helper.c index 7b590ef397b..080a6fa1c57 100644 --- a/drivers/ddr/imx/phy/helper.c +++ b/drivers/ddr/imx/phy/helper.c @@ -20,7 +20,7 @@ DECLARE_GLOBAL_DATA_PTR; #define IMEM_OFFSET_ADDR 0x00050000 #define DMEM_OFFSET_ADDR 0x00054000 -#define DDR_TRAIN_CODE_BASE_ADDR IP2APB_DDRPHY_IPS_BASE_ADDR(0) +#define DDR_TRAIN_CODE_BASE_ADDR DDR_PHY_BASE binman_sym_declare(ulong, ddr_1d_imem_fw, image_pos); binman_sym_declare(ulong, ddr_1d_imem_fw, size); -- 2.53.0

