1403e9cbcSPhilipp Tomsich /* 2403e9cbcSPhilipp Tomsich * (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH 3403e9cbcSPhilipp Tomsich * 4403e9cbcSPhilipp Tomsich * SPDX-License-Identifier: GPL-2.0 5403e9cbcSPhilipp Tomsich */ 6403e9cbcSPhilipp Tomsich 7403e9cbcSPhilipp Tomsich #ifndef __ASM_ARCH_DDR_RK3368_H__ 8403e9cbcSPhilipp Tomsich #define __ASM_ARCH_DDR_RK3368_H__ 9403e9cbcSPhilipp Tomsich 10403e9cbcSPhilipp Tomsich /* 11*5d4a323cSTang Yun ping * The RK3368 DDRCTL differs from the incarnation in the RK3288 only 12403e9cbcSPhilipp Tomsich * in a few details. Most notably, it has an additional field to track 13403e9cbcSPhilipp Tomsich * tREFI in controller cycles (i.e. trefi_mem_ddr3). 14403e9cbcSPhilipp Tomsich */ 15403e9cbcSPhilipp Tomsich struct rk3368_ddr_pctl { 16403e9cbcSPhilipp Tomsich u32 scfg; 17403e9cbcSPhilipp Tomsich u32 sctl; 18403e9cbcSPhilipp Tomsich u32 stat; 19403e9cbcSPhilipp Tomsich u32 intrstat; 20403e9cbcSPhilipp Tomsich u32 reserved0[12]; 21403e9cbcSPhilipp Tomsich u32 mcmd; 22403e9cbcSPhilipp Tomsich u32 powctl; 23403e9cbcSPhilipp Tomsich u32 powstat; 24403e9cbcSPhilipp Tomsich u32 cmdtstat; 25403e9cbcSPhilipp Tomsich u32 cmdtstaten; 26403e9cbcSPhilipp Tomsich u32 reserved1[3]; 27403e9cbcSPhilipp Tomsich u32 mrrcfg0; 28403e9cbcSPhilipp Tomsich u32 mrrstat0; 29403e9cbcSPhilipp Tomsich u32 mrrstat1; 30403e9cbcSPhilipp Tomsich u32 reserved2[4]; 31403e9cbcSPhilipp Tomsich u32 mcfg1; 32403e9cbcSPhilipp Tomsich u32 mcfg; 33403e9cbcSPhilipp Tomsich u32 ppcfg; 34403e9cbcSPhilipp Tomsich u32 mstat; 35403e9cbcSPhilipp Tomsich u32 lpddr2zqcfg; 36403e9cbcSPhilipp Tomsich u32 reserved3; 37403e9cbcSPhilipp Tomsich u32 dtupdes; 38403e9cbcSPhilipp Tomsich u32 dtuna; 39403e9cbcSPhilipp Tomsich u32 dtune; 40403e9cbcSPhilipp Tomsich u32 dtuprd0; 41403e9cbcSPhilipp Tomsich u32 dtuprd1; 42403e9cbcSPhilipp Tomsich u32 dtuprd2; 43403e9cbcSPhilipp Tomsich u32 dtuprd3; 44403e9cbcSPhilipp Tomsich u32 dtuawdt; 45403e9cbcSPhilipp Tomsich u32 reserved4[3]; 46403e9cbcSPhilipp Tomsich u32 togcnt1u; 47403e9cbcSPhilipp Tomsich u32 tinit; 48403e9cbcSPhilipp Tomsich u32 trsth; 49403e9cbcSPhilipp Tomsich u32 togcnt100n; 50403e9cbcSPhilipp Tomsich u32 trefi; 51403e9cbcSPhilipp Tomsich u32 tmrd; 52403e9cbcSPhilipp Tomsich u32 trfc; 53403e9cbcSPhilipp Tomsich u32 trp; 54403e9cbcSPhilipp Tomsich u32 trtw; 55403e9cbcSPhilipp Tomsich u32 tal; 56403e9cbcSPhilipp Tomsich u32 tcl; 57403e9cbcSPhilipp Tomsich u32 tcwl; 58403e9cbcSPhilipp Tomsich u32 tras; 59403e9cbcSPhilipp Tomsich u32 trc; 60403e9cbcSPhilipp Tomsich u32 trcd; 61403e9cbcSPhilipp Tomsich u32 trrd; 62403e9cbcSPhilipp Tomsich u32 trtp; 63403e9cbcSPhilipp Tomsich u32 twr; 64403e9cbcSPhilipp Tomsich u32 twtr; 65403e9cbcSPhilipp Tomsich u32 texsr; 66403e9cbcSPhilipp Tomsich u32 txp; 67403e9cbcSPhilipp Tomsich u32 txpdll; 68403e9cbcSPhilipp Tomsich u32 tzqcs; 69403e9cbcSPhilipp Tomsich u32 tzqcsi; 70403e9cbcSPhilipp Tomsich u32 tdqs; 71403e9cbcSPhilipp Tomsich u32 tcksre; 72403e9cbcSPhilipp Tomsich u32 tcksrx; 73403e9cbcSPhilipp Tomsich u32 tcke; 74403e9cbcSPhilipp Tomsich u32 tmod; 75403e9cbcSPhilipp Tomsich u32 trstl; 76403e9cbcSPhilipp Tomsich u32 tzqcl; 77403e9cbcSPhilipp Tomsich u32 tmrr; 78403e9cbcSPhilipp Tomsich u32 tckesr; 79403e9cbcSPhilipp Tomsich u32 tdpd; 80403e9cbcSPhilipp Tomsich u32 trefi_mem_ddr3; 81403e9cbcSPhilipp Tomsich u32 reserved5[45]; 82403e9cbcSPhilipp Tomsich u32 dtuwactl; 83403e9cbcSPhilipp Tomsich u32 dturactl; 84403e9cbcSPhilipp Tomsich u32 dtucfg; 85403e9cbcSPhilipp Tomsich u32 dtuectl; 86403e9cbcSPhilipp Tomsich u32 dtuwd0; 87403e9cbcSPhilipp Tomsich u32 dtuwd1; 88403e9cbcSPhilipp Tomsich u32 dtuwd2; 89403e9cbcSPhilipp Tomsich u32 dtuwd3; 90403e9cbcSPhilipp Tomsich u32 dtuwdm; 91403e9cbcSPhilipp Tomsich u32 dturd0; 92403e9cbcSPhilipp Tomsich u32 dturd1; 93403e9cbcSPhilipp Tomsich u32 dturd2; 94403e9cbcSPhilipp Tomsich u32 dturd3; 95403e9cbcSPhilipp Tomsich u32 dtulfsrwd; 96403e9cbcSPhilipp Tomsich u32 dtulfsrrd; 97403e9cbcSPhilipp Tomsich u32 dtueaf; 98403e9cbcSPhilipp Tomsich u32 dfitctrldelay; 99403e9cbcSPhilipp Tomsich u32 dfiodtcfg; 100403e9cbcSPhilipp Tomsich u32 dfiodtcfg1; 101403e9cbcSPhilipp Tomsich u32 dfiodtrankmap; 102403e9cbcSPhilipp Tomsich u32 dfitphywrdata; 103403e9cbcSPhilipp Tomsich u32 dfitphywrlat; 104403e9cbcSPhilipp Tomsich u32 reserved7[2]; 105403e9cbcSPhilipp Tomsich u32 dfitrddataen; 106403e9cbcSPhilipp Tomsich u32 dfitphyrdlat; 107403e9cbcSPhilipp Tomsich u32 reserved8[2]; 108403e9cbcSPhilipp Tomsich u32 dfitphyupdtype0; 109403e9cbcSPhilipp Tomsich u32 dfitphyupdtype1; 110403e9cbcSPhilipp Tomsich u32 dfitphyupdtype2; 111403e9cbcSPhilipp Tomsich u32 dfitphyupdtype3; 112403e9cbcSPhilipp Tomsich u32 dfitctrlupdmin; 113403e9cbcSPhilipp Tomsich u32 dfitctrlupdmax; 114403e9cbcSPhilipp Tomsich u32 dfitctrlupddly; 115403e9cbcSPhilipp Tomsich u32 reserved9; 116403e9cbcSPhilipp Tomsich u32 dfiupdcfg; 117403e9cbcSPhilipp Tomsich u32 dfitrefmski; 118403e9cbcSPhilipp Tomsich u32 dfitctrlupdi; 119403e9cbcSPhilipp Tomsich u32 reserved10[4]; 120403e9cbcSPhilipp Tomsich u32 dfitrcfg0; 121403e9cbcSPhilipp Tomsich u32 dfitrstat0; 122403e9cbcSPhilipp Tomsich u32 dfitrwrlvlen; 123403e9cbcSPhilipp Tomsich u32 dfitrrdlvlen; 124403e9cbcSPhilipp Tomsich u32 dfitrrdlvlgateen; 125403e9cbcSPhilipp Tomsich u32 dfiststat0; 126403e9cbcSPhilipp Tomsich u32 dfistcfg0; 127403e9cbcSPhilipp Tomsich u32 dfistcfg1; 128403e9cbcSPhilipp Tomsich u32 reserved11; 129403e9cbcSPhilipp Tomsich u32 dfitdramclken; 130403e9cbcSPhilipp Tomsich u32 dfitdramclkdis; 131403e9cbcSPhilipp Tomsich u32 dfistcfg2; 132403e9cbcSPhilipp Tomsich u32 dfistparclr; 133403e9cbcSPhilipp Tomsich u32 dfistparlog; 134403e9cbcSPhilipp Tomsich u32 reserved12[3]; 135403e9cbcSPhilipp Tomsich u32 dfilpcfg0; 136403e9cbcSPhilipp Tomsich u32 reserved13[3]; 137403e9cbcSPhilipp Tomsich u32 dfitrwrlvlresp0; 138403e9cbcSPhilipp Tomsich u32 dfitrwrlvlresp1; 139403e9cbcSPhilipp Tomsich u32 dfitrwrlvlresp2; 140403e9cbcSPhilipp Tomsich u32 dfitrrdlvlresp0; 141403e9cbcSPhilipp Tomsich u32 dfitrrdlvlresp1; 142403e9cbcSPhilipp Tomsich u32 dfitrrdlvlresp2; 143403e9cbcSPhilipp Tomsich u32 dfitrwrlvldelay0; 144403e9cbcSPhilipp Tomsich u32 dfitrwrlvldelay1; 145403e9cbcSPhilipp Tomsich u32 dfitrwrlvldelay2; 146403e9cbcSPhilipp Tomsich u32 dfitrrdlvldelay0; 147403e9cbcSPhilipp Tomsich u32 dfitrrdlvldelay1; 148403e9cbcSPhilipp Tomsich u32 dfitrrdlvldelay2; 149403e9cbcSPhilipp Tomsich u32 dfitrrdlvlgatedelay0; 150403e9cbcSPhilipp Tomsich u32 dfitrrdlvlgatedelay1; 151403e9cbcSPhilipp Tomsich u32 dfitrrdlvlgatedelay2; 152403e9cbcSPhilipp Tomsich u32 dfitrcmd; 153403e9cbcSPhilipp Tomsich u32 reserved14[46]; 154403e9cbcSPhilipp Tomsich u32 ipvr; 155403e9cbcSPhilipp Tomsich u32 iptr; 156403e9cbcSPhilipp Tomsich }; 157403e9cbcSPhilipp Tomsich check_member(rk3368_ddr_pctl, iptr, 0x03fc); 158403e9cbcSPhilipp Tomsich 159403e9cbcSPhilipp Tomsich struct rk3368_ddrphy { 160403e9cbcSPhilipp Tomsich u32 reg[0x100]; 161403e9cbcSPhilipp Tomsich }; 162403e9cbcSPhilipp Tomsich check_member(rk3368_ddrphy, reg[0xff], 0x03fc); 163403e9cbcSPhilipp Tomsich 164403e9cbcSPhilipp Tomsich struct rk3368_msch { 165403e9cbcSPhilipp Tomsich u32 coreid; 166403e9cbcSPhilipp Tomsich u32 revisionid; 167403e9cbcSPhilipp Tomsich u32 ddrconf; 168403e9cbcSPhilipp Tomsich u32 ddrtiming; 169403e9cbcSPhilipp Tomsich u32 ddrmode; 170403e9cbcSPhilipp Tomsich u32 readlatency; 171403e9cbcSPhilipp Tomsich u32 reserved1[8]; 172403e9cbcSPhilipp Tomsich u32 activate; 173403e9cbcSPhilipp Tomsich u32 devtodev; 174403e9cbcSPhilipp Tomsich }; 175403e9cbcSPhilipp Tomsich check_member(rk3368_msch, devtodev, 0x003c); 176403e9cbcSPhilipp Tomsich 177403e9cbcSPhilipp Tomsich /* GRF_SOC_CON0 */ 178403e9cbcSPhilipp Tomsich enum { 179403e9cbcSPhilipp Tomsich NOC_RSP_ERR_STALL = BIT(9), 180403e9cbcSPhilipp Tomsich MOBILE_DDR_SEL = BIT(4), 181403e9cbcSPhilipp Tomsich DDR0_16BIT_EN = BIT(3), 182403e9cbcSPhilipp Tomsich MSCH0_MAINDDR3_DDR3 = BIT(2), 183403e9cbcSPhilipp Tomsich MSCH0_MAINPARTIALPOP = BIT(1), 184403e9cbcSPhilipp Tomsich UPCTL_C_ACTIVE = BIT(0), 185403e9cbcSPhilipp Tomsich }; 186403e9cbcSPhilipp Tomsich 187403e9cbcSPhilipp Tomsich #endif 188