diff --git a/drivers/ddr/imx8m/lpddr4/lpddr4_init.c b/drivers/ddr/imx8m/lpddr4/lpddr4_init.c
index 0a02e5da4c7df3c4714864b4c099c3f225a60b4a..414f4127437fdb0e3e22e2853b30897b67ddf4db 100644
--- a/drivers/ddr/imx8m/lpddr4/lpddr4_init.c
+++ b/drivers/ddr/imx8m/lpddr4/lpddr4_init.c
@@ -26,19 +26,21 @@ void lpddr4_cfg_umctl2(struct dram_cfg_param *ddrc_cfg, int num)
 void ddr_init(struct dram_timing_info *dram_timing)
 {
 	unsigned int tmp;
+	int imx8mq = is_imx8mq();
 
 	printf("DDRINFO: start lpddr4 ddr init\n");
 	/* step 1: reset */
-	if (is_imx8mq()) {
+	if (imx8mq) {
 		reg32_write(SRC_DDRC_RCR_ADDR + 0x04, 0x8F00000F);
 		reg32_write(SRC_DDRC_RCR_ADDR, 0x8F00000F);
+		mdelay(100);
 		reg32_write(SRC_DDRC_RCR_ADDR + 0x04, 0x8F000000);
 	} else {
 		reg32_write(SRC_DDRC_RCR_ADDR, 0x8F00001F);
 		reg32_write(SRC_DDRC_RCR_ADDR, 0x8F00000F);
+		mdelay(100);
 	}
 
-	mdelay(100);
 
 	debug("DDRINFO: reset done\n");
 	/* change the clock source of dram_apb_clk_root: source 4 800MHz /4 = 200MHz */
@@ -50,7 +52,7 @@ void ddr_init(struct dram_timing_info *dram_timing)
 	reg32setbit(0x303A00F8, 5); /* PU_PGC_SW_PUP_REQ */
 
 	debug("DDRINFO: cfg clk\n");
-	dram_pll_init(MHZ(750));
+	dram_pll_init(MHZ(imx8mq ? 800 : 750));
 
 	/*
 	 * release [0]ddr1_preset_n, [1]ddr1_core_reset_n,