diff options
Diffstat (limited to 'dynamic-layers/fsl-bsp-release')
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 \ +" |