summaryrefslogtreecommitdiff
path: root/include/soc/sprd/chip_x30g/dram_phy_28nm.h
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2017-08-30 08:25:59 +0000
committerYuval Adam <_@yuv.al>2017-08-30 08:25:59 +0000
commit8e4bff4cab0ddac6060645b0715210484d02ff40 (patch)
tree3a5c3024371a04692a3a6d9974d001cdff8ebf84 /include/soc/sprd/chip_x30g/dram_phy_28nm.h
Initial file dump from open source releaseHEADmaster
Diffstat (limited to 'include/soc/sprd/chip_x30g/dram_phy_28nm.h')
-rw-r--r--include/soc/sprd/chip_x30g/dram_phy_28nm.h487
1 files changed, 487 insertions, 0 deletions
diff --git a/include/soc/sprd/chip_x30g/dram_phy_28nm.h b/include/soc/sprd/chip_x30g/dram_phy_28nm.h
new file mode 100644
index 00000000..8fce6e9f
--- /dev/null
+++ b/include/soc/sprd/chip_x30g/dram_phy_28nm.h
@@ -0,0 +1,487 @@
+#ifndef _DRAM_PHY_28NM_H_
+#define _DRAM_PHY_28NM_H_
+
+#define __LPDDR2_BL__ 8 /*4,8,16*/
+
+#define NS2CLK_T(ns,clk) (((clk)*(ns)+9999)/10000)
+#define MAX(x,y) (((x) > (y)) ? (x) : (y))
+
+#ifndef BIT
+#define BIT(x) (1 << (x))
+#endif
+
+typedef enum
+{
+ /*lpddr1 type*/
+ DRAM_LPDDR1 = 0x000,
+ /*lpddr2 type*/
+ DRAM_LPDDR2 = 0x100,
+ /*lpddr3 type*/
+ DRAM_LPDDR3 = 0x200,
+ /*ddr2 type*/
+ DRAM_DDR2 = 0x300,
+ /*ddr3 type*/
+ DRAM_DDR3 = 0x400,
+}DRAM_TYPE_E;
+
+typedef enum{
+ CLK_24MHZ = 24,
+ CLK_26MHZ = 26,
+ CLK_38_4MHZ = 38,
+ CLK_48MHZ = 48,
+ CLK_64MHZ = 64,
+ CLK_76_8MHZ = 77,
+ CLK_96MHZ = 96,
+ CLK_100MHZ = 100,
+ CLK_153_6MHZ = 154,
+ CLK_150MHZ = 150,
+ CLK_166MHZ = 166,
+ CLK_192MHZ = 192,
+ CLK_200MHZ = 200,
+ CLK_250MHZ = 250,
+ CLK_267MHZ = 267,
+ CLK_300MHZ = 300,
+ CLK_332MHZ = 332,
+ CLK_333MHZ = 333,
+ CLK_384MHZ = 384,
+ CLK_400MHZ = 400,
+ CLK_427MHZ = 427,
+ CLK_450MHZ = 450,
+ CLK_464MHZ = 464,
+ CLK_466MHZ = 466,
+ CLK_467MHZ = 467,
+ CLK_500MHZ = 500,
+ CLK_525MHZ = 525,
+ CLK_533MHZ = 533,
+ CLK_537MHZ = 537,
+ CLK_540MHZ = 540,
+ CLK_550MHZ = 550,
+ CLK_800MHZ = 800,
+ CLK_1000MHZ = 1000,
+ EMC_CLK_400MHZ = 400,
+ EMC_CLK_450MHZ = 450,
+ EMC_CLK_500MHZ = 500
+}CLK_TYPE_E;
+
+typedef enum
+{
+ CAP_1CS_2G_X32,
+ CAP_1CS_4G_X32,
+ CAP_2CS_2G_X32,
+ CAP_2CS_3G_X32,
+ CAP_2CS_4G_X32,
+ CAP_2CS_5G_X32,
+ CAP_2CS_6G_X32,
+ CAP_2CS_8G_X32,
+ CAP_2CS_12G_X32,
+ CAP_2CS_16G_X32,
+ CAP_1CS_2G_X8_4P,
+ CAP_1CS_4G_X16_2P
+}DRAM_CAP_SIZE_E;
+
+typedef enum
+{
+ DRAM_BT_SEQ = 0, //burst type = sequential(default)
+ DRAM_BT_INTER= 1 //burst type = interleaved
+}DRAM_BURSTTYPE_E;
+
+typedef enum
+{
+ DRAM_WRAP = 0, //warp mode
+ DRAM_NOWRAP = 1 //no warp mode
+}DRAM_WC_E;
+
+typedef enum
+{
+/*Driver strength for lpddr1*/
+ LPDDR1_DS_FULL,
+ LPDDR1_DS_HALF,
+ LPDDR1_DS_QUARTER,
+ LPDDR1_DS_OCTANT,
+ LPDDR1_DS_THREE_QUATERS,
+/*Driver strength for lpddr2*/
+ LPDDR2_DS_34R3 = 0x01,
+ LPDDR2_DS_40R = 0x02,
+ LPDDR2_DS_48R = 0x03,
+ LPDDR2_DS_60R = 0x04,
+ LPDDR2_DS_68R6 = 0x05,
+ LPDDR2_DS_80R = 0x06,
+ LPDDR2_DS_120R = 0x07,
+/*Driver strength for ddr3*/
+ DDR3_DS_40R = 0x00,
+ DDR3_DS_34R3 = 0x01
+}MEM_IODS_E;
+
+typedef enum
+{
+ UMCTL2_PORT_MIN = 0,
+ UMCTL2_PORT_AP = 0,
+ UMCTL2_PORT_MM = 1,
+ UMCTL2_PORT_GPU = 2,
+ UMCTL2_PORT_CP2_P0 = 3,
+ UMCTL2_PORT_CP1 = 4,
+ UMCTL2_PORT_AP_MTX = 5,
+ UMCTL2_PORT_CP0 = 6,
+ UMCTL2_PORT_CP2_P1 = 7,
+ UMCTL2_PORT_CP0_MTX = 8,
+ UMCTL2_PORT_DSP = 9,
+ UMCTL2_PORT_MAX = 10
+}UMCTL2_PORT_ID_E;
+
+typedef enum
+{
+ OPERATION_MODE_INIT = 0x0,
+ OPERATION_MODE_NORMAL = 0x1,
+ OPERATION_MODE_PD = 0x2,
+ OPERATION_MODE_SR = 0x3,
+ OPERATION_MODE_DPD = 0x4
+}OPERATION_MODE_E;
+
+typedef struct
+{
+ unsigned int tREFI; /*average refresh interval time between each row normal=7800ns*/
+ unsigned int tMRD; /*lpddr1:set lpddr2:sbz ddr3:set*/
+ unsigned int tRAS; /*lpddr1:set lpddr2:set ddr3:set*/
+ unsigned int tRC; /*lpddr1:set lpddr2:set ddr3:set*/
+ unsigned int tRFC; /*lpddr1:set lpddr2:set ddr3:set*/
+ unsigned int tRCD; /*lpddr1:set lpddr2:set ddr3:set*/
+ unsigned int tRP; /*lpddr1:set lpddr2:set ddr3:set*/
+ unsigned int tRRD; /*lpddr1:set lpddr2:set ddr3:set*/
+ unsigned int tWR; /*lpddr1:set lpddr2:set ddr3:set*/
+ unsigned int tWTR; /*lpddr1:set lpddr2:set ddr3:set*/
+ unsigned int tXSR; /*lpddr1:set lpddr2:set ddr3:sbz*/
+ unsigned int tXP; /*lpddr1:set lpddr2:set ddr3:set*/
+ unsigned int tCKE; /*lpddr1:set lpddr2:set ddr3:set*/
+ unsigned int tRFCab; /*lpddr1:sbz lpddr2:set ddr3:sbz*/
+ unsigned int tRFCpb; /*lpddr1:sbz lpddr2:set ddr3:sbz*/
+ unsigned int tZQINIT; /*lpddr1:sbz lpddr2:set ddr3:set*/
+ unsigned int tZQCL; /*lpddr1:sbz lpddr2:set ddr3:sbz*/
+ unsigned int tZQCS; /*lpddr1:sbz lpddr2:set ddr3:set*/
+ unsigned int tZQreset; /*lpddr1:sbz lpddr2:set ddr3:sbz*/
+ unsigned int tZQoper; /*lpddr1:sbz lpddr2:sbz ddr3:set*/
+ unsigned int tCKESR; /*lpddr1:sbz lpddr2:set ddr3:sbz*/
+ unsigned int tCCD; /*lpddr1:sbz lpddr2:set ddr3:set*/
+ unsigned int tRTP; /*lpddr1:sbz lpddr2:set ddr3:set*/
+ unsigned int tFAW; /*lpddr1:sbz lpddr2:set ddr3:set*/
+ unsigned int tDPD; /*lpddr1:sbz lpddr2:set ddr3:sbz*/
+ unsigned int tDQSCK; /*lpddr1:sbz lpddr2:set ddr3:set*/
+ unsigned int tDQSCKmax; /*lpddr1:sbz lpddr2:set ddr3:sbz*/
+ unsigned int tMRW; /*lpddr1:sbz lpddr2:set ddr3:sbz*/
+ unsigned int tMRR; /*lpddr1:sbz lpddr2:set ddr3:sbz*/
+ unsigned int tDLLK; /*lpddr1:sbz lpddr2:sbz ddr3:set*/
+ unsigned int tMOD; /*lpddr1:sbz lpddr2:sbz ddr3:set*/
+ unsigned int tXS; /*lpddr1:sbz lpddr2:sbz ddr3:set*/
+ unsigned int tCKSRE; /*lpddr1:sbz lpddr2:sbz ddr3:set*/
+ unsigned int tCKSRX; /*lpddr1:sbz lpddr2:sbz ddr3:set*/
+ unsigned int cntRDMode;
+ unsigned int cntRDDLY;
+ unsigned int cntDQSGX;
+ unsigned int cntPGWAIT;
+ unsigned int cntZQDIV;
+}DDR_ACTIMING_T;
+
+typedef struct
+{
+ DRAM_TYPE_E dram_type;
+ DRAM_CAP_SIZE_E cap;
+ unsigned int cs_num; /*ranks number*/
+ unsigned int bank_num; /*banks number*/
+ unsigned int io_width; /*bus width*/
+ unsigned int bt; /*burst type*/
+ unsigned int wc; /*wrap control*/
+ unsigned int bl; /*burst length*/
+ unsigned int rl; /*read cas latency*/
+ unsigned int wl; /*write cas latency*/
+ unsigned int al; /*ddr2 ddr3 only Posted CAS additive latency*/
+ DDR_ACTIMING_T *ac_timing;
+ DDR_ACTIMING_T *native_ac_timing;
+}DRAM_INFO_T;
+
+typedef struct
+{
+ volatile unsigned int umctl_mstr; /* 0x0000 master register*/
+ volatile unsigned int umctl_stat; /* 0x0004 operating mode status*/
+ volatile unsigned int umctl_resv0[2]; /* 0x0008 ~ 0x000c*/
+ volatile unsigned int umctl_mrctrl[2]; /* 0x0010 ~ 0x0014 mode register control*/
+ volatile unsigned int umctl_mrstat; /* 0x0018 mode register status*/
+ volatile unsigned int umctl_resv1; /* 0x001c */
+ volatile unsigned int umctl_derateen; /* 0x0020 temperature derate enable*/
+ volatile unsigned int umctl_derateint; /* 0x0024 temperature derate interval*/
+ volatile unsigned int umctl_resv2[2]; /* 0x0028 ~ 0x002c */
+ volatile unsigned int umctl_pwrctl; /* 0x0030 low power control*/
+ volatile unsigned int umctl_pwrtmg; /* 0x0034 low power timing*/
+ volatile unsigned int umctl_hwlpctl; /* 0x0038 hardware low power control*/
+ volatile unsigned int umctl_resv3[5]; /* 0x003c ~ 0x004c */
+ volatile unsigned int umctl_rfshctl[3]; /* 0x0050 ~ 0x0058 refresh control*/
+ volatile unsigned int umctl_resv4; /* 0x005c */
+ volatile unsigned int umctl_rfshctl3; /* 0x0060 refresh control*/
+ volatile unsigned int umctl_rfshtmg; /* 0x0064 refresh timing*/
+ volatile unsigned int umctl_resv5[2]; /* 0x0068 ~ 0x006c */
+ volatile unsigned int umctl_ecccfg[2]; /* 0x0070 ~ 0x0074 ecc configruation*/
+ volatile unsigned int umctl_eccstat; /* 0x0078 ecc status*/
+ volatile unsigned int umctl_eccclr; /* 0x007c ecc clear*/
+ volatile unsigned int umctl_eccerrcnt; /* 0x0080 ecc error count*/
+ volatile unsigned int umctl_ecccaddr[2];/* 0x0084 ~ 0x0088 ecc corrected error address*/
+ volatile unsigned int umctl_ecccsyn[3]; /* 0x008c ~ 0x0094 ecc corrected syndrome*/
+ volatile unsigned int umctl_eccbitmask[3]; /* 0x0098 ~ 0x00a0 ecc corrected data bit mask*/
+ volatile unsigned int umctl_eccuaddr[2];/* 0x00a4 ~ 0x00a8 ecc unorrected error address*/
+ volatile unsigned int umctl_eccusyn[3]; /* 0x00ac ~ 0x00b4 ecc uncorrected syndrome*/
+ volatile unsigned int umctl_eccpoisonaddr[2]; /* 0x00b8 ~ 0x00bc ecc data poisoning address*/
+ volatile unsigned int umctl_parctl; /* 0x00c0 parity control*/
+ volatile unsigned int umctl_parstat; /* 0x00c4 parity status*/
+ volatile unsigned int umctl_resv6[2]; /* 0x00c8 ~ 0x00cc */
+ volatile unsigned int umctl_init[8]; /* 0x00d0 ~ 0x00ec sdram initialization*/
+ volatile unsigned int umctl_dimmctl; /* 0x00f0 dimm control*/
+ volatile unsigned int umctl_rankctl; /* 0x00f4 rank control*/
+ volatile unsigned int umctl_resv7[2]; /* 0x00f8 ~ 0x00fc*/
+ volatile unsigned int umctl_dramtmg[12];/* 0x0100 ~ 0x012c sdram timing*/
+ volatile unsigned int umctl_resv8[20]; /* 0x0130 ~ 0x017c */
+ volatile unsigned int umctl_zqctl[3]; /* 0x0180 ~ 0x0188 zq control*/
+ volatile unsigned int umctl_zqstat; /* 0x018c zq status*/
+ volatile unsigned int umctl_dfitmg[2]; /* 0x0190 ~ 0x0194 dfi timing*/
+ volatile unsigned int umctl_dfilpcfg[2];/* 0x0198 ~ 0x019c dfi low power configruation*/
+ volatile unsigned int umctl_dfiupd[4]; /* 0x01a0 ~ 0x01ac dfi update*/
+ volatile unsigned int umctl_dfimisc; /* 0x01b0 dfi miscellaneous control*/
+ volatile unsigned int umctl_resv9[3]; /* 0x01b4 ~ 0x01bc */
+ volatile unsigned int umctl_dbictl; /* 0x01c0 dm/dbi control*/
+ volatile unsigned int umctl_resv10[3]; /* 0x01c4 ~ 0x01cc */
+ volatile unsigned int umctl_trainctl[3];/* 0x01d0 ~ 0x01d8 phy eval training control*/
+ volatile unsigned int umctl_trainstat; /* 0x01dc phy eval training status */
+ volatile unsigned int umctl_resv11[8]; /* 0x01e0 ~ 0x01fc */
+ volatile unsigned int umctl_addrmap[9]; /* 0x0200 ~ 0x0220 address map */
+ volatile unsigned int umctl_resv12[7]; /* 0x0224 ~ 0x023c */
+ volatile unsigned int umctl_odtcfg; /* 0x0240 odt configruation */
+ volatile unsigned int umctl_odtmap; /* 0x0244 odt/rank map */
+ volatile unsigned int umctl_resv13[2]; /* 0x0248 ~ 0x024c */
+ volatile unsigned int umctl_sched; /* 0x0250 scheduler control */
+ volatile unsigned int umctl_resv14; /* 0x0254 */
+ volatile unsigned int umctl_perfhpr[2]; /* 0x0258 ~ 0x025c high priority read*/
+ volatile unsigned int umctl_perflpr[2]; /* 0x0260 ~ 0x0264 low priority read */
+ volatile unsigned int umctl_perfwr[2]; /* 0x0268 ~ 0x026c write cam */
+ volatile unsigned int umctl_resv15[36]; /* 0x0270 ~ 0x02fc */
+ volatile unsigned int umctl_dbg[2]; /* 0x0300 ~ 0x0304 debug*/
+ volatile unsigned int umctl_dbgcam; /* 0x0308 cam debug*/
+ volatile unsigned int umctl_dbgcmd; /* 0x030c cam debug*/
+ volatile unsigned int umctl_dbgstat; /* 0x0310 cam debug*/
+ volatile unsigned int umctl_resv16[58]; /* 0x0314 ~ 0x03f8 */
+ volatile unsigned int umctl_pstat; /* 0x03fc */
+ volatile unsigned int umctl_pccfg; /* 0x0400 port common configruation*/
+ volatile unsigned int umctl_pcfgr0; /* 0x0404 port 0 configruation read */
+ volatile unsigned int umctl_pcfgw0; /* 0x0408 port 0 configruation write*/
+ volatile unsigned int umctl_pcfgc0; /* 0x040c port 0 common configruation*/
+ volatile unsigned int umctl_pcfgidmaskch0_0; /* 0x0410 channel 0 port 0 configruation*/
+ volatile unsigned int umctl_pcfgidvaluech0_0; /* 0x0414 channel 0 port 0 configruation*/
+ volatile unsigned int umctl_resv17[30]; /* 0x0418 ~ 0x048c */
+ volatile unsigned int umctl_pctrl0; /* 0x0490 port control */
+}DMC_UMCTL_REG_INFO_T,*DMC_UMCTL_REG_INFO_PTR_T;
+
+/* UMCTL STAT [0x0004] */
+#define BIT_STAT_SELFREF_TYPE ( BIT(5) | BIT(4) )
+#define BIT_STAT_OP_MODE ( BIT(2) | BIT(1) | BIT(0) )
+
+/* UMCTL low power control [0x0030] */
+#define BIT_PWRCTL_SELFREF_SW ( BIT(5) )
+#define BIT_PWRCTL_MPSM_EN ( BIT(4) )
+#define BIT_PWRCTL_DFICLK_DIS ( BIT(3) )
+#define BIT_PWRCTL_DEEPPD_EN ( BIT(2) )
+#define BIT_PWRCTL_PD_EN ( BIT(1) )
+#define BIT_PWRCTL_SELFREF_EN ( BIT(0) )
+
+/* UMCTL DBG1 */
+#define BIT_DBG1_DIS_DQ ( BIT(0) )
+
+/* UMCTL DBGCAM [0x0308] */
+#define BIT_DBGCAM_WR_PP_EPTY ( BIT(29) )
+#define BIT_DBGCAM_RD_PP_EPTY ( BIT(28) )
+#define BIT_DBGCAM_WR_Q_EPTY ( BIT(26) )
+#define BIT_DBGCAM_RD_Q_EPTY ( BIT(25) )
+#define BIT_DBGCAM_STALL ( BIT(24) )
+
+/* DFI_MISC */
+#define BIT_DFIMISC_PHY_DBI_MODE ( BIT(1) )
+#define BIT_DFIMISC_DFI_COMP_EN ( BIT(0) )
+
+/* RFSHCTL3 [0x0060] */
+#define BIT_RFSHCTL3_RF_MODE ( BIT(6) | BIT(5) | BIT(4) )
+#define BIT_RFSHCTL3_RF_LL ( BIT(1) )
+#define BIT_RFSHCTL3_DIS_AUTO_RF ( BIT(0) )
+
+typedef struct
+{
+ volatile unsigned int publ_ridr; /* 0x0000 revision identification*/
+ volatile unsigned int publ_pir; /* 0x0004 phy initialization*/
+ volatile unsigned int publ_pgcr[4]; /* 0x0008 ~ 0x0014 phy general configruation*/
+ volatile unsigned int publ_pgsr[2]; /* 0x0018 ~ 0x001c phy general status*/
+ volatile unsigned int publ_pllcr; /* 0x0020 pll control*/
+ volatile unsigned int publ_ptr[5]; /* 0x0024 ~ 0x0034 phy timing*/
+ volatile unsigned int publ_acmdlr; /* 0x0038 ac master delay line*/
+ volatile unsigned int publ_aclcdlr; /* 0x003c ac local calibrated delay line*/
+ volatile unsigned int publ_acbdlr[10]; /* 0x0040 ~ 0x0064 ac bit delay line*/
+ volatile unsigned int publ_aciocr[6]; /* 0x0068 ~ 0x007c ac i/o configruation*/
+ volatile unsigned int publ_dxccr; /* 0x0080 datx8 common configruation*/
+ volatile unsigned int publ_dsgcr; /* 0x0084 datx8 system general configruation*/
+ volatile unsigned int publ_dcr; /* 0x0088 dram configruation*/
+ volatile unsigned int publ_dtpr[4]; /* 0x008c ~ 0x0098 dram timing parameters*/
+ volatile unsigned int publ_mr[4]; /* 0x009c ~ 0x00a8 mode register*/
+ volatile unsigned int publ_odtcr; /* 0x00ac odt configruation*/
+ volatile unsigned int publ_dtcr; /* 0x00b0 data training configruation*/
+ volatile unsigned int publ_dtar[4]; /* 0x00b4 ~ 0x00c0 data training address*/
+ volatile unsigned int publ_dtdr[2]; /* 0x00c4 ~ 0x00c8 data training data*/
+ volatile unsigned int publ_dtedr[2]; /* 0x00cc ~ 0x00d0 data training address */
+ volatile unsigned int publ_rdimmgcr[2]; /* 0x00d4 ~ 0x00d8 rdimm general configruation*/
+ volatile unsigned int publ_rdimmcr[2]; /* 0x00dc ~ 0x00e0 rdimm control*/
+ volatile unsigned int publ_gpr[2]; /* 0x00e4 ~ 0x00e8 general purpose*/
+ volatile unsigned int publ_catr[2]; /* 0x00ec ~ 0x00f0 catr*/
+ volatile unsigned int publ_dqsdr; /* 0x00f4 dqs drift detection */
+ volatile unsigned int publ_dtmr[2]; /* 0x00f8 ~ 0x00fc data training mask*/
+ volatile unsigned int publ_resv0[32]; /* 0x0100 ~ 0x017c */
+ volatile unsigned int publ_dcuar; /* 0x0180 DCU address*/
+ volatile unsigned int publ_dcudr; /* 0x0184 DCU data*/
+ volatile unsigned int publ_dcurr; /* 0x0188 DCU run*/
+ volatile unsigned int publ_dculr; /* 0x018c DCU loop*/
+ volatile unsigned int publ_dcugcr; /* 0x0190 DCU general configruation*/
+ volatile unsigned int publ_dcutpr; /* 0x0194 DCU timing parameters*/
+ volatile unsigned int publ_dcusr[2]; /* 0x0198 ~ 0x019c DCU status*/
+ volatile unsigned int publ_resv1[8]; /* 0x01a0 ~ 0x01bc */
+ volatile unsigned int publ_bistrr; /* 0x01c0 BIST run*/
+ volatile unsigned int publ_bistwcr; /* 0x01c4 BIST word count*/
+ volatile unsigned int publ_bistmskr[3]; /* 0x01c8 ~ 0x01d0 BIST mask*/
+ volatile unsigned int publ_bistlsr; /* 0x01d4 BIST LFSR seed*/
+ volatile unsigned int publ_bistar[3]; /* 0x01d8 ~ 0x01e0 BIST address*/
+ volatile unsigned int publ_bistudpr; /* 0x01e4 BIST User data pattern*/
+ volatile unsigned int publ_bistgsr; /* 0x01e8 BIST general status*/
+ volatile unsigned int publ_bistwer; /* 0x01ec BIST word error*/
+ volatile unsigned int publ_bistber[4]; /* 0x01f0 ~ 0x01fc BIST bit error*/
+ volatile unsigned int publ_bistwcsr; /* 0x0200 BIST word count status*/
+ volatile unsigned int publ_bistfwr[3]; /* 0x0204 ~ 0x020c BIST fail word*/
+ volatile unsigned int publ_resv2[10]; /* 0x0210 ~ 0x0234 catr*/
+ volatile unsigned int publ_iovcr[2]; /* 0x0238 ~ 0x023c IO VREF control*/
+ volatile unsigned int publ_zqcr; /* 0x0240 zq impedance control*/
+ volatile unsigned int publ_zq0pr; /* 0x0244 zq impedance program*/
+ volatile unsigned int publ_zq0dr; /* 0x0248 zq impedance data*/
+ volatile unsigned int publ_zq0sr; /* 0x024c zq impedance status*/
+ volatile unsigned int publ_resv3; /* 0x0250 */
+ volatile unsigned int publ_zq1pr; /* 0x0254 zq impedance program*/
+ volatile unsigned int publ_zq1dr; /* 0x0258 zq impedance data*/
+ volatile unsigned int publ_zq1sr; /* 0x025c zq impedance status*/
+ volatile unsigned int publ_resv4; /* 0x0260 */
+ volatile unsigned int publ_zq2pr; /* 0x0264 zq impedance program*/
+ volatile unsigned int publ_zq2dr; /* 0x0268 zq impedance data*/
+ volatile unsigned int publ_zq2sr; /* 0x026c zq impedance status*/
+ volatile unsigned int publ_resv5; /* 0x0270 */
+ volatile unsigned int publ_zq3pr; /* 0x0274 zq impedance program*/
+ volatile unsigned int publ_zq3dr; /* 0x0278 zq impedance data*/
+ volatile unsigned int publ_zq3sr; /* 0x027c zq impedance status*/
+ volatile unsigned int publ_dx0gcr[4]; /* 0x0280 ~ 0x028c datx8 general config*/
+ volatile unsigned int publ_dx0gsr[3]; /* 0x0290 ~ 0x0298 datx8 general status*/
+ volatile unsigned int publ_dx0bdlr[7]; /* 0x029c ~ 0x02b4 datx8 bit delay line*/
+ volatile unsigned int publ_dx0lcdlr[3]; /* 0x02b8 ~ 0x02c0 datx8 local cal*/
+ volatile unsigned int publ_dx0mdlr; /* 0x02c4 datx8 master delay line*/
+ volatile unsigned int publ_dx0gtr; /* 0x02c8 datx8 general timing*/
+ volatile unsigned int publ_resv6[13]; /* 0x02cc ~ 0x02fc */
+ volatile unsigned int publ_dx1gcr[4]; /* 0x0300 ~ 0x030c datx8 general config*/
+ volatile unsigned int publ_dx1gsr[3]; /* 0x0310 ~ 0x0318 datx8 general status*/
+ volatile unsigned int publ_dx1bdlr[7]; /* 0x031c ~ 0x0334 datx8 bit delay line*/
+ volatile unsigned int publ_dx1lcdlr[3]; /* 0x0338 ~ 0x0340 datx8 local cal*/
+ volatile unsigned int publ_dx1mdlr; /* 0x0344 datx8 master delay line*/
+ volatile unsigned int publ_dx1gtr; /* 0x0348 datx8 general timing*/
+ volatile unsigned int publ_resv7[13]; /* 0x034c ~ 0x037c */
+ volatile unsigned int publ_dx2gcr[4]; /* 0x0380 ~ 0x038c datx8 general config*/
+ volatile unsigned int publ_dx2gsr[3]; /* 0x0390 ~ 0x0398 datx8 general status*/
+ volatile unsigned int publ_dx2bdlr[7]; /* 0x039c ~ 0x03b4 datx8 bit delay line*/
+ volatile unsigned int publ_dx2lcdlr[3]; /* 0x03b8 ~ 0x03c0 datx8 local cal*/
+ volatile unsigned int publ_dx2mdlr; /* 0x03c4 datx8 master delay line*/
+ volatile unsigned int publ_dx2gtr; /* 0x03c8 datx8 general timing*/
+ volatile unsigned int publ_resv8[13]; /* 0x03cc ~ 0x03fc */
+ volatile unsigned int publ_dx3gcr[4]; /* 0x0400 ~ 0x040c datx8 general config*/
+ volatile unsigned int publ_dx3gsr[3]; /* 0x0410 ~ 0x0418 datx8 general status*/
+ volatile unsigned int publ_dx3bdlr[7]; /* 0x041c ~ 0x0434 datx8 bit delay line*/
+ volatile unsigned int publ_dx3lcdlr[3]; /* 0x0438 ~ 0x0440 datx8 local cal*/
+ volatile unsigned int publ_dx3mdlr; /* 0x0444 datx8 master delay line*/
+ volatile unsigned int publ_dx3gtr; /* 0x0448 datx8 general timing*/
+ volatile unsigned int publ_resv9[13]; /* 0x044c ~ 0x047c */
+ volatile unsigned int publ_dx4gcr[4]; /* 0x0480 ~ 0x048c datx8 general config*/
+ volatile unsigned int publ_dx4gsr[3]; /* 0x0490 ~ 0x0498 datx8 general status*/
+ volatile unsigned int publ_dx4bdlr[7]; /* 0x049c ~ 0x04b4 datx8 bit delay line*/
+ volatile unsigned int publ_dx4lcdlr[3]; /* 0x04b8 ~ 0x04c0 datx8 local cal*/
+ volatile unsigned int publ_dx4mdlr; /* 0x04c4 datx8 master delay line*/
+ volatile unsigned int publ_dx4gtr; /* 0x04c8 datx8 general timing*/
+ volatile unsigned int publ_resv10[13]; /* 0x04cc ~ 0x04fc */
+ volatile unsigned int publ_dx5gcr[4]; /* 0x0500 ~ 0x050c datx8 general config*/
+ volatile unsigned int publ_dx5gsr[3]; /* 0x0510 ~ 0x0518 datx8 general status*/
+ volatile unsigned int publ_dx5bdlr[7]; /* 0x051c ~ 0x0534 datx8 bit delay line*/
+ volatile unsigned int publ_dx5lcdlr[3]; /* 0x0538 ~ 0x0540 datx8 local cal*/
+ volatile unsigned int publ_dx5mdlr; /* 0x0544 datx8 master delay line*/
+ volatile unsigned int publ_dx5gtr; /* 0x0548 datx8 general timing*/
+ volatile unsigned int publ_resv11[13]; /* 0x054c ~ 0x057c */
+ volatile unsigned int publ_dx6gcr[4]; /* 0x0580 ~ 0x058c datx8 general config*/
+ volatile unsigned int publ_dx6gsr[3]; /* 0x0590 ~ 0x0598 datx8 general status*/
+ volatile unsigned int publ_dx6bdlr[7]; /* 0x059c ~ 0x05b4 datx8 bit delay line*/
+ volatile unsigned int publ_dx6lcdlr[3]; /* 0x05b8 ~ 0x05c0 datx8 local cal*/
+ volatile unsigned int publ_dx6mdlr; /* 0x05c4 datx8 master delay line*/
+ volatile unsigned int publ_dx6gtr; /* 0x05c8 datx8 general timing*/
+ volatile unsigned int publ_resv12[13]; /* 0x05cc ~ 0x05fc */
+ volatile unsigned int publ_dx7gcr[4]; /* 0x0600 ~ 0x060c datx8 general config*/
+ volatile unsigned int publ_dx7gsr[3]; /* 0x0610 ~ 0x0618 datx8 general status*/
+ volatile unsigned int publ_dx7bdlr[7]; /* 0x061c ~ 0x0634 datx8 bit delay line*/
+ volatile unsigned int publ_dx7lcdlr[3]; /* 0x0638 ~ 0x0640 datx8 local cal*/
+ volatile unsigned int publ_dx7mdlr; /* 0x0644 datx8 master delay line*/
+ volatile unsigned int publ_dx7gtr; /* 0x0648 datx8 general timing*/
+ volatile unsigned int publ_resv13[13]; /* 0x064c ~ 0x067c */
+ volatile unsigned int publ_dx8gcr[4]; /* 0x0680 ~ 0x068c datx8 general config*/
+ volatile unsigned int publ_dx8gsr[3]; /* 0x0690 ~ 0x0698 datx8 general status*/
+ volatile unsigned int publ_dx8bdlr[7]; /* 0x069c ~ 0x06b4 datx8 bit delay line*/
+ volatile unsigned int publ_dx8lcdlr[3]; /* 0x06b8 ~ 0x06c0 datx8 local cal*/
+ volatile unsigned int publ_dx8mdlr; /* 0x06c4 datx8 master delay line*/
+ volatile unsigned int publ_dx8gtr; /* 0x06c8 datx8 general timing*/
+ volatile unsigned int publ_resv14[13]; /* 0x06cc ~ 0x06fc */
+}DMC_PUBL_REG_INFO_T,*DMC_PUBL_REG_INFO_PTR_T;
+
+/* PUBL DSGCR */
+#define BIT_DSGCR_PUREN ( BIT(0) )
+#define BIT_DSGCR_BDISEN ( BIT(1) )
+#define BIT_DSGCR_ZUEN ( BIT(2) )
+#define BIT_DSGCR_LPIOPD ( BIT(3) )
+#define BIT_DSGCR_LPPLLPD ( BIT(4) )
+#define BIT_DSGCR_CUAEN ( BIT(5) )
+#define BIT_DSGCR_DQSGX ( BIT(6) | BIT(7) )
+#define BIT_DSGCR_PUAD ( BIT(8) | BIT(9) | BIT(10) | BIT(11) )
+#define BIT_DSGCR_DTOODT ( BIT(12) )
+#define BIT_DSGCR_DTOPDO ( BIT(13) )
+#define BIT_DSGCR_DTOPDR ( BIT(14) )
+#define BIT_DSGCR_DTOIOM ( BIT(15) )
+#define BIT_DSGCR_DTOOE ( BIT(16) )
+#define BIT_DSGCR_ATOAE ( BIT(17) )
+#define BIT_DSGCR_RPMODE ( BIT(18) )
+#define BIT_DSGCR_SDRMODE ( BIT(19) | BIT(20) )
+
+/* PUBL PIR [0x0004] */
+#define BIT_PIR_INIT ( BIT(0) )
+#define BIT_PIR_ZCAL ( BIT(1) )
+#define BIT_PIR_CA ( BIT(2) )
+#define BIT_PIR_PLLINIT ( BIT(4) )
+#define BIT_PIR_DCAL ( BIT(5) )
+#define BIT_PIR_PHYRST ( BIT(6) )
+#define BIT_PIR_DRAMRST ( BIT(7) )
+#define BIT_PIR_DRAMINIT ( BIT(8) )
+#define BIT_PIR_WL ( BIT(9) )
+#define BIT_PIR_QSGATE ( BIT(10) )
+#define BIT_PIR_WLADJ ( BIT(11) )
+#define BIT_PIR_RDDSKW ( BIT(12) )
+#define BIT_PIR_WDDSKW ( BIT(13) )
+#define BIT_PIR_RDEYE ( BIT(14) )
+#define BIT_PIR_WDEYE ( BIT(15) )
+#define BIT_PIR_ICPC ( BIT(16) )
+#define BIT_PIR_PLLBYP ( BIT(17) )
+#define BIT_PIR_CTLDINIT ( BIT(18) )
+#define BIT_PIR_RDIMMINIT ( BIT(19) )
+#define BIT_PIR_CLRSR ( BIT(27) )
+#define BIT_PIR_LOOKBYP ( BIT(28) )
+#define BIT_PIR_DCALBYP ( BIT(29) )
+#define BIT_PIR_ZCALBYP ( BIT(30) )
+#define BIT_PIR_INITBYP ( BIT(31) )
+
+
+//#define EMC_FREQ_AUTO_TEST
+
+#endif