xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/sdram_rv1108_pctl_phy.h (revision 5d4a323c781a8f997dbac59d5a73c71fa1c7e0ad)
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