xref: /rk3399_ARM-atf/plat/rockchip/rk3368/drivers/ddr/ddr_rk3368.h (revision 82cb2c1ad9897473743f08437d0a3995bed561b9)
16fba6e04STony Xie /*
26fba6e04STony Xie  * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
36fba6e04STony Xie  *
4*82cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
56fba6e04STony Xie  */
66fba6e04STony Xie 
76fba6e04STony Xie #ifndef __DDR_RK3368_H__
86fba6e04STony Xie #define __DDR_RK3368_H__
96fba6e04STony Xie 
106fba6e04STony Xie #define DDR_PCTL_SCFG		0x0
116fba6e04STony Xie #define DDR_PCTL_SCTL		0x4
126fba6e04STony Xie #define DDR_PCTL_STAT		0x8
136fba6e04STony Xie #define DDR_PCTL_INTRSTAT	0xc
146fba6e04STony Xie 
156fba6e04STony Xie #define DDR_PCTL_MCMD		0x40
166fba6e04STony Xie #define DDR_PCTL_POWCTL		0x44
176fba6e04STony Xie #define DDR_PCTL_POWSTAT	0x48
186fba6e04STony Xie #define DDR_PCTL_CMDTSTAT	0x4c
196fba6e04STony Xie #define DDR_PCTL_CMDTSTATEN	0x50
206fba6e04STony Xie #define DDR_PCTL_MRRCFG0	0x60
216fba6e04STony Xie #define DDR_PCTL_MRRSTAT0	0x64
226fba6e04STony Xie #define DDR_PCTL_MRRSTAT1	0x68
236fba6e04STony Xie #define DDR_PCTL_MCFG1		0x7c
246fba6e04STony Xie #define DDR_PCTL_MCFG		0x80
256fba6e04STony Xie #define DDR_PCTL_PPCFG		0x84
266fba6e04STony Xie #define DDR_PCTL_MSTAT		0x88
276fba6e04STony Xie #define DDR_PCTL_LPDDR2ZQCFG	0x8c
286fba6e04STony Xie #define DDR_PCTL_DTUPDES		0x94
296fba6e04STony Xie #define DDR_PCTL_DTUNA			0x98
306fba6e04STony Xie #define DDR_PCTL_DTUNE			0x9c
316fba6e04STony Xie #define DDR_PCTL_DTUPRD0		0xa0
326fba6e04STony Xie #define DDR_PCTL_DTUPRD1		0xa4
336fba6e04STony Xie #define DDR_PCTL_DTUPRD2		0xa8
346fba6e04STony Xie #define DDR_PCTL_DTUPRD3		0xac
356fba6e04STony Xie #define DDR_PCTL_DTUAWDT		0xb0
366fba6e04STony Xie #define DDR_PCTL_TOGCNT1U		0xc0
376fba6e04STony Xie #define DDR_PCTL_TINIT			0xc4
386fba6e04STony Xie #define DDR_PCTL_TRSTH			0xc8
396fba6e04STony Xie #define DDR_PCTL_TOGCNT100N		0xcc
406fba6e04STony Xie #define DDR_PCTL_TREFI			0xd0
416fba6e04STony Xie #define DDR_PCTL_TMRD			0xd4
426fba6e04STony Xie #define DDR_PCTL_TRFC			0xd8
436fba6e04STony Xie #define DDR_PCTL_TRP			0xdc
446fba6e04STony Xie #define DDR_PCTL_TRTW			0xe0
456fba6e04STony Xie #define DDR_PCTL_TAL			0xe4
466fba6e04STony Xie #define DDR_PCTL_TCL			0xe8
476fba6e04STony Xie #define DDR_PCTL_TCWL			0xec
486fba6e04STony Xie #define DDR_PCTL_TRAS			0xf0
496fba6e04STony Xie #define DDR_PCTL_TRC			0xf4
506fba6e04STony Xie #define DDR_PCTL_TRCD			0xf8
516fba6e04STony Xie #define DDR_PCTL_TRRD			0xfc
526fba6e04STony Xie #define DDR_PCTL_TRTP			0x100
536fba6e04STony Xie #define DDR_PCTL_TWR			0x104
546fba6e04STony Xie #define DDR_PCTL_TWTR			0x108
556fba6e04STony Xie #define DDR_PCTL_TEXSR			0x10c
566fba6e04STony Xie #define DDR_PCTL_TXP			0x110
576fba6e04STony Xie #define DDR_PCTL_TXPDLL			0x114
586fba6e04STony Xie #define DDR_PCTL_TZQCS			0x118
596fba6e04STony Xie #define DDR_PCTL_TZQCSI			0x11c
606fba6e04STony Xie #define DDR_PCTL_TDQS			0x120
616fba6e04STony Xie #define DDR_PCTL_TCKSRE			0x124
626fba6e04STony Xie #define DDR_PCTL_TCKSRX			0x128
636fba6e04STony Xie #define DDR_PCTL_TCKE			0x12c
646fba6e04STony Xie #define DDR_PCTL_TMOD			0x130
656fba6e04STony Xie #define DDR_PCTL_TRSTL			0x134
666fba6e04STony Xie #define DDR_PCTL_TZQCL			0x138
676fba6e04STony Xie #define DDR_PCTL_TMRR			0x13c
686fba6e04STony Xie #define DDR_PCTL_TCKESR			0x140
696fba6e04STony Xie #define DDR_PCTL_TDPD			0x144
706fba6e04STony Xie #define DDR_PCTL_TREFI_MEM_DDR3	0x148
716fba6e04STony Xie #define DDR_PCTL_ECCCFG			0x180
726fba6e04STony Xie #define DDR_PCTL_ECCTST			0x184
736fba6e04STony Xie #define DDR_PCTL_ECCCLR			0x188
746fba6e04STony Xie #define DDR_PCTL_ECCLOG			0x18c
756fba6e04STony Xie #define DDR_PCTL_DTUWACTL		0x200
766fba6e04STony Xie #define DDR_PCTL_DTURACTL		0x204
776fba6e04STony Xie #define DDR_PCTL_DTUCFG			0x208
786fba6e04STony Xie #define DDR_PCTL_DTUECTL		0x20c
796fba6e04STony Xie #define DDR_PCTL_DTUWD0			0x210
806fba6e04STony Xie #define DDR_PCTL_DTUWD1			0x214
816fba6e04STony Xie #define DDR_PCTL_DTUWD2			0x218
826fba6e04STony Xie #define DDR_PCTL_DTUWD3			0x21c
836fba6e04STony Xie #define DDR_PCTL_DTUWDM			0x220
846fba6e04STony Xie #define DDR_PCTL_DTURD0			0x224
856fba6e04STony Xie #define DDR_PCTL_DTURD1			0x228
866fba6e04STony Xie #define DDR_PCTL_DTURD2			0x22c
876fba6e04STony Xie #define DDR_PCTL_DTURD3			0x230
886fba6e04STony Xie #define DDR_PCTL_DTULFSRWD		0x234
896fba6e04STony Xie #define DDR_PCTL_DTULFSRRD		0x238
906fba6e04STony Xie #define DDR_PCTL_DTUEAF			0x23c
916fba6e04STony Xie #define DDR_PCTL_DFITCTRLDELAY	0x240
926fba6e04STony Xie #define DDR_PCTL_DFIODTCFG		0x244
936fba6e04STony Xie #define DDR_PCTL_DFIODTCFG1		0x248
946fba6e04STony Xie #define DDR_PCTL_DFIODTRANKMAP		0x24c
956fba6e04STony Xie #define DDR_PCTL_DFITPHYWRDATA		0x250
966fba6e04STony Xie #define DDR_PCTL_DFITPHYWRLAT		0x254
976fba6e04STony Xie #define DDR_PCTL_DFITPHYWRDATALAT	0x258
986fba6e04STony Xie #define DDR_PCTL_DFITRDDATAEN		0x260
996fba6e04STony Xie #define DDR_PCTL_DFITPHYRDLAT		0x264
1006fba6e04STony Xie #define DDR_PCTL_DFITPHYUPDTYPE0	0x270
1016fba6e04STony Xie #define DDR_PCTL_DFITPHYUPDTYPE1	0x274
1026fba6e04STony Xie #define DDR_PCTL_DFITPHYUPDTYPE2	0x278
1036fba6e04STony Xie #define DDR_PCTL_DFITPHYUPDTYPE3	0x27c
1046fba6e04STony Xie #define DDR_PCTL_DFITCTRLUPDMIN		0x280
1056fba6e04STony Xie #define DDR_PCTL_DFITCTRLUPDMAX		0x284
1066fba6e04STony Xie #define DDR_PCTL_DFITCTRLUPDDLY		0x288
1076fba6e04STony Xie #define DDR_PCTL_DFIUPDCFG			0x290
1086fba6e04STony Xie #define DDR_PCTL_DFITREFMSKI		0x294
1096fba6e04STony Xie #define DDR_PCTL_DFITCTRLUPDI		0x298
1106fba6e04STony Xie #define DDR_PCTL_DFITRCFG0			0x2ac
1116fba6e04STony Xie #define DDR_PCTL_DFITRSTAT0			0x2b0
1126fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLEN		0x2b4
1136fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLEN		0x2b8
1146fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLGATEEN	0x2bc
1156fba6e04STony Xie #define DDR_PCTL_DFISTSTAT0			0x2c0
1166fba6e04STony Xie #define DDR_PCTL_DFISTCFG0			0x2c4
1176fba6e04STony Xie #define DDR_PCTL_DFISTCFG1			0x2c8
1186fba6e04STony Xie #define DDR_PCTL_DFITDRAMCLKEN		0x2d0
1196fba6e04STony Xie #define DDR_PCTL_DFITDRAMCLKDIS		0x2d4
1206fba6e04STony Xie #define DDR_PCTL_DFISTCFG2			0x2d8
1216fba6e04STony Xie #define DDR_PCTL_DFISTPARCLR		0x2dc
1226fba6e04STony Xie #define DDR_PCTL_DFISTPARLOG		0x2e0
1236fba6e04STony Xie #define DDR_PCTL_DFILPCFG0			0x2f0
1246fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLRESP0	0x300
1256fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLRESP1	0x304
1266fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLRESP2	0x308
1276fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLRESP0	0x30c
1286fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLRESP1	0x310
1296fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLRESP2	0x314
1306fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLDELAY0	0x318
1316fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLDELAY1	0x31c
1326fba6e04STony Xie #define DDR_PCTL_DFITRWRLVLDELAY2	0x320
1336fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLDELAY0	0x324
1346fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLDELAY1	0x328
1356fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLDELAY2	0x32c
1366fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLGATEDELAY0	0x330
1376fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLGATEDELAY1	0x334
1386fba6e04STony Xie #define DDR_PCTL_DFITRRDLVLGATEDELAY2	0x338
1396fba6e04STony Xie #define DDR_PCTL_DFITRCMD			0x33c
1406fba6e04STony Xie #define DDR_PCTL_IPVR				0x3f8
1416fba6e04STony Xie #define DDR_PCTL_IPTR				0x3fc
1426fba6e04STony Xie 
1436fba6e04STony Xie /* DDR PHY REG */
1446fba6e04STony Xie #define DDR_PHY_REG0		0x0
1456fba6e04STony Xie #define DDR_PHY_REG1		0x4
1466fba6e04STony Xie #define DDR_PHY_REG2		0x8
1476fba6e04STony Xie #define DDR_PHY_REG3		0xc
1486fba6e04STony Xie #define DDR_PHY_REG4		0x10
1496fba6e04STony Xie #define DDR_PHY_REG5		0x14
1506fba6e04STony Xie #define DDR_PHY_REG6		0x18
1516fba6e04STony Xie #define DDR_PHY_REGB		0x2c
1526fba6e04STony Xie #define DDR_PHY_REGC		0x30
1536fba6e04STony Xie #define DDR_PHY_REG11		0x44
1546fba6e04STony Xie #define DDR_PHY_REG12		0x48
1556fba6e04STony Xie #define DDR_PHY_REG13		0x4c
1566fba6e04STony Xie #define DDR_PHY_REG14		0x50
1576fba6e04STony Xie #define DDR_PHY_REG16		0x58
1586fba6e04STony Xie #define DDR_PHY_REG20		0x80
1596fba6e04STony Xie #define DDR_PHY_REG21		0x84
1606fba6e04STony Xie #define DDR_PHY_REG26		0x98
1616fba6e04STony Xie #define DDR_PHY_REG27		0x9c
1626fba6e04STony Xie #define DDR_PHY_REG28		0xa0
1636fba6e04STony Xie #define DDR_PHY_REG2C		0xb0
1646fba6e04STony Xie #define DDR_PHY_REG30		0xc0
1656fba6e04STony Xie #define DDR_PHY_REG31		0xc4
1666fba6e04STony Xie #define DDR_PHY_REG36		0xd8
1676fba6e04STony Xie #define DDR_PHY_REG37		0xdc
1686fba6e04STony Xie #define DDR_PHY_REG38		0xe0
1696fba6e04STony Xie #define DDR_PHY_REG3C		0xf0
1706fba6e04STony Xie #define DDR_PHY_REG40		0x100
1716fba6e04STony Xie #define DDR_PHY_REG41		0x104
1726fba6e04STony Xie #define DDR_PHY_REG46		0x118
1736fba6e04STony Xie #define DDR_PHY_REG47		0x11c
1746fba6e04STony Xie #define DDR_PHY_REG48		0x120
1756fba6e04STony Xie #define DDR_PHY_REG4C		0x130
1766fba6e04STony Xie #define DDR_PHY_REG50		0x140
1776fba6e04STony Xie #define DDR_PHY_REG51		0x144
1786fba6e04STony Xie #define DDR_PHY_REG56		0x158
1796fba6e04STony Xie #define DDR_PHY_REG57		0x15c
1806fba6e04STony Xie #define DDR_PHY_REG58		0x160
1816fba6e04STony Xie #define DDR_PHY_REG5C		0x170
1826fba6e04STony Xie #define DDR_PHY_REGDLL		0x290
1836fba6e04STony Xie #define DDR_PHY_REGEC		0x3b0
1846fba6e04STony Xie #define DDR_PHY_REGED		0x3b4
1856fba6e04STony Xie #define DDR_PHY_REGEE		0x3b8
1866fba6e04STony Xie #define DDR_PHY_REGEF		0x3bc
1876fba6e04STony Xie #define DDR_PHY_REGF0		0x3c0
1886fba6e04STony Xie #define DDR_PHY_REGF1		0x3c4
1896fba6e04STony Xie #define DDR_PHY_REGF2		0x3c8
1906fba6e04STony Xie #define DDR_PHY_REGFA		0x3e8
1916fba6e04STony Xie #define DDR_PHY_REGFB		0x3ec
1926fba6e04STony Xie #define DDR_PHY_REGFC		0x3f0
1936fba6e04STony Xie #define DDR_PHY_REGFD		0x3f4
1946fba6e04STony Xie #define DDR_PHY_REGFE		0x3f8
1956fba6e04STony Xie #define DDR_PHY_REGFF		0x3fc
1966fba6e04STony Xie 
1976fba6e04STony Xie /* MSCH REG define */
1986fba6e04STony Xie #define MSCH_COREID			0x0
1996fba6e04STony Xie #define MSCH_DDRCONF		0x8
2006fba6e04STony Xie #define MSCH_DDRTIMING		0xc
2016fba6e04STony Xie #define MSCH_DDRMODE		0x10
2026fba6e04STony Xie #define MSCH_READLATENCY	0x14
2036fba6e04STony Xie #define MSCH_ACTIVATE		0x38
2046fba6e04STony Xie #define MSCH_DEVTODEV		0x3c
2056fba6e04STony Xie 
2066fba6e04STony Xie #define SET_NR(n)      ((0x3f << (8 + 16)) | ((n - 1) << 8))
2076fba6e04STony Xie #define SET_NO(n)      ((0xf << (0 + 16)) | ((n - 1) << 0))
2086fba6e04STony Xie #define SET_NF(n)      ((n - 1) & 0x1fff)
2096fba6e04STony Xie #define SET_NB(n)      ((n - 1) & 0xfff)
2106fba6e04STony Xie #define PLLMODE(n)     ((0x3 << (8 + 16)) | (n << 8))
2116fba6e04STony Xie 
2126fba6e04STony Xie /* GRF REG define */
2136fba6e04STony Xie #define GRF_SOC_STATUS0		0x480
2146fba6e04STony Xie #define GRF_DDRPHY_LOCK		(0x1 << 15)
2156fba6e04STony Xie #define GRF_DDRC0_CON0		0x600
2166fba6e04STony Xie 
2176fba6e04STony Xie /* CRU softreset ddr pctl, phy */
2186fba6e04STony Xie #define DDRMSCH0_SRSTN_REQ(n)  (((0x1 << 10) << 16) | (n << 10))
2196fba6e04STony Xie #define DDRCTRL0_PSRSTN_REQ(n) (((0x1 << 3) << 16) | (n << 3))
2206fba6e04STony Xie #define DDRCTRL0_SRSTN_REQ(n)  (((0x1 << 2) << 16) | (n << 2))
2216fba6e04STony Xie #define DDRPHY0_PSRSTN_REQ(n)  (((0x1 << 1) << 16) | (n << 1))
2226fba6e04STony Xie #define DDRPHY0_SRSTN_REQ(n)   (((0x1 << 0) << 16) | (n << 0))
2236fba6e04STony Xie 
2246fba6e04STony Xie /* CRU_DPLL_CON2 */
2256fba6e04STony Xie #define DPLL_STATUS_LOCK		(1 << 31)
2266fba6e04STony Xie 
2276fba6e04STony Xie /* CRU_DPLL_CON3 */
2286fba6e04STony Xie #define DPLL_POWER_DOWN			((0x1 << (1 + 16)) | (0 << 1))
2296fba6e04STony Xie #define DPLL_WORK_NORMAL_MODE		((0x3 << (8 + 16)) | (0 << 8))
2306fba6e04STony Xie #define DPLL_WORK_SLOW_MODE		((0x3 << (8 + 16)) | (1 << 8))
2316fba6e04STony Xie #define DPLL_RESET_CONTROL_NORMAL	((0x1 << (5 + 16)) | (0x0 << 5))
2326fba6e04STony Xie #define DPLL_RESET_CONTROL_RESET	((0x1 << (5 + 16)) | (0x1 << 5))
2336fba6e04STony Xie 
2346fba6e04STony Xie /* PMU_PWRDN_CON */
2356fba6e04STony Xie #define PD_PERI_PWRDN_ENABLE		(1 << 13)
2366fba6e04STony Xie 
2376fba6e04STony Xie #define DDR_PLL_SRC_MASK		0x13
2386fba6e04STony Xie 
2396fba6e04STony Xie /* DDR_PCTL_TREFI */
2406fba6e04STony Xie #define DDR_UPD_REF_ENABLE		(0X1 << 31)
2416fba6e04STony Xie 
2426fba6e04STony Xie uint32_t ddr_get_resume_code_size(void);
2436fba6e04STony Xie uint32_t ddr_get_resume_data_size(void);
2446fba6e04STony Xie uint32_t *ddr_get_resume_code_base(void);
2456fba6e04STony Xie void ddr_reg_save(uint32_t pllpdstat, uint64_t base_addr);
2466fba6e04STony Xie 
2476fba6e04STony Xie #endif
248