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