124b30f4fSZhihuan He /* 224b30f4fSZhihuan He * Copyright (C) 2018 Rockchip Electronics Co., Ltd 324b30f4fSZhihuan He * Author: Zhihuan He <huan.he@rock-chips.com> 424b30f4fSZhihuan He * SPDX-License-Identifier: GPL-2.0+ 524b30f4fSZhihuan He */ 624b30f4fSZhihuan He 724b30f4fSZhihuan He #ifndef _ASM_ARCH_SDRAM_RV1108_PCTL_PHY_H 824b30f4fSZhihuan He #define _ASM_ARCH_SDRAM_RV1108_PCTL_PHY_H 924b30f4fSZhihuan He 1024b30f4fSZhihuan He #include <common.h> 1124b30f4fSZhihuan He 1224b30f4fSZhihuan He struct ddr_pctl { 1324b30f4fSZhihuan He u32 scfg; 1424b30f4fSZhihuan He u32 sctl; 1524b30f4fSZhihuan He u32 stat; 1624b30f4fSZhihuan He u32 intrstat; 1724b30f4fSZhihuan He u32 reserved0[(0x40 - 0x10) / 4]; 1824b30f4fSZhihuan He u32 mcmd; 1924b30f4fSZhihuan He u32 powctl; 2024b30f4fSZhihuan He u32 powstat; 2124b30f4fSZhihuan He u32 cmdtstat; 2224b30f4fSZhihuan He u32 cmdtstaten; 2324b30f4fSZhihuan He u32 reserved1[(0x60 - 0x54) / 4]; 2424b30f4fSZhihuan He u32 mrrcfg0; 2524b30f4fSZhihuan He u32 mrrstat0; 2624b30f4fSZhihuan He u32 mrrstat1; 2724b30f4fSZhihuan He u32 reserved2[(0x7c - 0x6c) / 4]; 2824b30f4fSZhihuan He u32 mcfg1; 2924b30f4fSZhihuan He u32 mcfg; 3024b30f4fSZhihuan He u32 ppcfg; 3124b30f4fSZhihuan He u32 mstat; 3224b30f4fSZhihuan He u32 lpddr2zqcfg; 3324b30f4fSZhihuan He u32 reserved3; 3424b30f4fSZhihuan He u32 dtupdes; 3524b30f4fSZhihuan He u32 dtuna; 3624b30f4fSZhihuan He u32 dtune; 3724b30f4fSZhihuan He u32 dtuprd0; 3824b30f4fSZhihuan He u32 dtuprd1; 3924b30f4fSZhihuan He u32 dtuprd2; 4024b30f4fSZhihuan He u32 dtuprd3; 4124b30f4fSZhihuan He u32 dtuawdt; 4224b30f4fSZhihuan He u32 reserved4[(0xc0 - 0xb4) / 4]; 4324b30f4fSZhihuan He u32 togcnt1u; 4424b30f4fSZhihuan He u32 tinit; 4524b30f4fSZhihuan He u32 trsth; 4624b30f4fSZhihuan He u32 togcnt100n; 4724b30f4fSZhihuan He u32 trefi; 4824b30f4fSZhihuan He u32 tmrd; 4924b30f4fSZhihuan He u32 trfc; 5024b30f4fSZhihuan He u32 trp; 5124b30f4fSZhihuan He u32 trtw; 5224b30f4fSZhihuan He u32 tal; 5324b30f4fSZhihuan He u32 tcl; 5424b30f4fSZhihuan He u32 tcwl; 5524b30f4fSZhihuan He u32 tras; 5624b30f4fSZhihuan He u32 trc; 5724b30f4fSZhihuan He u32 trcd; 5824b30f4fSZhihuan He u32 trrd; 5924b30f4fSZhihuan He u32 trtp; 6024b30f4fSZhihuan He u32 twr; 6124b30f4fSZhihuan He u32 twtr; 6224b30f4fSZhihuan He u32 texsr; 6324b30f4fSZhihuan He u32 txp; 6424b30f4fSZhihuan He u32 txpdll; 6524b30f4fSZhihuan He u32 tzqcs; 6624b30f4fSZhihuan He u32 tzqcsi; 6724b30f4fSZhihuan He u32 tdqs; 6824b30f4fSZhihuan He u32 tcksre; 6924b30f4fSZhihuan He u32 tcksrx; 7024b30f4fSZhihuan He u32 tcke; 7124b30f4fSZhihuan He u32 tmod; 7224b30f4fSZhihuan He u32 trstl; 7324b30f4fSZhihuan He u32 tzqcl; 7424b30f4fSZhihuan He u32 tmrr; 7524b30f4fSZhihuan He u32 tckesr; 7624b30f4fSZhihuan He u32 tdpd; 7724b30f4fSZhihuan He u32 trefi_mem_ddr3; 7824b30f4fSZhihuan He u32 reserved5[(0x180 - 0x14c) / 4]; 7924b30f4fSZhihuan He u32 ecccfg; 8024b30f4fSZhihuan He u32 ecctst; 8124b30f4fSZhihuan He u32 eccclr; 8224b30f4fSZhihuan He u32 ecclog; 8324b30f4fSZhihuan He u32 reserved6[(0x200 - 0x190) / 4]; 8424b30f4fSZhihuan He u32 dtuwactl; 8524b30f4fSZhihuan He u32 dturactl; 8624b30f4fSZhihuan He u32 dtucfg; 8724b30f4fSZhihuan He u32 dtuectl; 8824b30f4fSZhihuan He u32 dtuwd0; 8924b30f4fSZhihuan He u32 dtuwd1; 9024b30f4fSZhihuan He u32 dtuwd2; 9124b30f4fSZhihuan He u32 dtuwd3; 9224b30f4fSZhihuan He u32 dtuwdm; 9324b30f4fSZhihuan He u32 dturd0; 9424b30f4fSZhihuan He u32 dturd1; 9524b30f4fSZhihuan He u32 dturd2; 9624b30f4fSZhihuan He u32 dturd3; 9724b30f4fSZhihuan He u32 dtulfsrwd; 9824b30f4fSZhihuan He u32 dtulfsrrd; 9924b30f4fSZhihuan He u32 dtueaf; 10024b30f4fSZhihuan He u32 dfitctrldelay; 10124b30f4fSZhihuan He u32 dfiodtcfg; 10224b30f4fSZhihuan He u32 dfiodtcfg1; 10324b30f4fSZhihuan He u32 dfiodtrankmap; 10424b30f4fSZhihuan He u32 dfitphywrdata; 10524b30f4fSZhihuan He u32 dfitphywrlat; 10624b30f4fSZhihuan He u32 dfitphywrdatalat; 10724b30f4fSZhihuan He u32 reserved7; 10824b30f4fSZhihuan He u32 dfitrddataen; 10924b30f4fSZhihuan He u32 dfitphyrdlat; 11024b30f4fSZhihuan He u32 reserved8[(0x270 - 0x268) / 4]; 11124b30f4fSZhihuan He u32 dfitphyupdtype0; 11224b30f4fSZhihuan He u32 dfitphyupdtype1; 11324b30f4fSZhihuan He u32 dfitphyupdtype2; 11424b30f4fSZhihuan He u32 dfitphyupdtype3; 11524b30f4fSZhihuan He u32 dfitctrlupdmin; 11624b30f4fSZhihuan He u32 dfitctrlupdmax; 11724b30f4fSZhihuan He u32 dfitctrlupddly; 11824b30f4fSZhihuan He u32 reserved9; 11924b30f4fSZhihuan He u32 dfiupdcfg; 12024b30f4fSZhihuan He u32 dfitrefmski; 12124b30f4fSZhihuan He u32 dfitctrlupdi; 12224b30f4fSZhihuan He u32 reserved10[(0x2ac - 0x29c) / 4]; 12324b30f4fSZhihuan He u32 dfitrcfg0; 12424b30f4fSZhihuan He u32 dfitrstat0; 12524b30f4fSZhihuan He u32 dfitrwrlvlen; 12624b30f4fSZhihuan He u32 dfitrrdlvlen; 12724b30f4fSZhihuan He u32 dfitrrdlvlgateen; 12824b30f4fSZhihuan He u32 dfiststat0; 12924b30f4fSZhihuan He u32 dfistcfg0; 13024b30f4fSZhihuan He u32 dfistcfg1; 13124b30f4fSZhihuan He u32 reserved11; 13224b30f4fSZhihuan He u32 dfitdramclken; 13324b30f4fSZhihuan He u32 dfitdramclkdis; 13424b30f4fSZhihuan He u32 dfistcfg2; 13524b30f4fSZhihuan He u32 dfistparclr; 13624b30f4fSZhihuan He u32 dfistparlog; 13724b30f4fSZhihuan He u32 reserved12[(0x2f0 - 0x2e4) / 4]; 13824b30f4fSZhihuan He u32 dfilpcfg0; 13924b30f4fSZhihuan He u32 reserved13[(0x300 - 0x2f4) / 4]; 14024b30f4fSZhihuan He u32 dfitrwrlvlresp0; 14124b30f4fSZhihuan He u32 dfitrwrlvlresp1; 14224b30f4fSZhihuan He u32 dfitrwrlvlresp2; 14324b30f4fSZhihuan He u32 dfitrrdlvlresp0; 14424b30f4fSZhihuan He u32 dfitrrdlvlresp1; 14524b30f4fSZhihuan He u32 dfitrrdlvlresp2; 14624b30f4fSZhihuan He u32 dfitrwrlvldelay0; 14724b30f4fSZhihuan He u32 dfitrwrlvldelay1; 14824b30f4fSZhihuan He u32 dfitrwrlvldelay2; 14924b30f4fSZhihuan He u32 dfitrrdlvldelay0; 15024b30f4fSZhihuan He u32 dfitrrdlvldelay1; 15124b30f4fSZhihuan He u32 dfitrrdlvldelay2; 15224b30f4fSZhihuan He u32 dfitrrdlvlgatedelay0; 15324b30f4fSZhihuan He u32 dfitrrdlvlgatedelay1; 15424b30f4fSZhihuan He u32 dfitrrdlvlgatedelay2; 15524b30f4fSZhihuan He u32 dfitrcmd; 15624b30f4fSZhihuan He u32 reserved14[(0x3f8 - 0x340) / 4]; 15724b30f4fSZhihuan He u32 ipvr; 15824b30f4fSZhihuan He u32 iptr; 15924b30f4fSZhihuan He }; 16024b30f4fSZhihuan He check_member(ddr_pctl, iptr, 0x03fc); 16124b30f4fSZhihuan He 16224b30f4fSZhihuan He struct ddr_phy { 16324b30f4fSZhihuan He u32 phy_reg0; 16424b30f4fSZhihuan He u32 phy_reg1; 16524b30f4fSZhihuan He u32 phy_reg2; 16624b30f4fSZhihuan He u32 phy_reg3; 16724b30f4fSZhihuan He u32 reserved0; 16824b30f4fSZhihuan He u32 phy_reg5; 16924b30f4fSZhihuan He u32 phy_reg6; 17024b30f4fSZhihuan He u32 reserveds1[(0x24 - 0x1c) / 4]; 17124b30f4fSZhihuan He u32 phy_reg9; 17224b30f4fSZhihuan He u32 reserveds2[(0x2c - 0x28) / 4]; 17324b30f4fSZhihuan He u32 phy_regb; 17424b30f4fSZhihuan He u32 phy_regc; 17524b30f4fSZhihuan He u32 reserveds3[(0x44 - 0x34) / 4]; 17624b30f4fSZhihuan He u32 phy_reg11; 17724b30f4fSZhihuan He u32 phy_reg12; 17824b30f4fSZhihuan He u32 phy_reg13; 17924b30f4fSZhihuan He u32 phy_reg14; 18024b30f4fSZhihuan He u32 reserved4; 18124b30f4fSZhihuan He u32 phy_reg16; 18224b30f4fSZhihuan He u32 phy_reg17; 18324b30f4fSZhihuan He u32 phy_reg18; 18424b30f4fSZhihuan He u32 reserveds5[(0x80 - 0x64) / 4]; 18524b30f4fSZhihuan He u32 phy_reg20; 18624b30f4fSZhihuan He u32 phy_reg21; 18724b30f4fSZhihuan He u32 reserveds6[(0x98 - 0x88) / 4]; 18824b30f4fSZhihuan He u32 phy_reg26; 18924b30f4fSZhihuan He u32 phy_reg27; 19024b30f4fSZhihuan He u32 phy_reg28; 19124b30f4fSZhihuan He u32 reserveds7[(0xac - 0xa4) / 4]; 19224b30f4fSZhihuan He u32 phy_reg2b; 193b86c816cSZhihuan He u32 phy_reg2c; 194b86c816cSZhihuan He u32 reserveds8[(0xb8 - 0xb4) / 4]; 19524b30f4fSZhihuan He u32 phy_reg2e; 19624b30f4fSZhihuan He u32 phy_reg2f; 19724b30f4fSZhihuan He u32 phy_reg30; 19824b30f4fSZhihuan He u32 phy_reg31; 19924b30f4fSZhihuan He u32 reserveds9[(0xd8 - 0xc8) / 4]; 20024b30f4fSZhihuan He u32 phy_reg36; 20124b30f4fSZhihuan He u32 phy_reg37; 20224b30f4fSZhihuan He u32 phy_reg38; 20324b30f4fSZhihuan He u32 reserveds10[(0xec - 0xe4) / 4]; 20424b30f4fSZhihuan He u32 phy_reg3b; 205b86c816cSZhihuan He u32 phy_reg3c; 206b86c816cSZhihuan He u32 reserveds11[(0xf8 - 0xf4) / 4]; 20724b30f4fSZhihuan He u32 phy_reg3e; 20824b30f4fSZhihuan He u32 phy_reg3f; 20924b30f4fSZhihuan He u32 reserveds12[(0x1c0 - 0x100) / 4]; 21024b30f4fSZhihuan He u32 phy_reg_skew_cs0data[(0x218 - 0x1c0) / 4]; 21124b30f4fSZhihuan He u32 reserveds13[(0x28c - 0x218) / 4]; 21224b30f4fSZhihuan He u32 phy_vref; 213b86c816cSZhihuan He /*dll bypass switch reg,0x290*/ 214b86c816cSZhihuan He u32 phy_regdll; 21524b30f4fSZhihuan He u32 reserveds14[(0x2c0 - 0x294) / 4]; 21624b30f4fSZhihuan He u32 phy_reg_ca_skew[(0x2f8 - 0x2c0) / 4]; 21724b30f4fSZhihuan He u32 reserveds15[(0x300 - 0x2f8) / 4]; 21824b30f4fSZhihuan He u32 phy_reg_skew_cs1data[(0x358 - 0x300) / 4]; 21924b30f4fSZhihuan He u32 reserveds16[(0x3c0 - 0x358) / 4]; 22024b30f4fSZhihuan He u32 phy_regf0; 22124b30f4fSZhihuan He u32 phy_regf1; 222b86c816cSZhihuan He u32 reserveds17[(0x3e4 - 0x3c8) / 4]; 223b86c816cSZhihuan He u32 phy_regf9; 22424b30f4fSZhihuan He u32 phy_regfa; 22524b30f4fSZhihuan He u32 phy_regfb; 22624b30f4fSZhihuan He u32 phy_regfc; 22724b30f4fSZhihuan He u32 reserved18; 22824b30f4fSZhihuan He u32 reserved19; 22924b30f4fSZhihuan He u32 phy_regff; 23024b30f4fSZhihuan He }; 23124b30f4fSZhihuan He check_member(ddr_phy, phy_regff, 0x03fc); 23224b30f4fSZhihuan He 233b86c816cSZhihuan He union noc_timing_t { 234b86c816cSZhihuan He u32 d32; 235b86c816cSZhihuan He struct { 236b86c816cSZhihuan He unsigned acttoact : 6; 237b86c816cSZhihuan He unsigned rdtomiss : 6; 238b86c816cSZhihuan He unsigned wrtomiss : 6; 239b86c816cSZhihuan He unsigned burstlen : 3; 240b86c816cSZhihuan He unsigned rdtowr : 5; 241b86c816cSZhihuan He unsigned wrtord : 5; 242b86c816cSZhihuan He unsigned bwratio : 1; 243b86c816cSZhihuan He } b; 244b86c816cSZhihuan He }; 245b86c816cSZhihuan He 246b86c816cSZhihuan He union noc_activate_t { 247b86c816cSZhihuan He u32 d32; 248b86c816cSZhihuan He struct { 249b86c816cSZhihuan He unsigned rrd : 4; 250b86c816cSZhihuan He unsigned faw : 6; 251b86c816cSZhihuan He unsigned fawbank : 1; 252b86c816cSZhihuan He unsigned reserved : 21; 253b86c816cSZhihuan He } b; 254b86c816cSZhihuan He }; 255b86c816cSZhihuan He 25624b30f4fSZhihuan He struct ddr_timing { 25724b30f4fSZhihuan He u32 freq; 25824b30f4fSZhihuan He struct pctl_timing { 25924b30f4fSZhihuan He u32 togcnt1u; 26024b30f4fSZhihuan He u32 tinit; 26124b30f4fSZhihuan He u32 trsth; 26224b30f4fSZhihuan He u32 togcnt100n; 26324b30f4fSZhihuan He u32 trefi; 26424b30f4fSZhihuan He u32 tmrd; 26524b30f4fSZhihuan He u32 trfc; 26624b30f4fSZhihuan He u32 trp; 26724b30f4fSZhihuan He u32 trtw; 26824b30f4fSZhihuan He u32 tal; 26924b30f4fSZhihuan He u32 tcl; 27024b30f4fSZhihuan He u32 tcwl; 27124b30f4fSZhihuan He u32 tras; 27224b30f4fSZhihuan He u32 trc; 27324b30f4fSZhihuan He u32 trcd; 27424b30f4fSZhihuan He u32 trrd; 27524b30f4fSZhihuan He u32 trtp; 27624b30f4fSZhihuan He u32 twr; 27724b30f4fSZhihuan He u32 twtr; 27824b30f4fSZhihuan He u32 texsr; 27924b30f4fSZhihuan He u32 txp; 28024b30f4fSZhihuan He u32 txpdll; 28124b30f4fSZhihuan He u32 tzqcs; 28224b30f4fSZhihuan He u32 tzqcsi; 28324b30f4fSZhihuan He u32 tdqs; 28424b30f4fSZhihuan He u32 tcksre; 28524b30f4fSZhihuan He u32 tcksrx; 28624b30f4fSZhihuan He u32 tcke; 28724b30f4fSZhihuan He u32 tmod; 28824b30f4fSZhihuan He u32 trstl; 28924b30f4fSZhihuan He u32 tzqcl; 29024b30f4fSZhihuan He u32 tmrr; 29124b30f4fSZhihuan He u32 tckesr; 29224b30f4fSZhihuan He u32 tdpd; 29324b30f4fSZhihuan He u32 trefi_mem_ddr3; 29424b30f4fSZhihuan He } pctl_timing; 29524b30f4fSZhihuan He struct phy_timing { 29624b30f4fSZhihuan He u32 mr[4]; 29724b30f4fSZhihuan He u32 bl; 29824b30f4fSZhihuan He u32 cl_al; 29924b30f4fSZhihuan He } phy_timing; 300b86c816cSZhihuan He union noc_timing_t noc_timing; 30124b30f4fSZhihuan He u32 readlatency; 302b86c816cSZhihuan He union noc_activate_t activate; 30324b30f4fSZhihuan He u32 devtodev; 30424b30f4fSZhihuan He }; 30524b30f4fSZhihuan He 30624b30f4fSZhihuan He struct ddr_config { 30724b30f4fSZhihuan He /* 30824b30f4fSZhihuan He * 000: lpddr 30924b30f4fSZhihuan He * 001: ddr 31024b30f4fSZhihuan He * 010: ddr2 31124b30f4fSZhihuan He * 011: ddr3 31224b30f4fSZhihuan He * 100: lpddr2-s2 31324b30f4fSZhihuan He * 101: lpddr2-s4 31424b30f4fSZhihuan He * 110: lpddr3 31524b30f4fSZhihuan He */ 31624b30f4fSZhihuan He u32 ddr_type; 31724b30f4fSZhihuan He u32 chn_cnt; 31824b30f4fSZhihuan He u32 rank; 31924b30f4fSZhihuan He u32 cs0_row; 32024b30f4fSZhihuan He u32 cs1_row; 32124b30f4fSZhihuan He 32224b30f4fSZhihuan He /* 2: 4bank, 3: 8bank */ 32324b30f4fSZhihuan He u32 bank; 32424b30f4fSZhihuan He u32 col; 32524b30f4fSZhihuan He /* die buswidth, 2:32bit, 1:16bit, 0:8bit */ 32624b30f4fSZhihuan He u32 dbw; 32724b30f4fSZhihuan He /* bw(0: 8bit, 1: 16bit, 2: 32bit) */ 32824b30f4fSZhihuan He u32 bw; 32924b30f4fSZhihuan He }; 33024b30f4fSZhihuan He 331b86c816cSZhihuan He struct ddr_schedule { 332b86c816cSZhihuan He u32 col; 333b86c816cSZhihuan He u32 bank; 334b86c816cSZhihuan He u32 row; 335b86c816cSZhihuan He }; 336b86c816cSZhihuan He 33724b30f4fSZhihuan He enum { 33824b30f4fSZhihuan He PHY_LOW_SPEED_MHZ = 400, 33924b30f4fSZhihuan He /* PHY_REG0 */ 34024b30f4fSZhihuan He CHN_ENABLE_SHIFT = 4, 34124b30f4fSZhihuan He DQ_16BIT_EN_MASK = 3 << 4, 34224b30f4fSZhihuan He DQ_16BIT_EN = 3 << 4, 34324b30f4fSZhihuan He DQ_32BIT_EN_MASK = 0xf << 4, 34424b30f4fSZhihuan He DQ_32BIT_EN = 0xf << 4, 34524b30f4fSZhihuan He RESET_DIGITAL_CORE_SHIFT = 3, 34624b30f4fSZhihuan He RESET_DIGITAL_CORE_MASK = 1 << RESET_DIGITAL_CORE_SHIFT, 34724b30f4fSZhihuan He RESET_DIGITAL_CORE_ACT = 0, 34824b30f4fSZhihuan He RESET_DIGITAL_CORE_DIS = 1, 34924b30f4fSZhihuan He RESET_ANALOG_LOGIC_SHIFT = 2, 35024b30f4fSZhihuan He RESET_ANALOG_LOGIC_MASK = 1 << RESET_ANALOG_LOGIC_SHIFT, 35124b30f4fSZhihuan He RESET_ANALOG_LOGIC_ACT = 0, 35224b30f4fSZhihuan He RESET_ANALOG_LOGIC_DIS = 1, 35324b30f4fSZhihuan He 35424b30f4fSZhihuan He /* PHY_REG1 */ 35524b30f4fSZhihuan He MEMORY_SELECT_DDR3 = 0, 356b86c816cSZhihuan He MEMORY_SELECT_DDR2 = 1, 357b86c816cSZhihuan He MEMORY_SELECT_LPDDR2 = 2, 35824b30f4fSZhihuan He PHY_BL_8 = 1 << 2, 359b86c816cSZhihuan He PHY_BL_4 = 0 << 2, 36024b30f4fSZhihuan He 36124b30f4fSZhihuan He /* PHY_REG2 */ 36224b30f4fSZhihuan He DQS_GATE_TRAINING_SEL_CS0 = 1 << 5, 36324b30f4fSZhihuan He DQS_GATE_TRAINING_ACT = 1, 36424b30f4fSZhihuan He DQS_GATE_TRAINING_DIS = 0, 36524b30f4fSZhihuan He 36624b30f4fSZhihuan He /* PHY_REG12 */ 36724b30f4fSZhihuan He CMD_PRCOMP_SHIFT = 3, 36824b30f4fSZhihuan He CMD_PRCOMP_MASK = 0x1f << CMD_PRCOMP_SHIFT, 36924b30f4fSZhihuan He 37024b30f4fSZhihuan He /* DDRPHY_REG13 */ 37124b30f4fSZhihuan He CMD_DLL_BYPASS_SHIFT = 4, 37224b30f4fSZhihuan He CMD_DLL_BYPASS = 1, 37324b30f4fSZhihuan He CMD_DLL_BYPASS_MASK = 1, 37424b30f4fSZhihuan He CMD_DLL_BYPASS_DISABLE = 0, 37524b30f4fSZhihuan He 37624b30f4fSZhihuan He /* DDRPHY_REG14 */ 37724b30f4fSZhihuan He CK_DLL_BYPASS_SHIFT = 3, 37824b30f4fSZhihuan He CK_DLL_BYPASS = 1, 37924b30f4fSZhihuan He CK_DLL_BYPASS_DISABLE = 0, 38024b30f4fSZhihuan He 38124b30f4fSZhihuan He /* DDRPHY_REG26 */ 38224b30f4fSZhihuan He LEFT_CHN_A_DQ_DLL_SHIFT = 4, 38324b30f4fSZhihuan He LEFT_CHN_A_DQ_DLL_BYPASS = 1, 38424b30f4fSZhihuan He LEFT_CHN_A_DQ_DLL_BYPASS_MASK = 1, 38524b30f4fSZhihuan He LEFT_CHN_A_DQ_DLL_BYPASS_DIS = 0, 38624b30f4fSZhihuan He 38724b30f4fSZhihuan He /* DDRPHY_REG27 */ 38824b30f4fSZhihuan He LEFT_CHN_A_DQS_DLL_SHIFT = 3, 38924b30f4fSZhihuan He LEFT_CHN_A_DQS_DLL_BYPASS = 1, 39024b30f4fSZhihuan He LEFT_CHN_A_DQS_DLL_BYPASS_DIS = 0, 39124b30f4fSZhihuan He 39224b30f4fSZhihuan He /* DDRPHY_REG28 */ 393b86c816cSZhihuan He LEFT_CHN_A_READ_DQS_22_5_DELAY = 1, 39424b30f4fSZhihuan He LEFT_CHN_A_READ_DQS_45_DELAY = 2, 39524b30f4fSZhihuan He 39624b30f4fSZhihuan He /* DDRPHY_REG36 */ 39724b30f4fSZhihuan He RIGHT_CHN_A_DQ_DLL_SHIFT = 4, 39824b30f4fSZhihuan He RIGHT_CHN_A_DQ_DLL_BYPASS = 1, 39924b30f4fSZhihuan He RIGHT_CHN_A_DQ_DLL_BYPASS_MASK = 1, 40024b30f4fSZhihuan He RIGHT_CHN_A_DQ_DLL_BYPASS_DIS = 0, 40124b30f4fSZhihuan He 40224b30f4fSZhihuan He /* DDRPHY_REG37 */ 40324b30f4fSZhihuan He RIGHT_CHN_A_DQS_DLL_SHIFT = 3, 40424b30f4fSZhihuan He RIGHT_CHN_A_DQS_DLL_BYPASS = 1, 40524b30f4fSZhihuan He RIGHT_CHN_A_DQS_DLL_BYPASS_DIS = 0, 40624b30f4fSZhihuan He 40724b30f4fSZhihuan He /* DDRPHY_REG38 */ 408b86c816cSZhihuan He RIGHT_CHN_A_READ_DQS_22_5_DELAY = 1, 40924b30f4fSZhihuan He RIGHT_CHN_A_READ_DQS_45_DELAY = 2, 41024b30f4fSZhihuan He 41124b30f4fSZhihuan He /* PHY_REGDLL */ 41224b30f4fSZhihuan He RIGHT_CHN_A_TX_DQ_BYPASS_SHIFT = 2, 41324b30f4fSZhihuan He RIGHT_CHN_A_TX_DQ_BYPASS_SET = 1, 41424b30f4fSZhihuan He RIGHT_CHN_A_TX_DQ_BYPASS_DIS = 0, 41524b30f4fSZhihuan He LEFT_CHN_A_TX_DQ_BYPASS_SHIFT = 1, 41624b30f4fSZhihuan He LEFT_CHN_A_TX_DQ_BYPASS_SET = 1, 41724b30f4fSZhihuan He LEFT_CHN_A_TX_DQ_BYPASS_DIS = 0, 41824b30f4fSZhihuan He CMD_CK_DLL_BYPASS_SHIFT = 0, 41924b30f4fSZhihuan He CMD_CK_DLL_BYPASS_SET = 1, 42024b30f4fSZhihuan He CMD_CK_DLL_BYPASS_DIS = 0, 42124b30f4fSZhihuan He 42224b30f4fSZhihuan He /* PHY_REGFF */ 42324b30f4fSZhihuan He CHN_A_TRAINING_DONE_MASK = 3, 42424b30f4fSZhihuan He CHN_A_HIGH_8BIT_TRAINING_DONE = 1 << 1, 42524b30f4fSZhihuan He CHN_A_LOW_8BIT_TRAINING_DONE = 1, 42624b30f4fSZhihuan He }; 42724b30f4fSZhihuan He 428*5d4a323cSTang Yun ping /* DDRCTL */ 42924b30f4fSZhihuan He enum { 43024b30f4fSZhihuan He /* PCTL_SCTL */ 43124b30f4fSZhihuan He INIT_STATE = 0, 43224b30f4fSZhihuan He CFG_STATE = 1, 43324b30f4fSZhihuan He GO_STATE = 2, 43424b30f4fSZhihuan He SLEEP_STATE = 3, 43524b30f4fSZhihuan He WAKEUP_STATE = 4, 43624b30f4fSZhihuan He 43724b30f4fSZhihuan He /* PCTL_STAT*/ 43824b30f4fSZhihuan He PCTL_CTL_STAT_MASK = 0x7, 43924b30f4fSZhihuan He INIT_MEM = 0, 44024b30f4fSZhihuan He CONFIG = 1, 44124b30f4fSZhihuan He CONFIG_REQ = 2, 44224b30f4fSZhihuan He ACCESS = 3, 44324b30f4fSZhihuan He ACCESS_REQ = 4, 44424b30f4fSZhihuan He LOW_POWER = 5, 44524b30f4fSZhihuan He LOW_POWER_ENTRY_REQ = 6, 44624b30f4fSZhihuan He LOW_POWER_EXIT_REQ = 7, 44724b30f4fSZhihuan He 44824b30f4fSZhihuan He /* PCTL_MCMD */ 44924b30f4fSZhihuan He START_CMD = 0x80000000, 45024b30f4fSZhihuan He RANK_SEL_SHIFT = 20, 45124b30f4fSZhihuan He RANK_SEL_CS0 = 1, 45224b30f4fSZhihuan He RANK_SEL_CS1 = 2, 45324b30f4fSZhihuan He RANK_SEL_CS0_CS1 = 3, 45424b30f4fSZhihuan He BANK_ADDR_SHIFT = 17, 45524b30f4fSZhihuan He BANK_ADDR_MASK = 0x7, 45624b30f4fSZhihuan He CMD_ADDR_SHIFT = 4, 45724b30f4fSZhihuan He CMD_ADDR_MASK = 0x1fff, 458b86c816cSZhihuan He LPDDR23_MA_SHIFT = 4, 459b86c816cSZhihuan He LPDDR23_MA_MASK = 0xff, 460b86c816cSZhihuan He LPDDR23_OP_SHIFT = 12, 461b86c816cSZhihuan He LPDDR23_OP_MASK = 0xff, 46224b30f4fSZhihuan He DDR3_DLL_RESET = 1 << 8, 46324b30f4fSZhihuan He DESELECT_CMD = 0x0, 46424b30f4fSZhihuan He PREA_CMD = 0x1, 46524b30f4fSZhihuan He REF_CMD = 0x2, 46624b30f4fSZhihuan He MRS_CMD = 0x3, 46724b30f4fSZhihuan He ZQCS_CMD = 0x4, 46824b30f4fSZhihuan He ZQCL_CMD = 0x5, 46924b30f4fSZhihuan He RSTL_CMD = 0x6, 47024b30f4fSZhihuan He MPR_CMD = 0x8, 47124b30f4fSZhihuan He DFICTRLUPD_CMD = 0xa, 47224b30f4fSZhihuan He MR0 = 0x0, 47324b30f4fSZhihuan He MR1 = 0x1, 47424b30f4fSZhihuan He MR2 = 0x2, 47524b30f4fSZhihuan He MR3 = 0x3, 47624b30f4fSZhihuan He 47724b30f4fSZhihuan He /* PCTL_POWCTL */ 47824b30f4fSZhihuan He POWER_UP_START = 1, 47924b30f4fSZhihuan He POWER_UP_START_MASK = 1, 48024b30f4fSZhihuan He 48124b30f4fSZhihuan He /* PCTL_POWSTAT */ 48224b30f4fSZhihuan He POWER_UP_DONE = 1, 48324b30f4fSZhihuan He 48424b30f4fSZhihuan He /*PCTL_PPCFG*/ 48524b30f4fSZhihuan He PPMEM_EN_MASK = 1, 48624b30f4fSZhihuan He PPMEM_EN = 1, 48724b30f4fSZhihuan He PPMEM_DIS = 0, 48824b30f4fSZhihuan He /* PCTL_TREFI */ 48924b30f4fSZhihuan He UPD_REF = 0x80000000, 49024b30f4fSZhihuan He 49124b30f4fSZhihuan He /* PCTL_DFISTCFG0 */ 49224b30f4fSZhihuan He DFI_DATA_BYTE_DISABLE_EN_SHIFT = 2, 49324b30f4fSZhihuan He DFI_DATA_BYTE_DISABLE_EN = 1, 49424b30f4fSZhihuan He DFI_FREQ_RATIO_EN_SHIFT = 1, 49524b30f4fSZhihuan He DFI_FREQ_RATIO_EN = 1, 49624b30f4fSZhihuan He DFI_INIT_START_SHIFT = 0, 49724b30f4fSZhihuan He DFI_INIT_START_EN = 1, 49824b30f4fSZhihuan He 49924b30f4fSZhihuan He /* PCTL_DFISTCFG1 */ 50024b30f4fSZhihuan He DFI_DRAM_CLK_DISABLE_EN_DPD_SHIFT = 1, 50124b30f4fSZhihuan He DFI_DRAM_CLK_DISABLE_EN_DPD = 1, 50224b30f4fSZhihuan He DFI_DRAM_CLK_DISABLE_EN_SHIFT = 0, 50324b30f4fSZhihuan He DFI_DRAM_CLK_DISABLE_EN = 1, 50424b30f4fSZhihuan He 50524b30f4fSZhihuan He /* PCTL_DFISTCFG2 */ 50624b30f4fSZhihuan He PARITY_EN_SHIFT = 1, 50724b30f4fSZhihuan He PARITY_EN = 1, 50824b30f4fSZhihuan He PARITY_INTR_EN_SHIFT = 0, 50924b30f4fSZhihuan He PARITY_INTR_EN = 1, 51024b30f4fSZhihuan He 51124b30f4fSZhihuan He /* PCTL_DFILPCFG0 */ 512b86c816cSZhihuan He DFI_LP_EN_PD = 1, 513b86c816cSZhihuan He DFI_LP_WAKEUP_PD_SHIFT = 4, 514b86c816cSZhihuan He DFI_LP_WAKEUP_PD_32_CYCLES = 1, 51524b30f4fSZhihuan He DFI_LP_EN_SR_SHIFT = 8, 51624b30f4fSZhihuan He DFI_LP_EN_SR = 1, 51724b30f4fSZhihuan He DFI_LP_WAKEUP_SR_SHIFT = 12, 51824b30f4fSZhihuan He DFI_LP_WAKEUP_SR_32_CYCLES = 1, 51924b30f4fSZhihuan He DFI_TLP_RESP_SHIFT = 16, 52024b30f4fSZhihuan He DFI_TLP_RESP = 5, 52124b30f4fSZhihuan He 52224b30f4fSZhihuan He /* PCTL_DFITPHYUPDTYPE0 */ 52324b30f4fSZhihuan He TPHYUPD_TYPE0 = 1, 52424b30f4fSZhihuan He 52524b30f4fSZhihuan He /* PCTL_DFITPHYRDLAT */ 52624b30f4fSZhihuan He TPHY_RDLAT = 0xd, 52724b30f4fSZhihuan He 52824b30f4fSZhihuan He /* PCTL_DFITPHYWRDATA */ 52924b30f4fSZhihuan He TPHY_WRDATA = 0x0, 53024b30f4fSZhihuan He 53124b30f4fSZhihuan He /* PCTL_DFIUPDCFG */ 53224b30f4fSZhihuan He DFI_PHYUPD_DISABLE = 0 << 1, 53324b30f4fSZhihuan He DFI_CTRLUPD_DISABLE = 0, 53424b30f4fSZhihuan He 53524b30f4fSZhihuan He /* PCTL_DFIODTCFG */ 53624b30f4fSZhihuan He RANK0_ODT_WRITE_SEL_SHIFT = 3, 53724b30f4fSZhihuan He RANK0_ODT_WRITE_SEL = 1, 538b86c816cSZhihuan He RANK0_ODT_WRITE_DIS = 0, 53924b30f4fSZhihuan He RANK1_ODT_WRITE_SEL_SHIFT = 11, 54024b30f4fSZhihuan He RANK1_ODT_WRITE_SEL = 1, 541b86c816cSZhihuan He RANK1_ODT_WRITE_DIS = 0, 54224b30f4fSZhihuan He 54324b30f4fSZhihuan He /* PCTL_DFIODTCFG1 */ 54424b30f4fSZhihuan He ODT_LEN_BL8_W_SHIFT = 16, 54524b30f4fSZhihuan He ODT_LEN_BL8_W = 7, 546b86c816cSZhihuan He ODT_LEN_BL8_W_0 = 0, 54724b30f4fSZhihuan He 54824b30f4fSZhihuan He /* PCTL_MCFG */ 54924b30f4fSZhihuan He MDDR_LPDDR23_CLOCK_STOP_IDLE_DIS = 0 << 24, 550b86c816cSZhihuan He LPDDR2_EN = 3 << 22, 55124b30f4fSZhihuan He DDR3_EN = 1 << 5, 552b86c816cSZhihuan He DDR2_EN = 0 << 5, 553b86c816cSZhihuan He LPDDR2_S4 = 1 << 6, 55424b30f4fSZhihuan He MEM_BL_8 = 1, 555b86c816cSZhihuan He MEM_BL_4 = 0, 556b86c816cSZhihuan He MDDR_LPDDR2_BL_4 = 1 << 20, 557b86c816cSZhihuan He MDDR_LPDDR2_BL_8 = 2 << 20, 55824b30f4fSZhihuan He TFAW_CFG_5_TDDR = 1 << 18, 559b86c816cSZhihuan He TFAW_CFG_6_TDDR = 2 << 18, 56024b30f4fSZhihuan He PD_EXIT_SLOW_EXIT_MODE = 0 << 17, 561b86c816cSZhihuan He PD_EXIT_FAST_EXIT_MODE = 1 << 17, 56224b30f4fSZhihuan He PD_TYPE_ACT_PD = 1 << 16, 56324b30f4fSZhihuan He PD_IDLE_DISABLE = 0 << 8, 56424b30f4fSZhihuan He PD_IDLE_MASK = 0xff << 8, 56524b30f4fSZhihuan He PD_IDLE_SHIFT = 8, 566b86c816cSZhihuan He TWO_T_SHIFT = 3, 56724b30f4fSZhihuan He 56824b30f4fSZhihuan He /* PCTL_MCFG1 */ 56924b30f4fSZhihuan He SR_IDLE_MASK = 0xff, 57024b30f4fSZhihuan He HW_EXIT_IDLE_EN_SHIFT = 31, 57124b30f4fSZhihuan He HW_EXIT_IDLE_EN_MASK = 1 << HW_EXIT_IDLE_EN_SHIFT, 57224b30f4fSZhihuan He HW_EXIT_IDLE_EN = 1 << HW_EXIT_IDLE_EN_SHIFT, 57324b30f4fSZhihuan He 57424b30f4fSZhihuan He /* PCTL_SCFG */ 57524b30f4fSZhihuan He HW_LOW_POWER_EN = 1, 57624b30f4fSZhihuan He }; 57724b30f4fSZhihuan He 57824b30f4fSZhihuan He enum { 57924b30f4fSZhihuan He /* PHY_DDR3_RON_RTT */ 58024b30f4fSZhihuan He PHY_RON_RTT_DISABLE = 0, 58124b30f4fSZhihuan He PHY_RON_RTT_451OHM = 1, 58224b30f4fSZhihuan He PHY_RON_RTT_225OHM = 2, 58324b30f4fSZhihuan He PHY_RON_RTT_150OHM = 3, 58424b30f4fSZhihuan He PHY_RON_RTT_112OHM = 4, 58524b30f4fSZhihuan He PHY_RON_RTT_90OHM = 5, 58624b30f4fSZhihuan He PHY_RON_RTT_75OHM = 6, 58724b30f4fSZhihuan He PHY_RON_RTT_64OHM = 7, 58824b30f4fSZhihuan He 58924b30f4fSZhihuan He PHY_RON_RTT_56OHM = 16, 59024b30f4fSZhihuan He PHY_RON_RTT_50OHM = 17, 59124b30f4fSZhihuan He PHY_RON_RTT_45OHM = 18, 59224b30f4fSZhihuan He PHY_RON_RTT_41OHM = 19, 59324b30f4fSZhihuan He PHY_RON_RTT_37OHM = 20, 59424b30f4fSZhihuan He PHY_RON_RTT_34OHM = 21, 59524b30f4fSZhihuan He PHY_RON_RTT_33OHM = 22, 59624b30f4fSZhihuan He PHY_RON_RTT_30OHM = 23, 59724b30f4fSZhihuan He 59824b30f4fSZhihuan He PHY_RON_RTT_28OHM = 24, 59924b30f4fSZhihuan He PHY_RON_RTT_26OHM = 25, 60024b30f4fSZhihuan He PHY_RON_RTT_25OHM = 26, 60124b30f4fSZhihuan He PHY_RON_RTT_23OHM = 27, 60224b30f4fSZhihuan He PHY_RON_RTT_22OHM = 28, 60324b30f4fSZhihuan He PHY_RON_RTT_21OHM = 29, 60424b30f4fSZhihuan He PHY_RON_RTT_20OHM = 30, 60524b30f4fSZhihuan He PHY_RON_RTT_19OHM = 31, 60624b30f4fSZhihuan He }; 60724b30f4fSZhihuan He 60824b30f4fSZhihuan He #endif 609