summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hemp <c.hemp@phytec.de>2018-07-03 08:12:51 (GMT)
committerStefan Müller-Klieser <s.mueller-klieser@phytec.de>2018-07-03 09:36:26 (GMT)
commit51204cba0c380b34eabffb3df99dd8ff5086156c (patch)
treecd5fdb237a4bd0cb288726c5099865e8dd5981d0
parent8ce2e8fd59d28ae2f937e08b2db6edf6451995bb (diff)
downloadmeta-phytec-51204cba0c380b34eabffb3df99dd8ff5086156c.zip
meta-phytec-51204cba0c380b34eabffb3df99dd8ff5086156c.tar.bz2
imx-atf: customize atf to different ram configuration
Add NXP patch to support different LPDDR4 configurations and set size to 1GB. Signed-off-by: Christian Hemp <c.hemp@phytec.de> Signed-off-by: Stefan Müller-Klieser <s.mueller-klieser@phytec.de>
-rwxr-xr-xdynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf/0001-ATF-support-to-different-LPDDR4-configurations.patch2055
-rw-r--r--dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf/0002-imx8m_bl31_setup-set-mem-size-to-1GB.patch26
-rw-r--r--dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf_%.bbappend6
3 files changed, 2087 insertions, 0 deletions
diff --git a/dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf/0001-ATF-support-to-different-LPDDR4-configurations.patch b/dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf/0001-ATF-support-to-different-LPDDR4-configurations.patch
new file mode 100755
index 0000000..dbe2f8f
--- /dev/null
+++ b/dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf/0001-ATF-support-to-different-LPDDR4-configurations.patch
@@ -0,0 +1,2055 @@
+From 9d25029d24435b11c0d2222b22db1b641e7eaea0 Mon Sep 17 00:00:00 2001
+From: Oliver Chen <Oliver.Chen@nxp.com>
+Date: Thu, 31 May 2018 15:00:45 +0800
+Subject: [PATCH] support to different LPDDR4 configurations 1. auto-detect DDR
+ boot frequency and backup DRAM PLL cfg 2. save/restore all necessary
+ DDRC/DDRPHY register to adapt to all LPDDR4 configurations
+
+---
+ plat/freescale/imx8mq/ddr/lpddr4_ddrc_cfg.c | 236 ++--
+ plat/freescale/imx8mq/ddr/lpddr4_dvfs.c | 17 +
+ plat/freescale/imx8mq/ddr/lpddr4_phy_cfg.c | 1490 +++++++++++++-------------
+ plat/freescale/imx8mq/ddr/lpddr4_retention.c | 6 +-
+ plat/freescale/imx8mq/ddr/lpddr4_swffc.c | 77 +-
+ plat/freescale/imx8mq/include/soc.h | 1 +
+ 6 files changed, 921 insertions(+), 906 deletions(-)
+
+diff --git a/plat/freescale/imx8mq/ddr/lpddr4_ddrc_cfg.c b/plat/freescale/imx8mq/ddr/lpddr4_ddrc_cfg.c
+index a4d45bf..eb7a06c 100644
+--- a/plat/freescale/imx8mq/ddr/lpddr4_ddrc_cfg.c
++++ b/plat/freescale/imx8mq/ddr/lpddr4_ddrc_cfg.c
+@@ -14,133 +14,135 @@
+ #include <spinlock.h>
+ #include <soc.h>
+
+-#define WR_POST_EXT_3200
++struct ddrc_cfg_param {
++ uint32_t offset; /*reg offset */
++ uint32_t val; /* config param */
++};
+
+-static inline void umctl2_addrmap(void)
+-{
+- /* Address mapping */
+- /* need be refined for DDR vender */
+- /* Address map is from MSB 29: r15, r14, cs, r13-r0, b2-b0, c9-c0 */
+- mmio_write_32(DDRC_ADDRMAP0(0), 0x00000015);
+- mmio_write_32(DDRC_ADDRMAP3(0), 0x00000000);
+- mmio_write_32(DDRC_ADDRMAP4(0), 0x00001F1F);
+- /* bank interleave */
+- mmio_write_32(DDRC_ADDRMAP1(0), 0x00080808);
+- mmio_write_32(DDRC_ADDRMAP5(0), 0x07070707);
+- mmio_write_32(DDRC_ADDRMAP6(0), 0x08080707);
+-}
++/* lpddr4 phy init config parameters */
++static struct ddrc_cfg_param umctl2_cfg[] = {
++ { .offset = DDRC_DBG1(0) , .val = 0x00 },
++ { .offset = DDRC_PWRCTL(0) , .val = 0x00 },
++ { .offset = DDRC_MSTR(0) , .val = 0x00 },
++ { .offset = DDRC_MSTR2(0) , .val = 0x00 },
++ { .offset = DDRC_DERATEEN(0), .val = 0x00 },
++ { .offset = DDRC_DERATEINT(0), .val = 0x00},
++ { .offset = DDRC_RFSHTMG(0), .val = 0x00 },
++ { .offset = DDRC_INIT0(0) , .val = 0x00 },
++ { .offset = DDRC_INIT1(0) , .val = 0x00 },
++ { .offset = DDRC_INIT3(0) , .val = 0x00 },
++ { .offset = DDRC_INIT4(0) , .val = 0x00 },
++ { .offset = DDRC_INIT6(0) , .val = 0x00 },
++ { .offset = DDRC_INIT7(0) , .val = 0x00 },
++ { .offset = DDRC_DRAMTMG0(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG1(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG3(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG4(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG5(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG6(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG7(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG12(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG13(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG14(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG17(0), .val = 0x00 },
+
+-static inline void umctl2_perf(void)
+-{
+- mmio_write_32(DDRC_ODTCFG(0), 0x0b060908);
+- mmio_write_32(DDRC_ODTMAP(0), 0x00000000);
+- mmio_write_32(DDRC_SCHED(0), 0x29511505);
+- mmio_write_32(DDRC_SCHED1(0), 0x0000002c);
+- mmio_write_32(DDRC_PERFHPR1(0), 0x5900575b);
+- mmio_write_32(DDRC_PERFLPR1(0), 0x00000009);
+- mmio_write_32(DDRC_PERFWR1(0), 0x02005574);
+- mmio_write_32(DDRC_DBG0(0), 0x00000016);
+- mmio_write_32(DDRC_DBG1(0), 0x00000000);
+- mmio_write_32(DDRC_DBGCMD(0), 0x00000000);
+- mmio_write_32(DDRC_SWCTL(0), 0x00000001);
+- mmio_write_32(DDRC_POISONCFG(0), 0x00000011);
+- mmio_write_32(DDRC_PCCFG(0), 0x00000111);
+- mmio_write_32(DDRC_PCFGR_0(0), 0x000010f3);
+- mmio_write_32(DDRC_PCFGW_0(0), 0x000072ff);
+- mmio_write_32(DDRC_PCTRL_0(0), 0x00000001);
+- mmio_write_32(DDRC_PCFGQOS0_0(0), 0x01110d00);
+- mmio_write_32(DDRC_PCFGQOS1_0(0), 0x00620790);
+- mmio_write_32(DDRC_PCFGWQOS0_0(0), 0x00100001);
+- mmio_write_32(DDRC_PCFGWQOS1_0(0), 0x0000041f);
+- mmio_write_32(DDRC_FREQ1_DERATEEN(0), 0x00000202);
+- mmio_write_32(DDRC_FREQ1_DERATEINT(0), 0xec78f4b5);
+- mmio_write_32(DDRC_FREQ1_RFSHCTL0(0), 0x00618040);
+- mmio_write_32(DDRC_FREQ1_RFSHTMG(0), 0x00610090);
+-}
++ { .offset = DDRC_ZQCTL0(0), .val = 0x00 },
++ { .offset = DDRC_ZQCTL1(0), .val = 0x00 },
++ { .offset = DDRC_ZQCTL2(0), .val = 0x00 },
+
+-static inline void umctl2_freq1(void)
+-{
+- mmio_write_32(DDRC_FREQ1_DERATEEN(0), 0x0000000);
+- mmio_write_32(DDRC_FREQ1_DERATEINT(0), 0x0800000);
+- mmio_write_32(DDRC_FREQ1_RFSHCTL0(0), 0x0210000);
+- mmio_write_32(DDRC_FREQ1_RFSHTMG(0), 0x014001E);
+- mmio_write_32(DDRC_FREQ1_INIT3(0), 0x0140009);
+- mmio_write_32(DDRC_FREQ1_INIT4(0), 0x00310008);
+- mmio_write_32(DDRC_FREQ1_INIT6(0), 0x0066004a);
+- mmio_write_32(DDRC_FREQ1_INIT7(0), 0x0006004a);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG0(0), 0xB070A07);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG1(0), 0x003040A);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG2(0), 0x305080C);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG3(0), 0x0505000);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG4(0), 0x3040203);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG5(0), 0x2030303);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG6(0), 0x2020004);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG7(0), 0x0000302);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG12(0), 0x0020310);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG13(0), 0xA100002);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG14(0), 0x0000020);
+- mmio_write_32(DDRC_FREQ1_DRAMTMG17(0), 0x0220011);
+- mmio_write_32(DDRC_FREQ1_ZQCTL0(0), 0x0A70005);
+- mmio_write_32(DDRC_FREQ1_DFITMG0(0), 0x3858202);
+- mmio_write_32(DDRC_FREQ1_DFITMG1(0), 0x0000404);
+- mmio_write_32(DDRC_FREQ1_DFITMG2(0), 0x0000502);
+-}
++ { .offset = DDRC_DFITMG0(0), .val = 0x00 },
++ { .offset = DDRC_DFITMG1(0), .val = 0x00 },
++ { .offset = DDRC_DFIUPD0(0), .val = 0x00 },
++ { .offset = DDRC_DFIUPD1(0), .val = 0x00 },
++ { .offset = DDRC_DFIUPD2(0), .val = 0x00 },
++ { .offset = DDRC_DFIMISC(0), .val = 0x00 },
++ { .offset = DDRC_DFITMG2(0), .val = 0x00 },
+
+-void lpddr4_cfg_umctl2(void)
+-{
+- /* Start to config, default 3200mbps */
+- mmio_write_32(DDRC_DBG1(0), 0x00000001);
+- mmio_write_32(DDRC_PWRCTL(0), 0x00000001);
+- mmio_write_32(DDRC_MSTR(0), 0xa3080020);
+- mmio_write_32(DDRC_MSTR2(0), 0x00000000);
+- mmio_write_32(DDRC_RFSHTMG(0), 0x006100E0);
+- mmio_write_32(DDRC_INIT0(0), 0xC003061B);
+- mmio_write_32(DDRC_INIT1(0), 0x009D0000);
+- mmio_write_32(DDRC_INIT3(0), 0x00D4002D);
+-#ifdef WR_POST_EXT_3200 /* recommened to define */
+- mmio_write_32(DDRC_INIT4(0), 0x00330008);
+-#else
+- mmio_write_32(DDRC_INIT4(0), 0x00310008);
+-#endif
+- mmio_write_32(DDRC_INIT6(0), 0x0066004a);
+- mmio_write_32(DDRC_INIT7(0), 0x0006004a);
++ { .offset = DDRC_DBICTL(0), .val = 0x00 },
++ { .offset = DDRC_DFIPHYMSTR(0), .val = 0x00 },
+
+- mmio_write_32(DDRC_DRAMTMG0(0), 0x1A201B22);
+- mmio_write_32(DDRC_DRAMTMG1(0), 0x00060633);
+- mmio_write_32(DDRC_DRAMTMG3(0), 0x00C0C000);
+- mmio_write_32(DDRC_DRAMTMG4(0), 0x0F04080F);
+- mmio_write_32(DDRC_DRAMTMG5(0), 0x02040C0C);
+- mmio_write_32(DDRC_DRAMTMG6(0), 0x01010007);
+- mmio_write_32(DDRC_DRAMTMG7(0), 0x00000401);
+- mmio_write_32(DDRC_DRAMTMG12(0), 0x00020600);
+- mmio_write_32(DDRC_DRAMTMG13(0), 0x0C100002);
+- mmio_write_32(DDRC_DRAMTMG14(0), 0x000000E6);
+- mmio_write_32(DDRC_DRAMTMG17(0), 0x00A00050);
++ { .offset = DDRC_RANKCTL(0), .val = 0x00 },
++ { .offset = DDRC_DRAMTMG2(0), .val = 0x00 },
+
+- mmio_write_32(DDRC_ZQCTL0(0), 0x03200018);
+- mmio_write_32(DDRC_ZQCTL1(0), 0x028061A8);
+- mmio_write_32(DDRC_ZQCTL2(0), 0x00000000);
++ /* Address mapping */
++ { .offset = DDRC_ADDRMAP0(0), .val = 0x00 },
++ { .offset = DDRC_ADDRMAP1(0), .val = 0x00 },
++ { .offset = DDRC_ADDRMAP2(0), .val = 0x00 },
++ { .offset = DDRC_ADDRMAP3(0), .val = 0x00 },
++ { .offset = DDRC_ADDRMAP4(0), .val = 0x00 },
++ { .offset = DDRC_ADDRMAP5(0), .val = 0x00 },
++ { .offset = DDRC_ADDRMAP6(0), .val = 0x00 },
+
+- mmio_write_32(DDRC_DFITMG0(0), 0x0497820A);
+- mmio_write_32(DDRC_DFITMG1(0), 0x00080303);
+- mmio_write_32(DDRC_DFIUPD0(0), 0xE0400018);
+- mmio_write_32(DDRC_DFIUPD1(0), 0x00DF00E4);
+- mmio_write_32(DDRC_DFIUPD2(0), 0x80000000);
+- mmio_write_32(DDRC_DFIMISC(0), 0x00000011);
+- mmio_write_32(DDRC_DFITMG2(0), 0x0000170A);
++ /* performance tunning */
++ { .offset = DDRC_ODTCFG(0), .val = 0x00 },
++ { .offset = DDRC_ODTMAP(0), .val = 0x00 },
++ { .offset = DDRC_SCHED(0), .val = 0x00 },
++ { .offset = DDRC_SCHED1(0), .val = 0x00 },
++ { .offset = DDRC_PERFHPR1(0), .val = 0x00 },
++ { .offset = DDRC_PERFLPR1(0), .val = 0x00 },
++ { .offset = DDRC_PERFWR1(0), .val = 0x00 },
++ { .offset = DDRC_DBG0(0), .val = 0x00 },
++ { .offset = DDRC_DBG1(0), .val = 0x00 },
++ { .offset = DDRC_DBGCMD(0), .val = 0x00 },
++ { .offset = DDRC_SWCTL(0), .val = 0x00 },
++ { .offset = DDRC_POISONCFG(0), .val = 0x00 },
++ { .offset = DDRC_PCCFG(0), .val = 0x00 },
++ { .offset = DDRC_PCFGR_0(0), .val = 0x00 },
++ { .offset = DDRC_PCFGW_0(0), .val = 0x00 },
++ { .offset = DDRC_PCTRL_0(0), .val = 0x00 },
++ { .offset = DDRC_PCFGQOS0_0(0), .val = 0x00 },
++ { .offset = DDRC_PCFGQOS1_0(0), .val = 0x00 },
++ { .offset = DDRC_PCFGWQOS0_0(0), .val = 0x00 },
++ { .offset = DDRC_PCFGWQOS1_0(0), .val = 0x00 },
+
+- mmio_write_32(DDRC_DBICTL(0), 0x00000001);
+- mmio_write_32(DDRC_DFIPHYMSTR(0), 0x00000001);
++ /* frequency point 1 */
++ { .offset = DDRC_FREQ1_DERATEEN(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DERATEINT(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_RFSHCTL0(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_RFSHTMG(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_INIT3(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_INIT4(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_INIT6(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_INIT7(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG0(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG1(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG2(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG3(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG4(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG5(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG6(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG7(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG12(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG13(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG14(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DRAMTMG17(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_ZQCTL0(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DFITMG0(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DFITMG1(0), .val = 0x00 },
++ { .offset = DDRC_FREQ1_DFITMG2(0), .val = 0x00 }
++};
++
++void lpddr4_save_umctl2(void)
++{
++ int index, offset, size;
+
+- mmio_write_32(DDRC_RANKCTL(0), 0x00000c99);
+- mmio_write_32(DDRC_DRAMTMG2(0), 0x070E171a);
++ size = sizeof(umctl2_cfg) / 8;
+
+- /* address mapping */
+- umctl2_addrmap();
++ for (index = 0; index < size; index++) {
++ offset = umctl2_cfg[index].offset;
++ umctl2_cfg[index].val = mmio_read_32(offset);
++ }
++}
++
++void lpddr4_cfg_umctl2(void)
++{
++ int index, offset, size, val;
+
+- /* performance setting */
+- umctl2_perf();
++ size = sizeof(umctl2_cfg) / 8;
+
+- /* freq set point 1 setting */
+- umctl2_freq1();
++ for (index = 0; index < size; index++) {
++ offset = umctl2_cfg[index].offset;
++ val = umctl2_cfg[index].val;
++ mmio_write_32(offset,val);
++ }
+ }
+diff --git a/plat/freescale/imx8mq/ddr/lpddr4_dvfs.c b/plat/freescale/imx8mq/ddr/lpddr4_dvfs.c
+index 4cb525b..5346642 100644
+--- a/plat/freescale/imx8mq/ddr/lpddr4_dvfs.c
++++ b/plat/freescale/imx8mq/ddr/lpddr4_dvfs.c
+@@ -16,6 +16,7 @@
+
+ #include "lpddr4_dvfs.h"
+
++#define HW_DRAM_PLL_CFG2_ADDR (0x30360000 + 0x68)
+ #define DDRC_LPDDR4 (1 << 5)
+ #define DDR_TYPE_MASK 0x3f
+
+@@ -27,6 +28,12 @@ static volatile uint32_t wfe_done;
+ static volatile bool wait_ddrc_hwffc_done = true;
+
+ static unsigned int init_fsp = 0x1;
++unsigned int default_ddr_pllcfg = 0;
++
++static inline int get_init_fsp(void)
++{
++ return (mmio_read_32(DDRC_DFIMISC(0))>>8)&0xf;
++}
+
+ static inline int get_ddr_type(void)
+ {
+@@ -35,6 +42,15 @@ static inline int get_ddr_type(void)
+
+ void lpddr4_switch_to_3200(void)
+ {
++ init_fsp = get_init_fsp();
++ if(init_fsp == 0)
++ {
++ default_ddr_pllcfg = mmio_read_32(HW_DRAM_PLL_CFG2_ADDR);
++ return;
++ }
++
++ default_ddr_pllcfg = 0;
++
+ if (get_ddr_type() == DDRC_LPDDR4)
+ lpddr4_dvfs_swffc(init_fsp, 0x0);
+ }
+@@ -98,6 +114,7 @@ int lpddr4_dvfs_handler(uint32_t smc_fid,
+ init_fsp = (~init_fsp) & 0x1;
+ #else
+ lpddr4_dvfs_swffc(init_fsp, target_freq);
++ init_fsp = (~init_fsp) & 0x1;
+ #endif
+ wait_ddrc_hwffc_done = false;
+ wfe_done = 0;
+diff --git a/plat/freescale/imx8mq/ddr/lpddr4_phy_cfg.c b/plat/freescale/imx8mq/ddr/lpddr4_phy_cfg.c
+index d6c57e0..ddba7f2 100644
+--- a/plat/freescale/imx8mq/ddr/lpddr4_phy_cfg.c
++++ b/plat/freescale/imx8mq/ddr/lpddr4_phy_cfg.c
+@@ -20,7 +20,7 @@ struct ddrphy_cfg_param {
+ };
+
+ /* lpddr4 phy init config parameters */
+-static const struct ddrphy_cfg_param phy_init_cfg[] = {
++static struct ddrphy_cfg_param phy_cfg[] = {
+ { .offset = 0x20110, .val = 0x02 }, /* MapCAB0toDFI */
+ { .offset = 0x20111, .val = 0x03 }, /* MapCAB1toDFI */
+ { .offset = 0x20112, .val = 0x04 }, /* MapCAB2toDFI */
+@@ -69,6 +69,7 @@ static const struct ddrphy_cfg_param phy_init_cfg[] = {
+ { .offset = 0x200c5, .val = 0x19 }, // DWC_DDRPHYA_MASTER0_PllCtrl2_p0
+ { .offset = 0x1200c5, .val = 0x7 }, // DWC_DDRPHYA_MASTER0_PllCtrl2_p1
+ { .offset = 0x2200c5, .val = 0x7 }, // DWC_DDRPHYA_MASTER0_PllCtrl2_p2
++ { .offset = 0x200cb, .val = 0x0 }, // DWC_DDRPHYA_MASTER0_PllCtrl3
+ { .offset = 0x2002e, .val = 0x2 }, // DWC_DDRPHYA_MASTER0_ARdPtrInitVal_p0
+ { .offset = 0x12002e, .val = 0x1 }, // DWC_DDRPHYA_MASTER0_ARdPtrInitVal_p1
+ { .offset = 0x22002e, .val = 0x2 }, // DWC_DDRPHYA_MASTER0_ARdPtrInitVal_p2
+@@ -202,729 +203,738 @@ static const struct ddrphy_cfg_param phy_init_cfg[] = {
+ { .offset = 0x2002d, .val = 0x0 }, // DWC_DDRPHYA_MASTER0_DMIPinPresent_p0
+ { .offset = 0x12002d, .val = 0x0 }, // DWC_DDRPHYA_MASTER0_DMIPinPresent_p1
+ { .offset = 0x22002d, .val = 0x0 }, // DWC_DDRPHYA_MASTER0_DMIPinPresent_p2
+-};
+
+-/* lpddr4 phy trained CSR registers */
+-static struct ddrphy_cfg_param phy_trained_csr[] = {
+- { .offset = 0x200b2, .val = 0 },
+- { .offset = 0x1200b2, .val = 0 },
+- { .offset = 0x2200b2, .val = 0 },
+- { .offset = 0x200cb, .val = 0 },
+- { .offset = 0x10043, .val = 0 },
+- { .offset = 0x110043, .val = 0 },
+- { .offset = 0x210043, .val = 0 },
+- { .offset = 0x10143, .val = 0 },
+- { .offset = 0x110143, .val = 0 },
+- { .offset = 0x210143, .val = 0 },
+- { .offset = 0x11043, .val = 0 },
+- { .offset = 0x111043, .val = 0 },
+- { .offset = 0x211043, .val = 0 },
+- { .offset = 0x11143, .val = 0 },
+- { .offset = 0x111143, .val = 0 },
+- { .offset = 0x211143, .val = 0 },
+- { .offset = 0x12043, .val = 0 },
+- { .offset = 0x112043, .val = 0 },
+- { .offset = 0x212043, .val = 0 },
+- { .offset = 0x12143, .val = 0 },
+- { .offset = 0x112143, .val = 0 },
+- { .offset = 0x212143, .val = 0 },
+- { .offset = 0x13043, .val = 0 },
+- { .offset = 0x113043, .val = 0 },
+- { .offset = 0x213043, .val = 0 },
+- { .offset = 0x13143, .val = 0 },
+- { .offset = 0x113143, .val = 0 },
+- { .offset = 0x213143, .val = 0 },
+- { .offset = 0x80, .val = 0 },
+- { .offset = 0x100080, .val = 0 },
+- { .offset = 0x200080, .val = 0 },
+- { .offset = 0x1080, .val = 0 },
+- { .offset = 0x101080, .val = 0 },
+- { .offset = 0x201080, .val = 0 },
+- { .offset = 0x2080, .val = 0 },
+- { .offset = 0x102080, .val = 0 },
+- { .offset = 0x202080, .val = 0 },
+- { .offset = 0x3080, .val = 0 },
+- { .offset = 0x103080, .val = 0 },
+- { .offset = 0x203080, .val = 0 },
+- { .offset = 0x4080, .val = 0 },
+- { .offset = 0x104080, .val = 0 },
+- { .offset = 0x204080, .val = 0 },
+- { .offset = 0x5080, .val = 0 },
+- { .offset = 0x105080, .val = 0 },
+- { .offset = 0x205080, .val = 0 },
+- { .offset = 0x6080, .val = 0 },
+- { .offset = 0x106080, .val = 0 },
+- { .offset = 0x206080, .val = 0 },
+- { .offset = 0x7080, .val = 0 },
+- { .offset = 0x107080, .val = 0 },
+- { .offset = 0x207080, .val = 0 },
+- { .offset = 0x8080, .val = 0 },
+- { .offset = 0x108080, .val = 0 },
+- { .offset = 0x208080, .val = 0 },
+- { .offset = 0x9080, .val = 0 },
+- { .offset = 0x109080, .val = 0 },
+- { .offset = 0x209080, .val = 0 },
+- { .offset = 0x10080, .val = 0 },
+- { .offset = 0x110080, .val = 0 },
+- { .offset = 0x210080, .val = 0 },
+- { .offset = 0x10180, .val = 0 },
+- { .offset = 0x110180, .val = 0 },
+- { .offset = 0x210180, .val = 0 },
+- { .offset = 0x11080, .val = 0 },
+- { .offset = 0x111080, .val = 0 },
+- { .offset = 0x211080, .val = 0 },
+- { .offset = 0x11180, .val = 0 },
+- { .offset = 0x111180, .val = 0 },
+- { .offset = 0x211180, .val = 0 },
+- { .offset = 0x12080, .val = 0 },
+- { .offset = 0x112080, .val = 0 },
+- { .offset = 0x212080, .val = 0 },
+- { .offset = 0x12180, .val = 0 },
+- { .offset = 0x112180, .val = 0 },
+- { .offset = 0x212180, .val = 0 },
+- { .offset = 0x13080, .val = 0 },
+- { .offset = 0x113080, .val = 0 },
+- { .offset = 0x213080, .val = 0 },
+- { .offset = 0x13180, .val = 0 },
+- { .offset = 0x113180, .val = 0 },
+- { .offset = 0x213180, .val = 0 },
+- { .offset = 0x10081, .val = 0 },
+- { .offset = 0x110081, .val = 0 },
+- { .offset = 0x210081, .val = 0 },
+- { .offset = 0x10181, .val = 0 },
+- { .offset = 0x110181, .val = 0 },
+- { .offset = 0x210181, .val = 0 },
+- { .offset = 0x11081, .val = 0 },
+- { .offset = 0x111081, .val = 0 },
+- { .offset = 0x211081, .val = 0 },
+- { .offset = 0x11181, .val = 0 },
+- { .offset = 0x111181, .val = 0 },
+- { .offset = 0x211181, .val = 0 },
+- { .offset = 0x12081, .val = 0 },
+- { .offset = 0x112081, .val = 0 },
+- { .offset = 0x212081, .val = 0 },
+- { .offset = 0x12181, .val = 0 },
+- { .offset = 0x112181, .val = 0 },
+- { .offset = 0x212181, .val = 0 },
+- { .offset = 0x13081, .val = 0 },
+- { .offset = 0x113081, .val = 0 },
+- { .offset = 0x213081, .val = 0 },
+- { .offset = 0x13181, .val = 0 },
+- { .offset = 0x113181, .val = 0 },
+- { .offset = 0x213181, .val = 0 },
+- { .offset = 0x100d0, .val = 0 },
+- { .offset = 0x1100d0, .val = 0 },
+- { .offset = 0x2100d0, .val = 0 },
+- { .offset = 0x101d0, .val = 0 },
+- { .offset = 0x1101d0, .val = 0 },
+- { .offset = 0x2101d0, .val = 0 },
+- { .offset = 0x110d0, .val = 0 },
+- { .offset = 0x1110d0, .val = 0 },
+- { .offset = 0x2110d0, .val = 0 },
+- { .offset = 0x111d0, .val = 0 },
+- { .offset = 0x1111d0, .val = 0 },
+- { .offset = 0x2111d0, .val = 0 },
+- { .offset = 0x120d0, .val = 0 },
+- { .offset = 0x1120d0, .val = 0 },
+- { .offset = 0x2120d0, .val = 0 },
+- { .offset = 0x121d0, .val = 0 },
+- { .offset = 0x1121d0, .val = 0 },
+- { .offset = 0x2121d0, .val = 0 },
+- { .offset = 0x130d0, .val = 0 },
+- { .offset = 0x1130d0, .val = 0 },
+- { .offset = 0x2130d0, .val = 0 },
+- { .offset = 0x131d0, .val = 0 },
+- { .offset = 0x1131d0, .val = 0 },
+- { .offset = 0x2131d0, .val = 0 },
+- { .offset = 0x100d1, .val = 0 },
+- { .offset = 0x1100d1, .val = 0 },
+- { .offset = 0x2100d1, .val = 0 },
+- { .offset = 0x101d1, .val = 0 },
+- { .offset = 0x1101d1, .val = 0 },
+- { .offset = 0x2101d1, .val = 0 },
+- { .offset = 0x110d1, .val = 0 },
+- { .offset = 0x1110d1, .val = 0 },
+- { .offset = 0x2110d1, .val = 0 },
+- { .offset = 0x111d1, .val = 0 },
+- { .offset = 0x1111d1, .val = 0 },
+- { .offset = 0x2111d1, .val = 0 },
+- { .offset = 0x120d1, .val = 0 },
+- { .offset = 0x1120d1, .val = 0 },
+- { .offset = 0x2120d1, .val = 0 },
+- { .offset = 0x121d1, .val = 0 },
+- { .offset = 0x1121d1, .val = 0 },
+- { .offset = 0x2121d1, .val = 0 },
+- { .offset = 0x130d1, .val = 0 },
+- { .offset = 0x1130d1, .val = 0 },
+- { .offset = 0x2130d1, .val = 0 },
+- { .offset = 0x131d1, .val = 0 },
+- { .offset = 0x1131d1, .val = 0 },
+- { .offset = 0x2131d1, .val = 0 },
+- { .offset = 0x10068, .val = 0 },
+- { .offset = 0x10168, .val = 0 },
+- { .offset = 0x10268, .val = 0 },
+- { .offset = 0x10368, .val = 0 },
+- { .offset = 0x10468, .val = 0 },
+- { .offset = 0x10568, .val = 0 },
+- { .offset = 0x10668, .val = 0 },
+- { .offset = 0x10768, .val = 0 },
+- { .offset = 0x10868, .val = 0 },
+- { .offset = 0x11068, .val = 0 },
+- { .offset = 0x11168, .val = 0 },
+- { .offset = 0x11268, .val = 0 },
+- { .offset = 0x11368, .val = 0 },
+- { .offset = 0x11468, .val = 0 },
+- { .offset = 0x11568, .val = 0 },
+- { .offset = 0x11668, .val = 0 },
+- { .offset = 0x11768, .val = 0 },
+- { .offset = 0x11868, .val = 0 },
+- { .offset = 0x12068, .val = 0 },
+- { .offset = 0x12168, .val = 0 },
+- { .offset = 0x12268, .val = 0 },
+- { .offset = 0x12368, .val = 0 },
+- { .offset = 0x12468, .val = 0 },
+- { .offset = 0x12568, .val = 0 },
+- { .offset = 0x12668, .val = 0 },
+- { .offset = 0x12768, .val = 0 },
+- { .offset = 0x12868, .val = 0 },
+- { .offset = 0x13068, .val = 0 },
+- { .offset = 0x13168, .val = 0 },
+- { .offset = 0x13268, .val = 0 },
+- { .offset = 0x13368, .val = 0 },
+- { .offset = 0x13468, .val = 0 },
+- { .offset = 0x13568, .val = 0 },
+- { .offset = 0x13668, .val = 0 },
+- { .offset = 0x13768, .val = 0 },
+- { .offset = 0x13868, .val = 0 },
+- { .offset = 0x10069, .val = 0 },
+- { .offset = 0x10169, .val = 0 },
+- { .offset = 0x10269, .val = 0 },
+- { .offset = 0x10369, .val = 0 },
+- { .offset = 0x10469, .val = 0 },
+- { .offset = 0x10569, .val = 0 },
+- { .offset = 0x10669, .val = 0 },
+- { .offset = 0x10769, .val = 0 },
+- { .offset = 0x10869, .val = 0 },
+- { .offset = 0x11069, .val = 0 },
+- { .offset = 0x11169, .val = 0 },
+- { .offset = 0x11269, .val = 0 },
+- { .offset = 0x11369, .val = 0 },
+- { .offset = 0x11469, .val = 0 },
+- { .offset = 0x11569, .val = 0 },
+- { .offset = 0x11669, .val = 0 },
+- { .offset = 0x11769, .val = 0 },
+- { .offset = 0x11869, .val = 0 },
+- { .offset = 0x12069, .val = 0 },
+- { .offset = 0x12169, .val = 0 },
+- { .offset = 0x12269, .val = 0 },
+- { .offset = 0x12369, .val = 0 },
+- { .offset = 0x12469, .val = 0 },
+- { .offset = 0x12569, .val = 0 },
+- { .offset = 0x12669, .val = 0 },
+- { .offset = 0x12769, .val = 0 },
+- { .offset = 0x12869, .val = 0 },
+- { .offset = 0x13069, .val = 0 },
+- { .offset = 0x13169, .val = 0 },
+- { .offset = 0x13269, .val = 0 },
+- { .offset = 0x13369, .val = 0 },
+- { .offset = 0x13469, .val = 0 },
+- { .offset = 0x13569, .val = 0 },
+- { .offset = 0x13669, .val = 0 },
+- { .offset = 0x13769, .val = 0 },
+- { .offset = 0x13869, .val = 0 },
+- { .offset = 0x1008c, .val = 0 },
+- { .offset = 0x11008c, .val = 0 },
+- { .offset = 0x21008c, .val = 0 },
+- { .offset = 0x1018c, .val = 0 },
+- { .offset = 0x11018c, .val = 0 },
+- { .offset = 0x21018c, .val = 0 },
+- { .offset = 0x1108c, .val = 0 },
+- { .offset = 0x11108c, .val = 0 },
+- { .offset = 0x21108c, .val = 0 },
+- { .offset = 0x1118c, .val = 0 },
+- { .offset = 0x11118c, .val = 0 },
+- { .offset = 0x21118c, .val = 0 },
+- { .offset = 0x1208c, .val = 0 },
+- { .offset = 0x11208c, .val = 0 },
+- { .offset = 0x21208c, .val = 0 },
+- { .offset = 0x1218c, .val = 0 },
+- { .offset = 0x11218c, .val = 0 },
+- { .offset = 0x21218c, .val = 0 },
+- { .offset = 0x1308c, .val = 0 },
+- { .offset = 0x11308c, .val = 0 },
+- { .offset = 0x21308c, .val = 0 },
+- { .offset = 0x1318c, .val = 0 },
+- { .offset = 0x11318c, .val = 0 },
+- { .offset = 0x21318c, .val = 0 },
+- { .offset = 0x1008d, .val = 0 },
+- { .offset = 0x11008d, .val = 0 },
+- { .offset = 0x21008d, .val = 0 },
+- { .offset = 0x1018d, .val = 0 },
+- { .offset = 0x11018d, .val = 0 },
+- { .offset = 0x21018d, .val = 0 },
+- { .offset = 0x1108d, .val = 0 },
+- { .offset = 0x11108d, .val = 0 },
+- { .offset = 0x21108d, .val = 0 },
+- { .offset = 0x1118d, .val = 0 },
+- { .offset = 0x11118d, .val = 0 },
+- { .offset = 0x21118d, .val = 0 },
+- { .offset = 0x1208d, .val = 0 },
+- { .offset = 0x11208d, .val = 0 },
+- { .offset = 0x21208d, .val = 0 },
+- { .offset = 0x1218d, .val = 0 },
+- { .offset = 0x11218d, .val = 0 },
+- { .offset = 0x21218d, .val = 0 },
+- { .offset = 0x1308d, .val = 0 },
+- { .offset = 0x11308d, .val = 0 },
+- { .offset = 0x21308d, .val = 0 },
+- { .offset = 0x1318d, .val = 0 },
+- { .offset = 0x11318d, .val = 0 },
+- { .offset = 0x21318d, .val = 0 },
+- { .offset = 0x100c0, .val = 0 },
+- { .offset = 0x1100c0, .val = 0 },
+- { .offset = 0x2100c0, .val = 0 },
+- { .offset = 0x101c0, .val = 0 },
+- { .offset = 0x1101c0, .val = 0 },
+- { .offset = 0x2101c0, .val = 0 },
+- { .offset = 0x102c0, .val = 0 },
+- { .offset = 0x1102c0, .val = 0 },
+- { .offset = 0x2102c0, .val = 0 },
+- { .offset = 0x103c0, .val = 0 },
+- { .offset = 0x1103c0, .val = 0 },
+- { .offset = 0x2103c0, .val = 0 },
+- { .offset = 0x104c0, .val = 0 },
+- { .offset = 0x1104c0, .val = 0 },
+- { .offset = 0x2104c0, .val = 0 },
+- { .offset = 0x105c0, .val = 0 },
+- { .offset = 0x1105c0, .val = 0 },
+- { .offset = 0x2105c0, .val = 0 },
+- { .offset = 0x106c0, .val = 0 },
+- { .offset = 0x1106c0, .val = 0 },
+- { .offset = 0x2106c0, .val = 0 },
+- { .offset = 0x107c0, .val = 0 },
+- { .offset = 0x1107c0, .val = 0 },
+- { .offset = 0x2107c0, .val = 0 },
+- { .offset = 0x108c0, .val = 0 },
+- { .offset = 0x1108c0, .val = 0 },
+- { .offset = 0x2108c0, .val = 0 },
+- { .offset = 0x110c0, .val = 0 },
+- { .offset = 0x1110c0, .val = 0 },
+- { .offset = 0x2110c0, .val = 0 },
+- { .offset = 0x111c0, .val = 0 },
+- { .offset = 0x1111c0, .val = 0 },
+- { .offset = 0x2111c0, .val = 0 },
+- { .offset = 0x112c0, .val = 0 },
+- { .offset = 0x1112c0, .val = 0 },
+- { .offset = 0x2112c0, .val = 0 },
+- { .offset = 0x113c0, .val = 0 },
+- { .offset = 0x1113c0, .val = 0 },
+- { .offset = 0x2113c0, .val = 0 },
+- { .offset = 0x114c0, .val = 0 },
+- { .offset = 0x1114c0, .val = 0 },
+- { .offset = 0x2114c0, .val = 0 },
+- { .offset = 0x115c0, .val = 0 },
+- { .offset = 0x1115c0, .val = 0 },
+- { .offset = 0x2115c0, .val = 0 },
+- { .offset = 0x116c0, .val = 0 },
+- { .offset = 0x1116c0, .val = 0 },
+- { .offset = 0x2116c0, .val = 0 },
+- { .offset = 0x117c0, .val = 0 },
+- { .offset = 0x1117c0, .val = 0 },
+- { .offset = 0x2117c0, .val = 0 },
+- { .offset = 0x118c0, .val = 0 },
+- { .offset = 0x1118c0, .val = 0 },
+- { .offset = 0x2118c0, .val = 0 },
+- { .offset = 0x120c0, .val = 0 },
+- { .offset = 0x1120c0, .val = 0 },
+- { .offset = 0x2120c0, .val = 0 },
+- { .offset = 0x121c0, .val = 0 },
+- { .offset = 0x1121c0, .val = 0 },
+- { .offset = 0x2121c0, .val = 0 },
+- { .offset = 0x122c0, .val = 0 },
+- { .offset = 0x1122c0, .val = 0 },
+- { .offset = 0x2122c0, .val = 0 },
+- { .offset = 0x123c0, .val = 0 },
+- { .offset = 0x1123c0, .val = 0 },
+- { .offset = 0x2123c0, .val = 0 },
+- { .offset = 0x124c0, .val = 0 },
+- { .offset = 0x1124c0, .val = 0 },
+- { .offset = 0x2124c0, .val = 0 },
+- { .offset = 0x125c0, .val = 0 },
+- { .offset = 0x1125c0, .val = 0 },
+- { .offset = 0x2125c0, .val = 0 },
+- { .offset = 0x126c0, .val = 0 },
+- { .offset = 0x1126c0, .val = 0 },
+- { .offset = 0x2126c0, .val = 0 },
+- { .offset = 0x127c0, .val = 0 },
+- { .offset = 0x1127c0, .val = 0 },
+- { .offset = 0x2127c0, .val = 0 },
+- { .offset = 0x128c0, .val = 0 },
+- { .offset = 0x1128c0, .val = 0 },
+- { .offset = 0x2128c0, .val = 0 },
+- { .offset = 0x130c0, .val = 0 },
+- { .offset = 0x1130c0, .val = 0 },
+- { .offset = 0x2130c0, .val = 0 },
+- { .offset = 0x131c0, .val = 0 },
+- { .offset = 0x1131c0, .val = 0 },
+- { .offset = 0x2131c0, .val = 0 },
+- { .offset = 0x132c0, .val = 0 },
+- { .offset = 0x1132c0, .val = 0 },
+- { .offset = 0x2132c0, .val = 0 },
+- { .offset = 0x133c0, .val = 0 },
+- { .offset = 0x1133c0, .val = 0 },
+- { .offset = 0x2133c0, .val = 0 },
+- { .offset = 0x134c0, .val = 0 },
+- { .offset = 0x1134c0, .val = 0 },
+- { .offset = 0x2134c0, .val = 0 },
+- { .offset = 0x135c0, .val = 0 },
+- { .offset = 0x1135c0, .val = 0 },
+- { .offset = 0x2135c0, .val = 0 },
+- { .offset = 0x136c0, .val = 0 },
+- { .offset = 0x1136c0, .val = 0 },
+- { .offset = 0x2136c0, .val = 0 },
+- { .offset = 0x137c0, .val = 0 },
+- { .offset = 0x1137c0, .val = 0 },
+- { .offset = 0x2137c0, .val = 0 },
+- { .offset = 0x138c0, .val = 0 },
+- { .offset = 0x1138c0, .val = 0 },
+- { .offset = 0x2138c0, .val = 0 },
+- { .offset = 0x100c1, .val = 0 },
+- { .offset = 0x1100c1, .val = 0 },
+- { .offset = 0x2100c1, .val = 0 },
+- { .offset = 0x101c1, .val = 0 },
+- { .offset = 0x1101c1, .val = 0 },
+- { .offset = 0x2101c1, .val = 0 },
+- { .offset = 0x102c1, .val = 0 },
+- { .offset = 0x1102c1, .val = 0 },
+- { .offset = 0x2102c1, .val = 0 },
+- { .offset = 0x103c1, .val = 0 },
+- { .offset = 0x1103c1, .val = 0 },
+- { .offset = 0x2103c1, .val = 0 },
+- { .offset = 0x104c1, .val = 0 },
+- { .offset = 0x1104c1, .val = 0 },
+- { .offset = 0x2104c1, .val = 0 },
+- { .offset = 0x105c1, .val = 0 },
+- { .offset = 0x1105c1, .val = 0 },
+- { .offset = 0x2105c1, .val = 0 },
+- { .offset = 0x106c1, .val = 0 },
+- { .offset = 0x1106c1, .val = 0 },
+- { .offset = 0x2106c1, .val = 0 },
+- { .offset = 0x107c1, .val = 0 },
+- { .offset = 0x1107c1, .val = 0 },
+- { .offset = 0x2107c1, .val = 0 },
+- { .offset = 0x108c1, .val = 0 },
+- { .offset = 0x1108c1, .val = 0 },
+- { .offset = 0x2108c1, .val = 0 },
+- { .offset = 0x110c1, .val = 0 },
+- { .offset = 0x1110c1, .val = 0 },
+- { .offset = 0x2110c1, .val = 0 },
+- { .offset = 0x111c1, .val = 0 },
+- { .offset = 0x1111c1, .val = 0 },
+- { .offset = 0x2111c1, .val = 0 },
+- { .offset = 0x112c1, .val = 0 },
+- { .offset = 0x1112c1, .val = 0 },
+- { .offset = 0x2112c1, .val = 0 },
+- { .offset = 0x113c1, .val = 0 },
+- { .offset = 0x1113c1, .val = 0 },
+- { .offset = 0x2113c1, .val = 0 },
+- { .offset = 0x114c1, .val = 0 },
+- { .offset = 0x1114c1, .val = 0 },
+- { .offset = 0x2114c1, .val = 0 },
+- { .offset = 0x115c1, .val = 0 },
+- { .offset = 0x1115c1, .val = 0 },
+- { .offset = 0x2115c1, .val = 0 },
+- { .offset = 0x116c1, .val = 0 },
+- { .offset = 0x1116c1, .val = 0 },
+- { .offset = 0x2116c1, .val = 0 },
+- { .offset = 0x117c1, .val = 0 },
+- { .offset = 0x1117c1, .val = 0 },
+- { .offset = 0x2117c1, .val = 0 },
+- { .offset = 0x118c1, .val = 0 },
+- { .offset = 0x1118c1, .val = 0 },
+- { .offset = 0x2118c1, .val = 0 },
+- { .offset = 0x120c1, .val = 0 },
+- { .offset = 0x1120c1, .val = 0 },
+- { .offset = 0x2120c1, .val = 0 },
+- { .offset = 0x121c1, .val = 0 },
+- { .offset = 0x1121c1, .val = 0 },
+- { .offset = 0x2121c1, .val = 0 },
+- { .offset = 0x122c1, .val = 0 },
+- { .offset = 0x1122c1, .val = 0 },
+- { .offset = 0x2122c1, .val = 0 },
+- { .offset = 0x123c1, .val = 0 },
+- { .offset = 0x1123c1, .val = 0 },
+- { .offset = 0x2123c1, .val = 0 },
+- { .offset = 0x124c1, .val = 0 },
+- { .offset = 0x1124c1, .val = 0 },
+- { .offset = 0x2124c1, .val = 0 },
+- { .offset = 0x125c1, .val = 0 },
+- { .offset = 0x1125c1, .val = 0 },
+- { .offset = 0x2125c1, .val = 0 },
+- { .offset = 0x126c1, .val = 0 },
+- { .offset = 0x1126c1, .val = 0 },
+- { .offset = 0x2126c1, .val = 0 },
+- { .offset = 0x127c1, .val = 0 },
+- { .offset = 0x1127c1, .val = 0 },
+- { .offset = 0x2127c1, .val = 0 },
+- { .offset = 0x128c1, .val = 0 },
+- { .offset = 0x1128c1, .val = 0 },
+- { .offset = 0x2128c1, .val = 0 },
+- { .offset = 0x130c1, .val = 0 },
+- { .offset = 0x1130c1, .val = 0 },
+- { .offset = 0x2130c1, .val = 0 },
+- { .offset = 0x131c1, .val = 0 },
+- { .offset = 0x1131c1, .val = 0 },
+- { .offset = 0x2131c1, .val = 0 },
+- { .offset = 0x132c1, .val = 0 },
+- { .offset = 0x1132c1, .val = 0 },
+- { .offset = 0x2132c1, .val = 0 },
+- { .offset = 0x133c1, .val = 0 },
+- { .offset = 0x1133c1, .val = 0 },
+- { .offset = 0x2133c1, .val = 0 },
+- { .offset = 0x134c1, .val = 0 },
+- { .offset = 0x1134c1, .val = 0 },
+- { .offset = 0x2134c1, .val = 0 },
+- { .offset = 0x135c1, .val = 0 },
+- { .offset = 0x1135c1, .val = 0 },
+- { .offset = 0x2135c1, .val = 0 },
+- { .offset = 0x136c1, .val = 0 },
+- { .offset = 0x1136c1, .val = 0 },
+- { .offset = 0x2136c1, .val = 0 },
+- { .offset = 0x137c1, .val = 0 },
+- { .offset = 0x1137c1, .val = 0 },
+- { .offset = 0x2137c1, .val = 0 },
+- { .offset = 0x138c1, .val = 0 },
+- { .offset = 0x1138c1, .val = 0 },
+- { .offset = 0x2138c1, .val = 0 },
+- { .offset = 0x10020, .val = 0 },
+- { .offset = 0x110020, .val = 0 },
+- { .offset = 0x210020, .val = 0 },
+- { .offset = 0x11020, .val = 0 },
+- { .offset = 0x111020, .val = 0 },
+- { .offset = 0x211020, .val = 0 },
+- { .offset = 0x12020, .val = 0 },
+- { .offset = 0x112020, .val = 0 },
+- { .offset = 0x212020, .val = 0 },
+- { .offset = 0x13020, .val = 0 },
+- { .offset = 0x113020, .val = 0 },
+- { .offset = 0x213020, .val = 0 },
+- { .offset = 0x20072, .val = 0 },
+- { .offset = 0x20073, .val = 0 },
+- { .offset = 0x20074, .val = 0 },
+- { .offset = 0x100aa, .val = 0 },
+- { .offset = 0x110aa, .val = 0 },
+- { .offset = 0x120aa, .val = 0 },
+- { .offset = 0x130aa, .val = 0 },
+- { .offset = 0x20010, .val = 0 },
+- { .offset = 0x120010, .val = 0 },
+- { .offset = 0x220010, .val = 0 },
+- { .offset = 0x20011, .val = 0 },
+- { .offset = 0x120011, .val = 0 },
+- { .offset = 0x220011, .val = 0 },
+- { .offset = 0x100ae, .val = 0 },
+- { .offset = 0x1100ae, .val = 0 },
+- { .offset = 0x2100ae, .val = 0 },
+- { .offset = 0x100af, .val = 0 },
+- { .offset = 0x1100af, .val = 0 },
+- { .offset = 0x2100af, .val = 0 },
+- { .offset = 0x110ae, .val = 0 },
+- { .offset = 0x1110ae, .val = 0 },
+- { .offset = 0x2110ae, .val = 0 },
+- { .offset = 0x110af, .val = 0 },
+- { .offset = 0x1110af, .val = 0 },
+- { .offset = 0x2110af, .val = 0 },
+- { .offset = 0x120ae, .val = 0 },
+- { .offset = 0x1120ae, .val = 0 },
+- { .offset = 0x2120ae, .val = 0 },
+- { .offset = 0x120af, .val = 0 },
+- { .offset = 0x1120af, .val = 0 },
+- { .offset = 0x2120af, .val = 0 },
+- { .offset = 0x130ae, .val = 0 },
+- { .offset = 0x1130ae, .val = 0 },
+- { .offset = 0x2130ae, .val = 0 },
+- { .offset = 0x130af, .val = 0 },
+- { .offset = 0x1130af, .val = 0 },
+- { .offset = 0x2130af, .val = 0 },
+- { .offset = 0x20020, .val = 0 },
+- { .offset = 0x120020, .val = 0 },
+- { .offset = 0x220020, .val = 0 },
+- { .offset = 0x100a0, .val = 0 },
+- { .offset = 0x100a1, .val = 0 },
+- { .offset = 0x100a2, .val = 0 },
+- { .offset = 0x100a3, .val = 0 },
+- { .offset = 0x100a4, .val = 0 },
+- { .offset = 0x100a5, .val = 0 },
+- { .offset = 0x100a6, .val = 0 },
+- { .offset = 0x100a7, .val = 0 },
+- { .offset = 0x110a0, .val = 0 },
+- { .offset = 0x110a1, .val = 0 },
+- { .offset = 0x110a2, .val = 0 },
+- { .offset = 0x110a3, .val = 0 },
+- { .offset = 0x110a4, .val = 0 },
+- { .offset = 0x110a5, .val = 0 },
+- { .offset = 0x110a6, .val = 0 },
+- { .offset = 0x110a7, .val = 0 },
+- { .offset = 0x120a0, .val = 0 },
+- { .offset = 0x120a1, .val = 0 },
+- { .offset = 0x120a2, .val = 0 },
+- { .offset = 0x120a3, .val = 0 },
+- { .offset = 0x120a4, .val = 0 },
+- { .offset = 0x120a5, .val = 0 },
+- { .offset = 0x120a6, .val = 0 },
+- { .offset = 0x120a7, .val = 0 },
+- { .offset = 0x130a0, .val = 0 },
+- { .offset = 0x130a1, .val = 0 },
+- { .offset = 0x130a2, .val = 0 },
+- { .offset = 0x130a3, .val = 0 },
+- { .offset = 0x130a4, .val = 0 },
+- { .offset = 0x130a5, .val = 0 },
+- { .offset = 0x130a6, .val = 0 },
+- { .offset = 0x130a7, .val = 0 },
+- { .offset = 0x2007c, .val = 0 },
+- { .offset = 0x12007c, .val = 0 },
+- { .offset = 0x22007c, .val = 0 },
+- { .offset = 0x2007d, .val = 0 },
+- { .offset = 0x12007d, .val = 0 },
+- { .offset = 0x22007d, .val = 0 },
+- { .offset = 0x400fd, .val = 0 },
+- { .offset = 0x400c0, .val = 0 },
+- { .offset = 0x90201, .val = 0 },
+- { .offset = 0x190201, .val = 0 },
+- { .offset = 0x290201, .val = 0 },
+- { .offset = 0x90202, .val = 0 },
+- { .offset = 0x190202, .val = 0 },
+- { .offset = 0x290202, .val = 0 },
+- { .offset = 0x90203, .val = 0 },
+- { .offset = 0x190203, .val = 0 },
+- { .offset = 0x290203, .val = 0 },
+- { .offset = 0x90204, .val = 0 },
+- { .offset = 0x190204, .val = 0 },
+- { .offset = 0x290204, .val = 0 },
+- { .offset = 0x90205, .val = 0 },
+- { .offset = 0x190205, .val = 0 },
+- { .offset = 0x290205, .val = 0 },
+- { .offset = 0x90206, .val = 0 },
+- { .offset = 0x190206, .val = 0 },
+- { .offset = 0x290206, .val = 0 },
+- { .offset = 0x90207, .val = 0 },
+- { .offset = 0x190207, .val = 0 },
+- { .offset = 0x290207, .val = 0 },
+- { .offset = 0x90208, .val = 0 },
+- { .offset = 0x190208, .val = 0 },
+- { .offset = 0x290208, .val = 0 },
+- { .offset = 0x10062, .val = 0 },
+- { .offset = 0x10162, .val = 0 },
+- { .offset = 0x10262, .val = 0 },
+- { .offset = 0x10362, .val = 0 },
+- { .offset = 0x10462, .val = 0 },
+- { .offset = 0x10562, .val = 0 },
+- { .offset = 0x10662, .val = 0 },
+- { .offset = 0x10762, .val = 0 },
+- { .offset = 0x10862, .val = 0 },
+- { .offset = 0x11062, .val = 0 },
+- { .offset = 0x11162, .val = 0 },
+- { .offset = 0x11262, .val = 0 },
+- { .offset = 0x11362, .val = 0 },
+- { .offset = 0x11462, .val = 0 },
+- { .offset = 0x11562, .val = 0 },
+- { .offset = 0x11662, .val = 0 },
+- { .offset = 0x11762, .val = 0 },
+- { .offset = 0x11862, .val = 0 },
+- { .offset = 0x12062, .val = 0 },
+- { .offset = 0x12162, .val = 0 },
+- { .offset = 0x12262, .val = 0 },
+- { .offset = 0x12362, .val = 0 },
+- { .offset = 0x12462, .val = 0 },
+- { .offset = 0x12562, .val = 0 },
+- { .offset = 0x12662, .val = 0 },
+- { .offset = 0x12762, .val = 0 },
+- { .offset = 0x12862, .val = 0 },
+- { .offset = 0x13062, .val = 0 },
+- { .offset = 0x13162, .val = 0 },
+- { .offset = 0x13262, .val = 0 },
+- { .offset = 0x13362, .val = 0 },
+- { .offset = 0x13462, .val = 0 },
+- { .offset = 0x13562, .val = 0 },
+- { .offset = 0x13662, .val = 0 },
+- { .offset = 0x13762, .val = 0 },
+- { .offset = 0x13862, .val = 0 },
+- { .offset = 0x20077, .val = 0 },
+- { .offset = 0x10001, .val = 0 },
+- { .offset = 0x11001, .val = 0 },
+- { .offset = 0x12001, .val = 0 },
+- { .offset = 0x13001, .val = 0 },
+- { .offset = 0x10040, .val = 0 },
+- { .offset = 0x10140, .val = 0 },
+- { .offset = 0x10240, .val = 0 },
+- { .offset = 0x10340, .val = 0 },
+- { .offset = 0x10440, .val = 0 },
+- { .offset = 0x10540, .val = 0 },
+- { .offset = 0x10640, .val = 0 },
+- { .offset = 0x10740, .val = 0 },
+- { .offset = 0x10840, .val = 0 },
+- { .offset = 0x10030, .val = 0 },
+- { .offset = 0x10130, .val = 0 },
+- { .offset = 0x10230, .val = 0 },
+- { .offset = 0x10330, .val = 0 },
+- { .offset = 0x10430, .val = 0 },
+- { .offset = 0x10530, .val = 0 },
+- { .offset = 0x10630, .val = 0 },
+- { .offset = 0x10730, .val = 0 },
+- { .offset = 0x10830, .val = 0 },
+- { .offset = 0x11040, .val = 0 },
+- { .offset = 0x11140, .val = 0 },
+- { .offset = 0x11240, .val = 0 },
+- { .offset = 0x11340, .val = 0 },
+- { .offset = 0x11440, .val = 0 },
+- { .offset = 0x11540, .val = 0 },
+- { .offset = 0x11640, .val = 0 },
+- { .offset = 0x11740, .val = 0 },
+- { .offset = 0x11840, .val = 0 },
+- { .offset = 0x11030, .val = 0 },
+- { .offset = 0x11130, .val = 0 },
+- { .offset = 0x11230, .val = 0 },
+- { .offset = 0x11330, .val = 0 },
+- { .offset = 0x11430, .val = 0 },
+- { .offset = 0x11530, .val = 0 },
+- { .offset = 0x11630, .val = 0 },
+- { .offset = 0x11730, .val = 0 },
+- { .offset = 0x11830, .val = 0 },
+- { .offset = 0x12040, .val = 0 },
+- { .offset = 0x12140, .val = 0 },
+- { .offset = 0x12240, .val = 0 },
+- { .offset = 0x12340, .val = 0 },
+- { .offset = 0x12440, .val = 0 },
+- { .offset = 0x12540, .val = 0 },
+- { .offset = 0x12640, .val = 0 },
+- { .offset = 0x12740, .val = 0 },
+- { .offset = 0x12840, .val = 0 },
+- { .offset = 0x12030, .val = 0 },
+- { .offset = 0x12130, .val = 0 },
+- { .offset = 0x12230, .val = 0 },
+- { .offset = 0x12330, .val = 0 },
+- { .offset = 0x12430, .val = 0 },
+- { .offset = 0x12530, .val = 0 },
+- { .offset = 0x12630, .val = 0 },
+- { .offset = 0x12730, .val = 0 },
+- { .offset = 0x12830, .val = 0 },
+- { .offset = 0x13040, .val = 0 },
+- { .offset = 0x13140, .val = 0 },
+- { .offset = 0x13240, .val = 0 },
+- { .offset = 0x13340, .val = 0 },
+- { .offset = 0x13440, .val = 0 },
+- { .offset = 0x13540, .val = 0 },
+- { .offset = 0x13640, .val = 0 },
+- { .offset = 0x13740, .val = 0 },
+- { .offset = 0x13840, .val = 0 },
+- { .offset = 0x13030, .val = 0 },
+- { .offset = 0x13130, .val = 0 },
+- { .offset = 0x13230, .val = 0 },
+- { .offset = 0x13330, .val = 0 },
+- { .offset = 0x13430, .val = 0 },
+- { .offset = 0x13530, .val = 0 },
+- { .offset = 0x13630, .val = 0 },
+- { .offset = 0x13730, .val = 0 },
+- { .offset = 0x13830, .val = 0 },
++ { .offset = 0x100a0, .val = 0x0 }, //DDR_PHY_Dq0LnSel_0
++ { .offset = 0x100a1, .val = 0x0 }, //DDR_PHY_Dq1LnSel_0
++ { .offset = 0x100a2, .val = 0x0 }, //DDR_PHY_Dq2LnSel_0
++ { .offset = 0x100a3, .val = 0x0 }, //DDR_PHY_Dq3LnSel_0
++ { .offset = 0x100a4, .val = 0x0 }, //DDR_PHY_Dq4LnSel_0
++ { .offset = 0x100a5, .val = 0x0 }, //DDR_PHY_Dq5LnSel_0
++ { .offset = 0x100a6, .val = 0x0 }, //DDR_PHY_Dq6LnSel_0
++ { .offset = 0x100a7, .val = 0x0 }, //DDR_PHY_Dq7LnSel_0
++ { .offset = 0x110a0, .val = 0x0 }, //DDR_PHY_Dq0LnSel_1
++ { .offset = 0x110a1, .val = 0x0 }, //DDR_PHY_Dq1LnSel_1
++ { .offset = 0x110a2, .val = 0x0 }, //DDR_PHY_Dq2LnSel_1
++ { .offset = 0x110a3, .val = 0x0 }, //DDR_PHY_Dq3LnSel_1
++ { .offset = 0x110a4, .val = 0x0 }, //DDR_PHY_Dq4LnSel_1
++ { .offset = 0x110a5, .val = 0x0 }, //DDR_PHY_Dq5LnSel_1
++ { .offset = 0x110a6, .val = 0x0 }, //DDR_PHY_Dq6LnSel_1
++ { .offset = 0x110a7, .val = 0x0 }, //DDR_PHY_Dq7LnSel_1
++ { .offset = 0x120a0, .val = 0x0 }, //DDR_PHY_Dq0LnSel_2
++ { .offset = 0x120a1, .val = 0x0 }, //DDR_PHY_Dq1LnSel_2
++ { .offset = 0x120a2, .val = 0x0 }, //DDR_PHY_Dq2LnSel_2
++ { .offset = 0x120a3, .val = 0x0 }, //DDR_PHY_Dq3LnSel_2
++ { .offset = 0x120a4, .val = 0x0 }, //DDR_PHY_Dq4LnSel_2
++ { .offset = 0x120a5, .val = 0x0 }, //DDR_PHY_Dq5LnSel_2
++ { .offset = 0x120a6, .val = 0x0 }, //DDR_PHY_Dq6LnSel_2
++ { .offset = 0x120a7, .val = 0x0 }, //DDR_PHY_Dq7LnSel_2
++ { .offset = 0x130a0, .val = 0x0 }, //DDR_PHY_Dq0LnSel_3
++ { .offset = 0x130a1, .val = 0x0 }, //DDR_PHY_Dq1LnSel_3
++ { .offset = 0x130a2, .val = 0x0 }, //DDR_PHY_Dq2LnSel_3
++ { .offset = 0x130a3, .val = 0x0 }, //DDR_PHY_Dq3LnSel_3
++ { .offset = 0x130a4, .val = 0x0 }, //DDR_PHY_Dq4LnSel_3
++ { .offset = 0x130a5, .val = 0x0 }, //DDR_PHY_Dq5LnSel_3
++ { .offset = 0x130a6, .val = 0x0 }, //DDR_PHY_Dq6LnSel_3
++ { .offset = 0x130a7, .val = 0x0 }, //DDR_PHY_Dq7LnSel_3
++
++ { .offset = 0x80, .val = 0 }, // DWC_DDRPHYA_ANIB0_ATxDly_P0
++ { .offset = 0x100080, .val = 0 }, // DWC_DDRPHYA_ANIB0_ATxDly_P1
++ { .offset = 0x200080, .val = 0 }, // DWC_DDRPHYA_ANIB0_ATxDly_P2
++ { .offset = 0x1080, .val = 0 }, // DWC_DDRPHYA_ANIB1_ATxDly_P0
++ { .offset = 0x101080, .val = 0 }, // DWC_DDRPHYA_ANIB1_ATxDly_P0
++ { .offset = 0x201080, .val = 0 }, // DWC_DDRPHYA_ANIB1_ATxDly_P2
++ { .offset = 0x2080, .val = 0 }, // DWC_DDRPHYA_ANIB2_ATxDly_P0
++ { .offset = 0x102080, .val = 0 }, // DWC_DDRPHYA_ANIB2_ATxDly_P1
++ { .offset = 0x202080, .val = 0 }, // DWC_DDRPHYA_ANIB2_ATxDly_P2
++ { .offset = 0x3080, .val = 0 }, // DWC_DDRPHYA_ANIB3_ATxDly_P0
++ { .offset = 0x103080, .val = 0 }, // DWC_DDRPHYA_ANIB3_ATxDly_P1
++ { .offset = 0x203080, .val = 0 }, // DWC_DDRPHYA_ANIB3_ATxDly_P2
++ { .offset = 0x4080, .val = 0 }, // DWC_DDRPHYA_ANIB4_ATxDly_P0
++ { .offset = 0x104080, .val = 0 }, // DWC_DDRPHYA_ANIB4_ATxDly_P1
++ { .offset = 0x204080, .val = 0 }, // DWC_DDRPHYA_ANIB4_ATxDly_P2
++ { .offset = 0x5080, .val = 0 }, // DWC_DDRPHYA_ANIB5_ATxDly_P0
++ { .offset = 0x105080, .val = 0 }, // DWC_DDRPHYA_ANIB5_ATxDly_P1
++ { .offset = 0x205080, .val = 0 }, // DWC_DDRPHYA_ANIB5_ATxDly_P2
++ { .offset = 0x6080, .val = 0 }, // DWC_DDRPHYA_ANIB6_ATxDly_P0
++ { .offset = 0x106080, .val = 0 }, // DWC_DDRPHYA_ANIB6_ATxDly_P1
++ { .offset = 0x206080, .val = 0 }, // DWC_DDRPHYA_ANIB6_ATxDly_P2
++ { .offset = 0x7080, .val = 0 }, // DWC_DDRPHYA_ANIB7_ATxDly_P0
++ { .offset = 0x107080, .val = 0 }, // DWC_DDRPHYA_ANIB7_ATxDly_P1
++ { .offset = 0x207080, .val = 0 }, // DWC_DDRPHYA_ANIB7_ATxDly_P2
++ { .offset = 0x8080, .val = 0 }, // DWC_DDRPHYA_ANIB8_ATxDly_P0
++ { .offset = 0x108080, .val = 0 }, // DWC_DDRPHYA_ANIB8_ATxDly_P1
++ { .offset = 0x208080, .val = 0 }, // DWC_DDRPHYA_ANIB8_ATxDly_P2
++ { .offset = 0x9080, .val = 0 }, // DWC_DDRPHYA_ANIB9_ATxDly_P0
++ { .offset = 0x109080, .val = 0 }, // DWC_DDRPHYA_ANIB9_ATxDly_P1
++ { .offset = 0x209080, .val = 0 }, // DWC_DDRPHYA_ANIB9_ATxDly_P2
++
++ { .offset = 0x10080, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg0_b0_P0
++ { .offset = 0x110080, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg0_b0_P1
++ { .offset = 0x210080, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg0_b0_P2
++ { .offset = 0x10180, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg0_b1_P0
++ { .offset = 0x110180, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg0_b1_P1
++ { .offset = 0x210180, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg0_b1_P2
++ { .offset = 0x11080, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg0_b0_P0
++ { .offset = 0x111080, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg0_b0_P1
++ { .offset = 0x211080, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg0_b0_P2
++ { .offset = 0x11180, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg0_b1_P0
++ { .offset = 0x111180, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg0_b1_P1
++ { .offset = 0x211180, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg0_b1_P2
++ { .offset = 0x12080, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg0_b0_P0
++ { .offset = 0x112080, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg0_b0_P1
++ { .offset = 0x212080, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg0_b0_P2
++ { .offset = 0x12180, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg0_b1_P0
++ { .offset = 0x112180, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg0_b1_P1
++ { .offset = 0x212180, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg0_b1_P2
++ { .offset = 0x13080, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg0_b0_P0
++ { .offset = 0x113080, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg0_b0_P1
++ { .offset = 0x213080, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg0_b0_P2
++ { .offset = 0x13180, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg0_b1_P0
++ { .offset = 0x113180, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg0_b1_P1
++ { .offset = 0x213180, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg0_b1_P2
++
++ { .offset = 0x10081, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg1_b0_P0
++ { .offset = 0x110081, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg1_b0_P1
++ { .offset = 0x210081, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg1_b0_P2
++ { .offset = 0x10181, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg1_b1_P0
++ { .offset = 0x110181, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg1_b1_P1
++ { .offset = 0x210181, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxEnDlyTg1_b1_P2
++ { .offset = 0x11081, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg1_b0_P0
++ { .offset = 0x111081, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg1_b0_P1
++ { .offset = 0x211081, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg1_b0_P2
++ { .offset = 0x11181, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg1_b1_P0
++ { .offset = 0x111181, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg1_b1_P1
++ { .offset = 0x211181, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxEnDlyTg1_b1_P2
++ { .offset = 0x12081, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg1_b0_P0
++ { .offset = 0x112081, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg1_b0_P1
++ { .offset = 0x212081, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg1_b0_P2
++ { .offset = 0x12181, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg1_b1_P0
++ { .offset = 0x112181, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg1_b1_P1
++ { .offset = 0x212181, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxEnDlyTg1_b1_P2
++ { .offset = 0x13081, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg1_b0_P0
++ { .offset = 0x113081, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg1_b0_P1
++ { .offset = 0x213081, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg1_b0_P2
++ { .offset = 0x13181, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg1_b1_P0
++ { .offset = 0x113181, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg1_b1_P1
++ { .offset = 0x213181, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxEnDlyTg1_b1_P2
++
++ { .offset = 0x100d0, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg0_b0_P0
++ { .offset = 0x1100d0, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg0_b0_P1,
++ { .offset = 0x2100d0, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg0_b0_P2,
++ { .offset = 0x101d0, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg0_b1_P0
++ { .offset = 0x1101d0, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg0_b1_P1,
++ { .offset = 0x2101d0, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg0_b1_P2,
++ { .offset = 0x110d0, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg0_b0_P0
++ { .offset = 0x1110d0, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg0_b0_P1,
++ { .offset = 0x2110d0, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg0_b0_P2,
++ { .offset = 0x111d0, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg0_b1_P0
++ { .offset = 0x1111d0, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg0_b1_P1,
++ { .offset = 0x2111d0, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg0_b1_P2,
++ { .offset = 0x120d0, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg0_b0_P0
++ { .offset = 0x1120d0, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg0_b0_P1,
++ { .offset = 0x2120d0, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg0_b0_P2,
++ { .offset = 0x121d0, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg0_b1_P0
++ { .offset = 0x1121d0, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg0_b1_P1,
++ { .offset = 0x2121d0, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg0_b1_P2,
++ { .offset = 0x130d0, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg0_b0_P0
++ { .offset = 0x1130d0, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg0_b0_P1,
++ { .offset = 0x2130d0, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg0_b0_P2,
++ { .offset = 0x131d0, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg0_b1_P0
++ { .offset = 0x1131d0, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg0_b1_P1,
++ { .offset = 0x2131d0, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg0_b1_P2,
++
++ { .offset = 0x100d1, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg1_b0_P0
++ { .offset = 0x1100d1, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg1_b0_P1,
++ { .offset = 0x2100d1, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg1_b0_P2,
++ { .offset = 0x101d1, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg1_b1_P0
++ { .offset = 0x1101d1, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg1_b1_P1,
++ { .offset = 0x2101d1, .val = 0 }, // DWC_DDRPHYA_DBYTE0_TxDqsDlyTg1_b1_P2,
++ { .offset = 0x110d1, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg1_b0_P0
++ { .offset = 0x1110d1, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg1_b0_P1,
++ { .offset = 0x2110d1, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg1_b0_P2,
++ { .offset = 0x111d1, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg1_b1_P0
++ { .offset = 0x1111d1, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg1_b1_P1,
++ { .offset = 0x2111d1, .val = 0 }, // DWC_DDRPHYA_DBYTE1_TxDqsDlyTg1_b1_P2,
++ { .offset = 0x120d1, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg1_b0_P0
++ { .offset = 0x1120d1, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg1_b0_P1,
++ { .offset = 0x2120d1, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg1_b0_P2,
++ { .offset = 0x121d1, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg1_b1_P0
++ { .offset = 0x1121d1, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg1_b1_P1,
++ { .offset = 0x2121d1, .val = 0 }, // DWC_DDRPHYA_DBYTE2_TxDqsDlyTg1_b1_P2,
++ { .offset = 0x130d1, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg1_b0_P0
++ { .offset = 0x1130d1, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg1_b0_P1,
++ { .offset = 0x2130d1, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg1_b0_P2,
++ { .offset = 0x131d1, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg1_b1_P0
++ { .offset = 0x1131d1, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg1_b1_P1,
++ { .offset = 0x2131d1, .val = 0 }, // DWC_DDRPHYA_DBYTE3_TxDqsDlyTg1_b1_P2,
++
++ { .offset = 0x10068, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg0_b0
++ { .offset = 0x10168, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg0_b1
++ { .offset = 0x10268, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg0_b2
++ { .offset = 0x10368, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg0_b3
++ { .offset = 0x10468, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg0_b4
++ { .offset = 0x10568, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg0_b5
++ { .offset = 0x10668, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg0_b6
++ { .offset = 0x10768, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg0_b7
++ { .offset = 0x10868, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg0_dbi
++ { .offset = 0x11068, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg0_b0
++ { .offset = 0x11168, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg0_b1
++ { .offset = 0x11268, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg0_b2
++ { .offset = 0x11368, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg0_b3
++ { .offset = 0x11468, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg0_b4
++ { .offset = 0x11568, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg0_b5
++ { .offset = 0x11668, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg0_b6
++ { .offset = 0x11768, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg0_b7
++ { .offset = 0x11868, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg0_dbi
++ { .offset = 0x12068, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg0_b0
++ { .offset = 0x12168, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg0_b1
++ { .offset = 0x12268, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg0_b2
++ { .offset = 0x12368, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg0_b3
++ { .offset = 0x12468, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg0_b4
++ { .offset = 0x12568, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg0_b5
++ { .offset = 0x12668, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg0_b6
++ { .offset = 0x12768, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg0_b7
++ { .offset = 0x12868, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg0_dbi
++ { .offset = 0x13068, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg0_b0
++ { .offset = 0x13168, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg0_b1
++ { .offset = 0x13268, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg0_b2
++ { .offset = 0x13368, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg0_b3
++ { .offset = 0x13468, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg0_b4
++ { .offset = 0x13568, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg0_b5
++ { .offset = 0x13668, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg0_b6
++ { .offset = 0x13768, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg0_b7
++ { .offset = 0x13868, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg0_dbi
++
++ { .offset = 0x10069, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg1_b0
++ { .offset = 0x10169, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg1_b1
++ { .offset = 0x10269, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg1_b2
++ { .offset = 0x10369, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg1_b3
++ { .offset = 0x10469, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg1_b4
++ { .offset = 0x10569, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg1_b5
++ { .offset = 0x10669, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg1_b6
++ { .offset = 0x10769, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg1_b7
++ { .offset = 0x10869, .val = 0 }, // DWC_DDRPHYA_DBYTE0_RxPBDlyTg1_dbi
++ { .offset = 0x11069, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg1_b0
++ { .offset = 0x11169, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg1_b1
++ { .offset = 0x11269, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg1_b2
++ { .offset = 0x11369, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg1_b3
++ { .offset = 0x11469, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg1_b4
++ { .offset = 0x11569, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg1_b5
++ { .offset = 0x11669, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg1_b6
++ { .offset = 0x11769, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg1_b7
++ { .offset = 0x11869, .val = 0 }, // DWC_DDRPHYA_DBYTE1_RxPBDlyTg1_dbi
++ { .offset = 0x12069, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg1_b0
++ { .offset = 0x12169, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg1_b1
++ { .offset = 0x12269, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg1_b2
++ { .offset = 0x12369, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg1_b3
++ { .offset = 0x12469, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg1_b4
++ { .offset = 0x12569, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg1_b5
++ { .offset = 0x12669, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg1_b6
++ { .offset = 0x12769, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg1_b7
++ { .offset = 0x12869, .val = 0 }, // DWC_DDRPHYA_DBYTE2_RxPBDlyTg1_dbi
++ { .offset = 0x13069, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg1_b0
++ { .offset = 0x13169, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg1_b1
++ { .offset = 0x13269, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg1_b2
++ { .offset = 0x13369, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg1_b3
++ { .offset = 0x13469, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg1_b4
++ { .offset = 0x13569, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg1_b5
++ { .offset = 0x13669, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg1_b6
++ { .offset = 0x13769, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg1_b7
++ { .offset = 0x13869, .val = 0 }, // DWC_DDRPHYA_DBYTE3_RxPBDlyTg1_dbi
++
++ { .offset = 0x1008c, .val = 0 },
++ { .offset = 0x11008c, .val = 0 },
++ { .offset = 0x21008c, .val = 0 },
++ { .offset = 0x1018c, .val = 0 },
++ { .offset = 0x11018c, .val = 0 },
++ { .offset = 0x21018c, .val = 0 },
++ { .offset = 0x1108c, .val = 0 },
++ { .offset = 0x11108c, .val = 0 },
++ { .offset = 0x21108c, .val = 0 },
++ { .offset = 0x1118c, .val = 0 },
++ { .offset = 0x11118c, .val = 0 },
++ { .offset = 0x21118c, .val = 0 },
++ { .offset = 0x1208c, .val = 0 },
++ { .offset = 0x11208c, .val = 0 },
++ { .offset = 0x21208c, .val = 0 },
++ { .offset = 0x1218c, .val = 0 },
++ { .offset = 0x11218c, .val = 0 },
++ { .offset = 0x21218c, .val = 0 },
++ { .offset = 0x1308c, .val = 0 },
++ { .offset = 0x11308c, .val = 0 },
++ { .offset = 0x21308c, .val = 0 },
++ { .offset = 0x1318c, .val = 0 },
++ { .offset = 0x11318c, .val = 0 },
++ { .offset = 0x21318c, .val = 0 },
++ { .offset = 0x1008d, .val = 0 },
++ { .offset = 0x11008d, .val = 0 },
++ { .offset = 0x21008d, .val = 0 },
++ { .offset = 0x1018d, .val = 0 },
++ { .offset = 0x11018d, .val = 0 },
++ { .offset = 0x21018d, .val = 0 },
++ { .offset = 0x1108d, .val = 0 },
++ { .offset = 0x11108d, .val = 0 },
++ { .offset = 0x21108d, .val = 0 },
++ { .offset = 0x1118d, .val = 0 },
++ { .offset = 0x11118d, .val = 0 },
++ { .offset = 0x21118d, .val = 0 },
++ { .offset = 0x1208d, .val = 0 },
++ { .offset = 0x11208d, .val = 0 },
++ { .offset = 0x21208d, .val = 0 },
++ { .offset = 0x1218d, .val = 0 },
++ { .offset = 0x11218d, .val = 0 },
++ { .offset = 0x21218d, .val = 0 },
++ { .offset = 0x1308d, .val = 0 },
++ { .offset = 0x11308d, .val = 0 },
++ { .offset = 0x21308d, .val = 0 },
++ { .offset = 0x1318d, .val = 0 },
++ { .offset = 0x11318d, .val = 0 },
++ { .offset = 0x21318d, .val = 0 },
++ { .offset = 0x100c0, .val = 0 },
++ { .offset = 0x1100c0, .val = 0 },
++ { .offset = 0x2100c0, .val = 0 },
++ { .offset = 0x101c0, .val = 0 },
++ { .offset = 0x1101c0, .val = 0 },
++ { .offset = 0x2101c0, .val = 0 },
++ { .offset = 0x102c0, .val = 0 },
++ { .offset = 0x1102c0, .val = 0 },
++ { .offset = 0x2102c0, .val = 0 },
++ { .offset = 0x103c0, .val = 0 },
++ { .offset = 0x1103c0, .val = 0 },
++ { .offset = 0x2103c0, .val = 0 },
++ { .offset = 0x104c0, .val = 0 },
++ { .offset = 0x1104c0, .val = 0 },
++ { .offset = 0x2104c0, .val = 0 },
++ { .offset = 0x105c0, .val = 0 },
++ { .offset = 0x1105c0, .val = 0 },
++ { .offset = 0x2105c0, .val = 0 },
++ { .offset = 0x106c0, .val = 0 },
++ { .offset = 0x1106c0, .val = 0 },
++ { .offset = 0x2106c0, .val = 0 },
++ { .offset = 0x107c0, .val = 0 },
++ { .offset = 0x1107c0, .val = 0 },
++ { .offset = 0x2107c0, .val = 0 },
++ { .offset = 0x108c0, .val = 0 },
++ { .offset = 0x1108c0, .val = 0 },
++ { .offset = 0x2108c0, .val = 0 },
++ { .offset = 0x110c0, .val = 0 },
++ { .offset = 0x1110c0, .val = 0 },
++ { .offset = 0x2110c0, .val = 0 },
++ { .offset = 0x111c0, .val = 0 },
++ { .offset = 0x1111c0, .val = 0 },
++ { .offset = 0x2111c0, .val = 0 },
++ { .offset = 0x112c0, .val = 0 },
++ { .offset = 0x1112c0, .val = 0 },
++ { .offset = 0x2112c0, .val = 0 },
++ { .offset = 0x113c0, .val = 0 },
++ { .offset = 0x1113c0, .val = 0 },
++ { .offset = 0x2113c0, .val = 0 },
++ { .offset = 0x114c0, .val = 0 },
++ { .offset = 0x1114c0, .val = 0 },
++ { .offset = 0x2114c0, .val = 0 },
++ { .offset = 0x115c0, .val = 0 },
++ { .offset = 0x1115c0, .val = 0 },
++ { .offset = 0x2115c0, .val = 0 },
++ { .offset = 0x116c0, .val = 0 },
++ { .offset = 0x1116c0, .val = 0 },
++ { .offset = 0x2116c0, .val = 0 },
++ { .offset = 0x117c0, .val = 0 },
++ { .offset = 0x1117c0, .val = 0 },
++ { .offset = 0x2117c0, .val = 0 },
++ { .offset = 0x118c0, .val = 0 },
++ { .offset = 0x1118c0, .val = 0 },
++ { .offset = 0x2118c0, .val = 0 },
++ { .offset = 0x120c0, .val = 0 },
++ { .offset = 0x1120c0, .val = 0 },
++ { .offset = 0x2120c0, .val = 0 },
++ { .offset = 0x121c0, .val = 0 },
++ { .offset = 0x1121c0, .val = 0 },
++ { .offset = 0x2121c0, .val = 0 },
++ { .offset = 0x122c0, .val = 0 },
++ { .offset = 0x1122c0, .val = 0 },
++ { .offset = 0x2122c0, .val = 0 },
++ { .offset = 0x123c0, .val = 0 },
++ { .offset = 0x1123c0, .val = 0 },
++ { .offset = 0x2123c0, .val = 0 },
++ { .offset = 0x124c0, .val = 0 },
++ { .offset = 0x1124c0, .val = 0 },
++ { .offset = 0x2124c0, .val = 0 },
++ { .offset = 0x125c0, .val = 0 },
++ { .offset = 0x1125c0, .val = 0 },
++ { .offset = 0x2125c0, .val = 0 },
++ { .offset = 0x126c0, .val = 0 },
++ { .offset = 0x1126c0, .val = 0 },
++ { .offset = 0x2126c0, .val = 0 },
++ { .offset = 0x127c0, .val = 0 },
++ { .offset = 0x1127c0, .val = 0 },
++ { .offset = 0x2127c0, .val = 0 },
++ { .offset = 0x128c0, .val = 0 },
++ { .offset = 0x1128c0, .val = 0 },
++ { .offset = 0x2128c0, .val = 0 },
++ { .offset = 0x130c0, .val = 0 },
++ { .offset = 0x1130c0, .val = 0 },
++ { .offset = 0x2130c0, .val = 0 },
++ { .offset = 0x131c0, .val = 0 },
++ { .offset = 0x1131c0, .val = 0 },
++ { .offset = 0x2131c0, .val = 0 },
++ { .offset = 0x132c0, .val = 0 },
++ { .offset = 0x1132c0, .val = 0 },
++ { .offset = 0x2132c0, .val = 0 },
++ { .offset = 0x133c0, .val = 0 },
++ { .offset = 0x1133c0, .val = 0 },
++ { .offset = 0x2133c0, .val = 0 },
++ { .offset = 0x134c0, .val = 0 },
++ { .offset = 0x1134c0, .val = 0 },
++ { .offset = 0x2134c0, .val = 0 },
++ { .offset = 0x135c0, .val = 0 },
++ { .offset = 0x1135c0, .val = 0 },
++ { .offset = 0x2135c0, .val = 0 },
++ { .offset = 0x136c0, .val = 0 },
++ { .offset = 0x1136c0, .val = 0 },
++ { .offset = 0x2136c0, .val = 0 },
++ { .offset = 0x137c0, .val = 0 },
++ { .offset = 0x1137c0, .val = 0 },
++ { .offset = 0x2137c0, .val = 0 },
++ { .offset = 0x138c0, .val = 0 },
++ { .offset = 0x1138c0, .val = 0 },
++ { .offset = 0x2138c0, .val = 0 },
++ { .offset = 0x100c1, .val = 0 },
++ { .offset = 0x1100c1, .val = 0 },
++ { .offset = 0x2100c1, .val = 0 },
++ { .offset = 0x101c1, .val = 0 },
++ { .offset = 0x1101c1, .val = 0 },
++ { .offset = 0x2101c1, .val = 0 },
++ { .offset = 0x102c1, .val = 0 },
++ { .offset = 0x1102c1, .val = 0 },
++ { .offset = 0x2102c1, .val = 0 },
++ { .offset = 0x103c1, .val = 0 },
++ { .offset = 0x1103c1, .val = 0 },
++ { .offset = 0x2103c1, .val = 0 },
++ { .offset = 0x104c1, .val = 0 },
++ { .offset = 0x1104c1, .val = 0 },
++ { .offset = 0x2104c1, .val = 0 },
++ { .offset = 0x105c1, .val = 0 },
++ { .offset = 0x1105c1, .val = 0 },
++ { .offset = 0x2105c1, .val = 0 },
++ { .offset = 0x106c1, .val = 0 },
++ { .offset = 0x1106c1, .val = 0 },
++ { .offset = 0x2106c1, .val = 0 },
++ { .offset = 0x107c1, .val = 0 },
++ { .offset = 0x1107c1, .val = 0 },
++ { .offset = 0x2107c1, .val = 0 },
++ { .offset = 0x108c1, .val = 0 },
++ { .offset = 0x1108c1, .val = 0 },
++ { .offset = 0x2108c1, .val = 0 },
++ { .offset = 0x110c1, .val = 0 },
++ { .offset = 0x1110c1, .val = 0 },
++ { .offset = 0x2110c1, .val = 0 },
++ { .offset = 0x111c1, .val = 0 },
++ { .offset = 0x1111c1, .val = 0 },
++ { .offset = 0x2111c1, .val = 0 },
++ { .offset = 0x112c1, .val = 0 },
++ { .offset = 0x1112c1, .val = 0 },
++ { .offset = 0x2112c1, .val = 0 },
++ { .offset = 0x113c1, .val = 0 },
++ { .offset = 0x1113c1, .val = 0 },
++ { .offset = 0x2113c1, .val = 0 },
++ { .offset = 0x114c1, .val = 0 },
++ { .offset = 0x1114c1, .val = 0 },
++ { .offset = 0x2114c1, .val = 0 },
++ { .offset = 0x115c1, .val = 0 },
++ { .offset = 0x1115c1, .val = 0 },
++ { .offset = 0x2115c1, .val = 0 },
++ { .offset = 0x116c1, .val = 0 },
++ { .offset = 0x1116c1, .val = 0 },
++ { .offset = 0x2116c1, .val = 0 },
++ { .offset = 0x117c1, .val = 0 },
++ { .offset = 0x1117c1, .val = 0 },
++ { .offset = 0x2117c1, .val = 0 },
++ { .offset = 0x118c1, .val = 0 },
++ { .offset = 0x1118c1, .val = 0 },
++ { .offset = 0x2118c1, .val = 0 },
++ { .offset = 0x120c1, .val = 0 },
++ { .offset = 0x1120c1, .val = 0 },
++ { .offset = 0x2120c1, .val = 0 },
++ { .offset = 0x121c1, .val = 0 },
++ { .offset = 0x1121c1, .val = 0 },
++ { .offset = 0x2121c1, .val = 0 },
++ { .offset = 0x122c1, .val = 0 },
++ { .offset = 0x1122c1, .val = 0 },
++ { .offset = 0x2122c1, .val = 0 },
++ { .offset = 0x123c1, .val = 0 },
++ { .offset = 0x1123c1, .val = 0 },
++ { .offset = 0x2123c1, .val = 0 },
++ { .offset = 0x124c1, .val = 0 },
++ { .offset = 0x1124c1, .val = 0 },
++ { .offset = 0x2124c1, .val = 0 },
++ { .offset = 0x125c1, .val = 0 },
++ { .offset = 0x1125c1, .val = 0 },
++ { .offset = 0x2125c1, .val = 0 },
++ { .offset = 0x126c1, .val = 0 },
++ { .offset = 0x1126c1, .val = 0 },
++ { .offset = 0x2126c1, .val = 0 },
++ { .offset = 0x127c1, .val = 0 },
++ { .offset = 0x1127c1, .val = 0 },
++ { .offset = 0x2127c1, .val = 0 },
++ { .offset = 0x128c1, .val = 0 },
++ { .offset = 0x1128c1, .val = 0 },
++ { .offset = 0x2128c1, .val = 0 },
++ { .offset = 0x130c1, .val = 0 },
++ { .offset = 0x1130c1, .val = 0 },
++ { .offset = 0x2130c1, .val = 0 },
++ { .offset = 0x131c1, .val = 0 },
++ { .offset = 0x1131c1, .val = 0 },
++ { .offset = 0x2131c1, .val = 0 },
++ { .offset = 0x132c1, .val = 0 },
++ { .offset = 0x1132c1, .val = 0 },
++ { .offset = 0x2132c1, .val = 0 },
++ { .offset = 0x133c1, .val = 0 },
++ { .offset = 0x1133c1, .val = 0 },
++ { .offset = 0x2133c1, .val = 0 },
++ { .offset = 0x134c1, .val = 0 },
++ { .offset = 0x1134c1, .val = 0 },
++ { .offset = 0x2134c1, .val = 0 },
++ { .offset = 0x135c1, .val = 0 },
++ { .offset = 0x1135c1, .val = 0 },
++ { .offset = 0x2135c1, .val = 0 },
++ { .offset = 0x136c1, .val = 0 },
++ { .offset = 0x1136c1, .val = 0 },
++ { .offset = 0x2136c1, .val = 0 },
++ { .offset = 0x137c1, .val = 0 },
++ { .offset = 0x1137c1, .val = 0 },
++ { .offset = 0x2137c1, .val = 0 },
++ { .offset = 0x138c1, .val = 0 },
++ { .offset = 0x1138c1, .val = 0 },
++ { .offset = 0x2138c1, .val = 0 },
++ { .offset = 0x10020, .val = 0 },
++ { .offset = 0x110020, .val = 0 },
++ { .offset = 0x210020, .val = 0 },
++ { .offset = 0x11020, .val = 0 },
++ { .offset = 0x111020, .val = 0 },
++ { .offset = 0x211020, .val = 0 },
++ { .offset = 0x12020, .val = 0 },
++ { .offset = 0x112020, .val = 0 },
++ { .offset = 0x212020, .val = 0 },
++ { .offset = 0x13020, .val = 0 },
++ { .offset = 0x113020, .val = 0 },
++ { .offset = 0x213020, .val = 0 },
++ { .offset = 0x20072, .val = 0 },
++ { .offset = 0x20073, .val = 0 },
++ { .offset = 0x20074, .val = 0 },
++ { .offset = 0x100aa, .val = 0 },
++ { .offset = 0x110aa, .val = 0 },
++ { .offset = 0x120aa, .val = 0 },
++ { .offset = 0x130aa, .val = 0 },
++ { .offset = 0x20010, .val = 0 },
++ { .offset = 0x120010, .val = 0 },
++ { .offset = 0x220010, .val = 0 },
++ { .offset = 0x20011, .val = 0 },
++ { .offset = 0x120011, .val = 0 },
++ { .offset = 0x220011, .val = 0 },
++ { .offset = 0x100ae, .val = 0 },
++ { .offset = 0x1100ae, .val = 0 },
++ { .offset = 0x2100ae, .val = 0 },
++ { .offset = 0x100af, .val = 0 },
++ { .offset = 0x1100af, .val = 0 },
++ { .offset = 0x2100af, .val = 0 },
++ { .offset = 0x110ae, .val = 0 },
++ { .offset = 0x1110ae, .val = 0 },
++ { .offset = 0x2110ae, .val = 0 },
++ { .offset = 0x110af, .val = 0 },
++ { .offset = 0x1110af, .val = 0 },
++ { .offset = 0x2110af, .val = 0 },
++ { .offset = 0x120ae, .val = 0 },
++ { .offset = 0x1120ae, .val = 0 },
++ { .offset = 0x2120ae, .val = 0 },
++ { .offset = 0x120af, .val = 0 },
++ { .offset = 0x1120af, .val = 0 },
++ { .offset = 0x2120af, .val = 0 },
++ { .offset = 0x130ae, .val = 0 },
++ { .offset = 0x1130ae, .val = 0 },
++ { .offset = 0x2130ae, .val = 0 },
++ { .offset = 0x130af, .val = 0 },
++ { .offset = 0x1130af, .val = 0 },
++ { .offset = 0x2130af, .val = 0 },
++ { .offset = 0x20020, .val = 0 },
++ { .offset = 0x120020, .val = 0 },
++ { .offset = 0x220020, .val = 0 },
++ { .offset = 0x100a0, .val = 0 },
++ { .offset = 0x100a1, .val = 0 },
++ { .offset = 0x100a2, .val = 0 },
++ { .offset = 0x100a3, .val = 0 },
++ { .offset = 0x100a4, .val = 0 },
++ { .offset = 0x100a5, .val = 0 },
++ { .offset = 0x100a6, .val = 0 },
++ { .offset = 0x100a7, .val = 0 },
++ { .offset = 0x110a0, .val = 0 },
++ { .offset = 0x110a1, .val = 0 },
++ { .offset = 0x110a2, .val = 0 },
++ { .offset = 0x110a3, .val = 0 },
++ { .offset = 0x110a4, .val = 0 },
++ { .offset = 0x110a5, .val = 0 },
++ { .offset = 0x110a6, .val = 0 },
++ { .offset = 0x110a7, .val = 0 },
++ { .offset = 0x120a0, .val = 0 },
++ { .offset = 0x120a1, .val = 0 },
++ { .offset = 0x120a2, .val = 0 },
++ { .offset = 0x120a3, .val = 0 },
++ { .offset = 0x120a4, .val = 0 },
++ { .offset = 0x120a5, .val = 0 },
++ { .offset = 0x120a6, .val = 0 },
++ { .offset = 0x120a7, .val = 0 },
++ { .offset = 0x130a0, .val = 0 },
++ { .offset = 0x130a1, .val = 0 },
++ { .offset = 0x130a2, .val = 0 },
++ { .offset = 0x130a3, .val = 0 },
++ { .offset = 0x130a4, .val = 0 },
++ { .offset = 0x130a5, .val = 0 },
++ { .offset = 0x130a6, .val = 0 },
++ { .offset = 0x130a7, .val = 0 },
++ { .offset = 0x2007c, .val = 0 },
++ { .offset = 0x12007c, .val = 0 },
++ { .offset = 0x22007c, .val = 0 },
++ { .offset = 0x2007d, .val = 0 },
++ { .offset = 0x12007d, .val = 0 },
++ { .offset = 0x22007d, .val = 0 },
++ { .offset = 0x400fd, .val = 0 },
++ { .offset = 0x400c0, .val = 0 },
++ { .offset = 0x90201, .val = 0 },
++ { .offset = 0x190201, .val = 0 },
++ { .offset = 0x290201, .val = 0 },
++ { .offset = 0x90202, .val = 0 },
++ { .offset = 0x190202, .val = 0 },
++ { .offset = 0x290202, .val = 0 },
++ { .offset = 0x90203, .val = 0 },
++ { .offset = 0x190203, .val = 0 },
++ { .offset = 0x290203, .val = 0 },
++ { .offset = 0x90204, .val = 0 },
++ { .offset = 0x190204, .val = 0 },
++ { .offset = 0x290204, .val = 0 },
++ { .offset = 0x90205, .val = 0 },
++ { .offset = 0x190205, .val = 0 },
++ { .offset = 0x290205, .val = 0 },
++ { .offset = 0x90206, .val = 0 },
++ { .offset = 0x190206, .val = 0 },
++ { .offset = 0x290206, .val = 0 },
++ { .offset = 0x90207, .val = 0 },
++ { .offset = 0x190207, .val = 0 },
++ { .offset = 0x290207, .val = 0 },
++ { .offset = 0x90208, .val = 0 },
++ { .offset = 0x190208, .val = 0 },
++ { .offset = 0x290208, .val = 0 },
++ { .offset = 0x10062, .val = 0 },
++ { .offset = 0x10162, .val = 0 },
++ { .offset = 0x10262, .val = 0 },
++ { .offset = 0x10362, .val = 0 },
++ { .offset = 0x10462, .val = 0 },
++ { .offset = 0x10562, .val = 0 },
++ { .offset = 0x10662, .val = 0 },
++ { .offset = 0x10762, .val = 0 },
++ { .offset = 0x10862, .val = 0 },
++ { .offset = 0x11062, .val = 0 },
++ { .offset = 0x11162, .val = 0 },
++ { .offset = 0x11262, .val = 0 },
++ { .offset = 0x11362, .val = 0 },
++ { .offset = 0x11462, .val = 0 },
++ { .offset = 0x11562, .val = 0 },
++ { .offset = 0x11662, .val = 0 },
++ { .offset = 0x11762, .val = 0 },
++ { .offset = 0x11862, .val = 0 },
++ { .offset = 0x12062, .val = 0 },
++ { .offset = 0x12162, .val = 0 },
++ { .offset = 0x12262, .val = 0 },
++ { .offset = 0x12362, .val = 0 },
++ { .offset = 0x12462, .val = 0 },
++ { .offset = 0x12562, .val = 0 },
++ { .offset = 0x12662, .val = 0 },
++ { .offset = 0x12762, .val = 0 },
++ { .offset = 0x12862, .val = 0 },
++ { .offset = 0x13062, .val = 0 },
++ { .offset = 0x13162, .val = 0 },
++ { .offset = 0x13262, .val = 0 },
++ { .offset = 0x13362, .val = 0 },
++ { .offset = 0x13462, .val = 0 },
++ { .offset = 0x13562, .val = 0 },
++ { .offset = 0x13662, .val = 0 },
++ { .offset = 0x13762, .val = 0 },
++ { .offset = 0x13862, .val = 0 },
++ { .offset = 0x20077, .val = 0 },
++ { .offset = 0x10001, .val = 0 },
++ { .offset = 0x11001, .val = 0 },
++ { .offset = 0x12001, .val = 0 },
++ { .offset = 0x13001, .val = 0 },
++ { .offset = 0x10040, .val = 0 },
++ { .offset = 0x10140, .val = 0 },
++ { .offset = 0x10240, .val = 0 },
++ { .offset = 0x10340, .val = 0 },
++ { .offset = 0x10440, .val = 0 },
++ { .offset = 0x10540, .val = 0 },
++ { .offset = 0x10640, .val = 0 },
++ { .offset = 0x10740, .val = 0 },
++ { .offset = 0x10840, .val = 0 },
++ { .offset = 0x10030, .val = 0 },
++ { .offset = 0x10130, .val = 0 },
++ { .offset = 0x10230, .val = 0 },
++ { .offset = 0x10330, .val = 0 },
++ { .offset = 0x10430, .val = 0 },
++ { .offset = 0x10530, .val = 0 },
++ { .offset = 0x10630, .val = 0 },
++ { .offset = 0x10730, .val = 0 },
++ { .offset = 0x10830, .val = 0 },
++ { .offset = 0x11040, .val = 0 },
++ { .offset = 0x11140, .val = 0 },
++ { .offset = 0x11240, .val = 0 },
++ { .offset = 0x11340, .val = 0 },
++ { .offset = 0x11440, .val = 0 },
++ { .offset = 0x11540, .val = 0 },
++ { .offset = 0x11640, .val = 0 },
++ { .offset = 0x11740, .val = 0 },
++ { .offset = 0x11840, .val = 0 },
++ { .offset = 0x11030, .val = 0 },
++ { .offset = 0x11130, .val = 0 },
++ { .offset = 0x11230, .val = 0 },
++ { .offset = 0x11330, .val = 0 },
++ { .offset = 0x11430, .val = 0 },
++ { .offset = 0x11530, .val = 0 },
++ { .offset = 0x11630, .val = 0 },
++ { .offset = 0x11730, .val = 0 },
++ { .offset = 0x11830, .val = 0 },
++ { .offset = 0x12040, .val = 0 },
++ { .offset = 0x12140, .val = 0 },
++ { .offset = 0x12240, .val = 0 },
++ { .offset = 0x12340, .val = 0 },
++ { .offset = 0x12440, .val = 0 },
++ { .offset = 0x12540, .val = 0 },
++ { .offset = 0x12640, .val = 0 },
++ { .offset = 0x12740, .val = 0 },
++ { .offset = 0x12840, .val = 0 },
++ { .offset = 0x12030, .val = 0 },
++ { .offset = 0x12130, .val = 0 },
++ { .offset = 0x12230, .val = 0 },
++ { .offset = 0x12330, .val = 0 },
++ { .offset = 0x12430, .val = 0 },
++ { .offset = 0x12530, .val = 0 },
++ { .offset = 0x12630, .val = 0 },
++ { .offset = 0x12730, .val = 0 },
++ { .offset = 0x12830, .val = 0 },
++ { .offset = 0x13040, .val = 0 },
++ { .offset = 0x13140, .val = 0 },
++ { .offset = 0x13240, .val = 0 },
++ { .offset = 0x13340, .val = 0 },
++ { .offset = 0x13440, .val = 0 },
++ { .offset = 0x13540, .val = 0 },
++ { .offset = 0x13640, .val = 0 },
++ { .offset = 0x13740, .val = 0 },
++ { .offset = 0x13840, .val = 0 },
++ { .offset = 0x13030, .val = 0 },
++ { .offset = 0x13130, .val = 0 },
++ { .offset = 0x13230, .val = 0 },
++ { .offset = 0x13330, .val = 0 },
++ { .offset = 0x13430, .val = 0 },
++ { .offset = 0x13530, .val = 0 },
++ { .offset = 0x13630, .val = 0 },
++ { .offset = 0x13730, .val = 0 },
++ { .offset = 0x13830, .val = 0 },
+ };
+
+ /* lpddr4 phy PIE image */
+@@ -1526,29 +1536,16 @@ static const struct ddrphy_cfg_param phy_pie[] = {
+ { .offset = 0xd0000, .val = 0x1 }, // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
+ };
+
+-static void lpddr4_phy_init_cfg(void)
+-{
+- int index, offset, val, size;
+-
+- size = sizeof(phy_init_cfg) / 8;
+-
+- for (index = 0; index < size; index++) {
+- val = phy_init_cfg[index].val;
+- offset = phy_init_cfg[index].offset;
+- dwc_ddrphy_apb_wr(offset, val);
+- }
+-}
+-
+-static void lpddr4_phy_restore_trained_csr(void)
++static void lpddr4_phy_restore_phy(void)
+ {
+ int index, offset, val, size;
+
+ dwc_ddrphy_apb_wr(0xd0000,0x0);
+- size = sizeof(phy_trained_csr) / 8;
++ size = sizeof(phy_cfg) / 8;
+
+ for(index = 0; index < size; index++) {
+- val = phy_trained_csr[index].val;
+- offset = phy_trained_csr[index].offset;
++ val = phy_cfg[index].val;
++ offset = phy_cfg[index].offset;
+
+ dwc_ddrphy_apb_wr(offset, val);
+ }
+@@ -1569,19 +1566,19 @@ static void lpddr4_phy_load_pie(void)
+ }
+ }
+
+-void lpddr4_phy_save_trained_csr(void)
++void lpddr4_phy_save_phy(void)
+ {
+ int index, offset, size;
+
+- size = sizeof(phy_trained_csr) / 8;
++ size = sizeof(phy_cfg) / 8;
+
+ dwc_ddrphy_apb_wr(0xd0000, 0x0);
+ dwc_ddrphy_apb_wr(0xc0080, 0x3);
+
+
+ for (index = 0; index < size; index++) {
+- offset = phy_trained_csr[index].offset;
+- phy_trained_csr[index].val = dwc_ddrphy_apb_rd(offset);
++ offset = phy_cfg[index].offset;
++ phy_cfg[index].val = dwc_ddrphy_apb_rd(offset);
+ }
+
+ dwc_ddrphy_apb_wr(0xc0080, 0x0);
+@@ -1590,11 +1587,8 @@ void lpddr4_phy_save_trained_csr(void)
+
+ void lpddr4_phy_cfg(void)
+ {
+- /* load the init config */
+- lpddr4_phy_init_cfg();
+-
+ /* restore the trained csr */
+- lpddr4_phy_restore_trained_csr();
++ lpddr4_phy_restore_phy();
+
+ /* load the phy PIE image */
+ lpddr4_phy_load_pie();
+diff --git a/plat/freescale/imx8mq/ddr/lpddr4_retention.c b/plat/freescale/imx8mq/ddr/lpddr4_retention.c
+index 7b534d9..bce5000 100644
+--- a/plat/freescale/imx8mq/ddr/lpddr4_retention.c
++++ b/plat/freescale/imx8mq/ddr/lpddr4_retention.c
+@@ -27,13 +27,17 @@
+
+ static bool trained_csr_saved = false;
+
++void lpddr4_save_umctl2(void);
++void lpddr4_phy_save_phy(void);
++
+ void ddrc_enter_retention(void)
+ {
+ unsigned int tmp, tmp_t, i;
+
+ /* only need be save once */
+ if (!trained_csr_saved) {
+- lpddr4_phy_save_trained_csr();
++ lpddr4_save_umctl2();
++ lpddr4_phy_save_phy();
+ trained_csr_saved = true;
+ }
+
+diff --git a/plat/freescale/imx8mq/ddr/lpddr4_swffc.c b/plat/freescale/imx8mq/ddr/lpddr4_swffc.c
+index 6db6f4d..434e8fd 100644
+--- a/plat/freescale/imx8mq/ddr/lpddr4_swffc.c
++++ b/plat/freescale/imx8mq/ddr/lpddr4_swffc.c
+@@ -11,22 +11,14 @@
+
+ #include "lpddr4_dvfs.h"
+
+-#define P0_INIT3 0x00D4002D
+-#define P0_INIT4 0x00310008
+-#define P0_INIT6 0x0066004a
+-#define P0_INIT7 0x0006004a
+-
+-#define P1_INIT3 0x0140009
+-#define P1_INIT4 0x00310008
+-#define P1_INIT6 0x0066004a
+-#define P1_INIT7 0x0006004a
+-
+ #define HW_DRAM_PLL_CFG0_ADDR (0x30360000 + 0x60)
+ #define HW_DRAM_PLL_CFG1_ADDR (0x30360000 + 0x64)
+ #define HW_DRAM_PLL_CFG2_ADDR (0x30360000 + 0x68)
+
+ #define DFILP_SPT
+
++extern unsigned int default_ddr_pllcfg;
++
+ void sscgpll_bypass_enable(unsigned int reg_addr)
+ {
+ unsigned int read_data;
+@@ -67,16 +59,18 @@ void DDR_PLL_CONFIG_FREQ(unsigned int freq)
+ case 667:
+ mmio_write_32(HW_DRAM_PLL_CFG2_ADDR, 0x00ece480);
+ break;
+- case 400:
+- mmio_write_32(HW_DRAM_PLL_CFG2_ADDR, 0x00ec6984);
++ case 400:
++ mmio_write_32(HW_DRAM_PLL_CFG2_ADDR, 0x00ec6984);
+ break;
+- case 167:
++ case 167:
+ mmio_write_32(HW_DRAM_PLL_CFG2_ADDR, 0x00f5a406);
+ break;
+- case 100:
+- mmio_write_32(HW_DRAM_PLL_CFG2_ADDR, 0x015dea96);
++ case 100:
++ mmio_write_32(HW_DRAM_PLL_CFG2_ADDR, 0x015dea96);
+ break;
+-
++ case 0:
++ mmio_write_32(HW_DRAM_PLL_CFG2_ADDR, default_ddr_pllcfg);
++ break;
+ default:
+ printf("Input freq=%d error.\n",freq);
+ }
+@@ -118,24 +112,24 @@ void lpddr4_dvfs_swffc(unsigned int init_fsp, unsigned int target_freq)
+
+ /* setting for 3200 mts */
+ if(target_freq==0) {
+- mr = P0_INIT3 >> 16;
+- emr = P0_INIT3 & 0xFFFF;
+- emr2 = P0_INIT4 >> 16;
+- emr3 = P0_INIT4 & 0xFFFF;
+- mr11 = P0_INIT6 >> 16;
+- mr12 = P0_INIT6 & 0xFFFF;
+- mr22 = P0_INIT7 >> 16;
+- mr14 = P0_INIT7 & 0xFFFF;
++ mr = mmio_read_32(DDRC_INIT3(0)) >> 16;
++ emr = mmio_read_32(DDRC_INIT3(0)) & 0xFFFF;
++ emr2 = mmio_read_32(DDRC_INIT4(0)) >> 16;
++ emr3 = mmio_read_32(DDRC_INIT4(0)) & 0xFFFF;
++ mr11 = mmio_read_32(DDRC_INIT6(0)) >> 16;
++ mr12 = mmio_read_32(DDRC_INIT6(0)) & 0xFFFF;
++ mr22 = mmio_read_32(DDRC_INIT7(0)) >> 16;
++ mr14 = mmio_read_32(DDRC_INIT7(0)) & 0xFFFF;
+ } else {
+ /* setting for 667 mts */
+- mr = P1_INIT3 >> 16;
+- emr = P1_INIT3 & 0xFFFF;
+- emr2 = P1_INIT4 >> 16;
+- emr3 = P1_INIT4 & 0xFFFF;
+- mr11 = P1_INIT6 >> 16;
+- mr12 = P1_INIT6 & 0xFFFF;
+- mr22 = P1_INIT7 >> 16;
+- mr14 = P1_INIT7 & 0xFFFF;
++ mr = mmio_read_32(DDRC_FREQ1_INIT3(0)) >> 16;
++ emr = mmio_read_32(DDRC_FREQ1_INIT3(0)) & 0xFFFF;
++ emr2 = mmio_read_32(DDRC_FREQ1_INIT4(0)) >> 16;
++ emr3 = mmio_read_32(DDRC_FREQ1_INIT4(0)) & 0xFFFF;
++ mr11 = mmio_read_32(DDRC_FREQ1_INIT6(0)) >> 16;
++ mr12 = mmio_read_32(DDRC_FREQ1_INIT6(0)) & 0xFFFF;
++ mr22 = mmio_read_32(DDRC_FREQ1_INIT7(0)) >> 16;
++ mr14 = mmio_read_32(DDRC_FREQ1_INIT7(0)) & 0xFFFF;
+ }
+
+ tmp = (init_fsp== 1) ? 0x2 <<6 : 0x1 <<6;
+@@ -203,10 +197,10 @@ void lpddr4_dvfs_swffc(unsigned int init_fsp, unsigned int target_freq)
+ mmio_write_32(DDRC_FREQ1_DERATEEN(0), tmp); /* ddrc_derate_enable, bit 0 */
+ tmp= mmio_read_32(DDRC_ZQCTL0(0));
+ tmp |= 0x80000000;
+- mmio_write_32(DDRC_ZQCTL0(0), tmp); /* ddrc_derate_enable, bit 0 */
++ mmio_write_32(DDRC_ZQCTL0(0), tmp);
+ tmp= mmio_read_32(DDRC_FREQ1_ZQCTL0(0));
+ tmp |= 0x80000000;
+- mmio_write_32(DDRC_FREQ1_ZQCTL0(0), tmp); /* ddrc_derate_enable, bit 0 */
++ mmio_write_32(DDRC_FREQ1_ZQCTL0(0), tmp);
+
+ /* 12. set PWRCTL.selfref_en=0 */
+ tmp= mmio_read_32(DDRC_PWRCTL(0));
+@@ -275,7 +269,7 @@ void lpddr4_dvfs_swffc(unsigned int init_fsp, unsigned int target_freq)
+ /* Q4: only for legacy PHY, so here can skipped */
+ tmp= mmio_read_32(DDRC_DFIMISC(0));
+ tmp &= 0xFF;
+- tmp |= (target_freq << 8); /* should be 0 */
++ tmp |= (target_freq << 8);
+ mmio_write_32(DDRC_DFIMISC(0),tmp);
+ tmp |= 0x20;
+ mmio_write_32(DDRC_DFIMISC(0),tmp);
+@@ -288,16 +282,19 @@ void lpddr4_dvfs_swffc(unsigned int init_fsp, unsigned int target_freq)
+ /* switch_clocks for target frequency */
+ if(target_freq==0x1) {
+ /* mmio_write_32(CCM_IP_CLK_ROOT_GEN_TAGET_CLR(1),(0x7<<24)|(0x7<<16)); */
+- mmio_write_32(0x3038a088, (0x7 << 24) | (0x7 << 16));
++ //mmio_write_32(0x3038a088, (0x7 << 24) | (0x7 << 16));
+ /* mmio_write_32(CCM_IP_CLK_ROOT_GEN_TAGET_SET(1),(0x4<<24)|(0x4<<16)); */
+- mmio_write_32(0x3038a084, (0x4 << 24) | (0x4 << 16)); //to source 4 --800MHz/5
++ //mmio_write_32(0x3038a084, (0x4 << 24) | (0x4 << 16)); //to source 4 --800MHz/5
+ DDR_PLL_CONFIG_FREQ(167);
+ } else {
+- DDR_PLL_CONFIG_FREQ(800);
++ if(default_ddr_pllcfg)
++ DDR_PLL_CONFIG_FREQ(0);
++ else
++ DDR_PLL_CONFIG_FREQ(800);
+ /* mmio_write_32(CCM_IP_CLK_ROOT_GEN_TAGET_CLR(1),(0x7<<24)|(0x7<<16)); */
+- mmio_write_32(0x3038a088, (0x7 << 24) | (0x7 << 16));
++ //mmio_write_32(0x3038a088, (0x7 << 24) | (0x7 << 16));
+ /* mmio_write_32(CCM_IP_CLK_ROOT_GEN_TAGET_SET(1),(0x4<<24)|(0x3<<16)); */
+- mmio_write_32(0x3038a084, (0x4 << 24) | (0x3 << 16)); //to source 4 --800MHz/4*/
++ //mmio_write_32(0x3038a084, (0x4 << 24) | (0x3 << 16)); //to source 4 --800MHz/4*/
+ }
+
+ /* dfi_init_start de-assert */
+diff --git a/plat/freescale/imx8mq/include/soc.h b/plat/freescale/imx8mq/include/soc.h
+index 0c55a9c..7c9de5c 100644
+--- a/plat/freescale/imx8mq/include/soc.h
++++ b/plat/freescale/imx8mq/include/soc.h
+@@ -24,6 +24,7 @@ void imx_set_rbc_count(void);
+ void imx_clear_rbc_count(void);
+
+ void lpddr4_cfg_umctl2(void);
++void lpddr4_save_umctl2(void);
+ void lpddr4_phy_cfg(void);
+ void lpddr4_phy_save_trained_csr(void);
+ void lpddr4_switch_to_3200(void);
+--
+1.9.1
+
diff --git a/dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf/0002-imx8m_bl31_setup-set-mem-size-to-1GB.patch b/dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf/0002-imx8m_bl31_setup-set-mem-size-to-1GB.patch
new file mode 100644
index 0000000..78cb029
--- /dev/null
+++ b/dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf/0002-imx8m_bl31_setup-set-mem-size-to-1GB.patch
@@ -0,0 +1,26 @@
+From 4b393cfd045ebf9f97f79d946f316863c898f7f5 Mon Sep 17 00:00:00 2001
+From: Christian Hemp <c.hemp@phytec.de>
+Date: Tue, 8 May 2018 11:29:18 +0200
+Subject: [PATCH 2/2] imx8m_bl31_setup: set mem size to 1GB
+
+Signed-off-by: Christian Hemp <c.hemp@phytec.de>
+---
+ plat/freescale/imx8mq/imx8m_bl31_setup.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plat/freescale/imx8mq/imx8m_bl31_setup.c b/plat/freescale/imx8mq/imx8m_bl31_setup.c
+index ac35c94..fec6271 100644
+--- a/plat/freescale/imx8mq/imx8m_bl31_setup.c
++++ b/plat/freescale/imx8mq/imx8m_bl31_setup.c
+@@ -273,7 +273,7 @@ void bl31_plat_arch_setup(void)
+ mmap_add_region(0x180000, 0x180000, 0x8000,
+ MT_MEMORY | MT_RW);
+
+- mmap_add_region(0x40000000, 0x40000000, 0xc0000000,
++ mmap_add_region(0x40000000, 0x40000000, 0x40000000,
+ MT_MEMORY | MT_RW | MT_NS);
+
+ mmap_add_region(BL31_BASE, BL31_BASE, BL31_RO_LIMIT - BL31_RO_BASE,
+--
+2.7.4
+
diff --git a/dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf_%.bbappend b/dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf_%.bbappend
new file mode 100644
index 0000000..bdb5813
--- /dev/null
+++ b/dynamic-layers/fsl-bsp-release/recipes-bsp/imx-atf/imx-atf_%.bbappend
@@ -0,0 +1,6 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}/:"
+
+SRC_URI += "\
+ file://0001-ATF-support-to-different-LPDDR4-configurations.patch \
+ file://0002-imx8m_bl31_setup-set-mem-size-to-1GB.patch \
+"