uboot/arch/arm/include/asm/arch-mx8m/ddr.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Copyright 2017 NXP
   4 */
   5
   6#ifndef __ASM_ARCH_MX8M_DDR_H
   7#define __ASM_ARCH_MX8M_DDR_H
   8
   9#define DDRC_DDR_SS_GPR0                0x3d000000
  10#define DDRC_IPS_BASE_ADDR_0            0x3f400000
  11#define IP2APB_DDRPHY_IPS_BASE_ADDR(X)  (0x3c000000 + (X * 0x2000000))
  12#define DDRPHY_MEM(X)                   (0x3c000000 + (X * 0x2000000) + 0x50000)
  13
  14struct ddrc_freq {
  15        u32 res0[8];
  16        u32 derateen;
  17        u32 derateint;
  18        u32 res1[10];
  19        u32 rfshctl0;
  20        u32 res2[4];
  21        u32 rfshtmg;
  22        u32 rfshtmg1;
  23        u32 res3[28];
  24        u32 init3;
  25        u32 init4;
  26        u32 res;
  27        u32 init6;
  28        u32 init7;
  29        u32 res4[4];
  30        u32 dramtmg0;
  31        u32 dramtmg1;
  32        u32 dramtmg2;
  33        u32 dramtmg3;
  34        u32 dramtmg4;
  35        u32 dramtmg5;
  36        u32 dramtmg6;
  37        u32 dramtmg7;
  38        u32 dramtmg8;
  39        u32 dramtmg9;
  40        u32 dramtmg10;
  41        u32 dramtmg11;
  42        u32 dramtmg12;
  43        u32 dramtmg13;
  44        u32 dramtmg14;
  45        u32 dramtmg15;
  46        u32 dramtmg16;
  47        u32 dramtmg17;
  48        u32 res5[10];
  49        u32 mramtmg0;
  50        u32 mramtmg1;
  51        u32 mramtmg4;
  52        u32 mramtmg9;
  53        u32 zqctl0;
  54        u32 res6[3];
  55        u32 dfitmg0;
  56        u32 dfitmg1;
  57        u32 res7[7];
  58        u32 dfitmg2;
  59        u32 dfitmg3;
  60        u32 res8[33];
  61        u32 odtcfg;
  62};
  63
  64struct imx8m_ddrc_regs {
  65        u32 mstr;
  66        u32 stat;
  67        u32 mstr1;
  68        u32 res1;
  69        u32 mrctrl0;
  70        u32 mrctrl1;
  71        u32 mrstat;
  72        u32 mrctrl2;
  73        u32 derateen;
  74        u32 derateint;
  75        u32 mstr2;
  76        u32 res2;
  77        u32 pwrctl;
  78        u32 pwrtmg;
  79        u32 hwlpctl;
  80        u32 hwffcctl;
  81        u32 hwffcstat;
  82        u32 res3[3];
  83        u32 rfshctl0;
  84        u32 rfshctl1;
  85        u32 rfshctl2;
  86        u32 rfshctl4;
  87        u32 rfshctl3;
  88        u32 rfshtmg;
  89        u32 rfshtmg1;
  90        u32 res4;
  91        u32 ecccfg0;
  92        u32 ecccfg1;
  93        u32 eccstat;
  94        u32 eccclr;
  95        u32 eccerrcnt;
  96        u32 ecccaddr0;
  97        u32 ecccaddr1;
  98        u32 ecccsyn0;
  99        u32 ecccsyn1;
 100        u32 ecccsyn2;
 101        u32 eccbitmask0;
 102        u32 eccbitmask1;
 103        u32 eccbitmask2;
 104        u32 eccuaddr0;
 105        u32 eccuaddr1;
 106        u32 eccusyn0;
 107        u32 eccusyn1;
 108        u32 eccusyn2;
 109        u32 eccpoisonaddr0;
 110        u32 eccpoisonaddr1;
 111        u32 crcparctl0;
 112        u32 crcparctl1;
 113        u32 crcparctl2;
 114        u32 crcparstat;
 115        u32 init0;
 116        u32 init1;
 117        u32 init2;
 118        u32 init3;
 119        u32 init4;
 120        u32 init5;
 121        u32 init6;
 122        u32 init7;
 123        u32 dimmctl;
 124        u32 rankctl;
 125        u32 res5;
 126        u32 chctl;
 127        u32 dramtmg0;
 128        u32 dramtmg1;
 129        u32 dramtmg2;
 130        u32 dramtmg3;
 131        u32 dramtmg4;
 132        u32 dramtmg5;
 133        u32 dramtmg6;
 134        u32 dramtmg7;
 135        u32 dramtmg8;
 136        u32 dramtmg9;
 137        u32 dramtmg10;
 138        u32 dramtmg11;
 139        u32 dramtmg12;
 140        u32 dramtmg13;
 141        u32 dramtmg14;
 142        u32 dramtmg15;
 143        u32 dramtmg16;
 144        u32 dramtmg17;
 145        u32 res6[10];
 146        u32 mramtmg0;
 147        u32 mramtmg1;
 148        u32 mramtmg4;
 149        u32 mramtmg9;
 150        u32 zqctl0;
 151        u32 zqctl1;
 152        u32 zqctl2;
 153        u32 zqstat;
 154        u32 dfitmg0;
 155        u32 dfitmg1;
 156        u32 dfilpcfg0;
 157        u32 dfilpcfg1;
 158        u32 dfiupd0;
 159        u32 dfiupd1;
 160        u32 dfiupd2;
 161        u32 res7;
 162        u32 dfimisc;
 163        u32 dfitmg2;
 164        u32 dfitmg3;
 165        u32 dfistat;
 166        u32 dbictl;
 167        u32 dfiphymstr;
 168        u32 res8[14];
 169        u32 addrmap0;
 170        u32 addrmap1;
 171        u32 addrmap2;
 172        u32 addrmap3;
 173        u32 addrmap4;
 174        u32 addrmap5;
 175        u32 addrmap6;
 176        u32 addrmap7;
 177        u32 addrmap8;
 178        u32 addrmap9;
 179        u32 addrmap10;
 180        u32 addrmap11;
 181        u32 res9[4];
 182        u32 odtcfg;
 183        u32 odtmap;
 184        u32 res10[2];
 185        u32 sched;
 186        u32 sched1;
 187        u32 sched2;
 188        u32 perfhpr1;
 189        u32 res11;
 190        u32 perflpr1;
 191        u32 res12;
 192        u32 perfwr1;
 193        u32 res13[4];
 194        u32 dqmap0;
 195        u32 dqmap1;
 196        u32 dqmap2;
 197        u32 dqmap3;
 198        u32 dqmap4;
 199        u32 dqmap5;
 200        u32 res14[26];
 201        u32 dbg0;
 202        u32 dbg1;
 203        u32 dbgcam;
 204        u32 dbgcmd;
 205        u32 dbgstat;
 206        u32 res15[3];
 207        u32 swctl;
 208        u32 swstat;
 209        u32 res16[2];
 210        u32 ocparcfg0;
 211        u32 ocparcfg1;
 212        u32 ocparcfg2;
 213        u32 ocparcfg3;
 214        u32 ocparstat0;
 215        u32 ocparstat1;
 216        u32 ocparwlog0;
 217        u32 ocparwlog1;
 218        u32 ocparwlog2;
 219        u32 ocparawlog0;
 220        u32 ocparawlog1;
 221        u32 ocparrlog0;
 222        u32 ocparrlog1;
 223        u32 ocpararlog0;
 224        u32 ocpararlog1;
 225        u32 poisoncfg;
 226        u32 poisonstat;
 227        u32 adveccindex;
 228        union  {
 229                u32 adveccstat;
 230                u32 eccapstat;
 231        };
 232        u32 eccpoisonpat0;
 233        u32 eccpoisonpat1;
 234        u32 eccpoisonpat2;
 235        u32 res17[6];
 236        u32 caparpoisonctl;
 237        u32 caparpoisonstat;
 238        u32 res18[2];
 239        u32 dynbsmstat;
 240        u32 res19[18];
 241        u32 pstat;
 242        u32 pccfg;
 243        struct {
 244                u32 pcfgr;
 245                u32 pcfgw;
 246                u32 pcfgc;
 247                struct {
 248                        u32 pcfgidmaskch0;
 249                        u32 pcfidvaluech0;
 250                } pcfgid[16];
 251                u32 pctrl;
 252                u32 pcfgqos0;
 253                u32 pcfgqos1;
 254                u32 pcfgwqos0;
 255                u32 pcfgwqos1;
 256                u32 res[4];
 257        } pcfg[16];
 258        struct {
 259                u32 sarbase;
 260                u32 sarsize;
 261        } sar[4];
 262        u32 sbrctl;
 263        u32 sbrstat;
 264        u32 sbrwdata0;
 265        u32 sbrwdata1;
 266        u32 pdch;
 267        u32 res20[755];
 268        /* umctl2_regs_dch1 */
 269        u32 ch1_stat;
 270        u32 res21[2];
 271        u32 ch1_mrctrl0;
 272        u32 ch1_mrctrl1;
 273        u32 ch1_mrstat;
 274        u32 ch1_mrctrl2;
 275        u32 res22[4];
 276        u32 ch1_pwrctl;
 277        u32 ch1_pwrtmg;
 278        u32 ch1_hwlpctl;
 279        u32 res23[15];
 280        u32 ch1_eccstat;
 281        u32 ch1_eccclr;
 282        u32 ch1_eccerrcnt;
 283        u32 ch1_ecccaddr0;
 284        u32 ch1_ecccaddr1;
 285        u32 ch1_ecccsyn0;
 286        u32 ch1_ecccsyn1;
 287        u32 ch1_ecccsyn2;
 288        u32 ch1_eccbitmask0;
 289        u32 ch1_eccbitmask1;
 290        u32 ch1_eccbitmask2;
 291        u32 ch1_eccuaddr0;
 292        u32 ch1_eccuaddr1;
 293        u32 ch1_eccusyn0;
 294        u32 ch1_eccusyn1;
 295        u32 ch1_eccusyn2;
 296        u32 res24[2];
 297        u32 ch1_crcparctl0;
 298        u32 res25[2];
 299        u32 ch1_crcparstat;
 300        u32 res26[46];
 301        u32 ch1_zqctl2;
 302        u32 ch1_zqstat;
 303        u32 res27[11];
 304        u32 ch1_dfistat;
 305        u32 res28[33];
 306        u32 ch1_odtmap;
 307        u32 res29[47];
 308        u32 ch1_dbg1;
 309        u32 ch1_dbgcam;
 310        u32 ch1_dbgcmd;
 311        u32 ch1_dbgstat;
 312        u32 res30[123];
 313        /* umctl2_regs_freq1 */
 314        struct ddrc_freq freq1;
 315        u32 res31[109];
 316        /* umctl2_regs_addrmap_alt */
 317        u32 addrmap0_alt;
 318        u32 addrmap1_alt;
 319        u32 addrmap2_alt;
 320        u32 addrmap3_alt;
 321        u32 addrmap4_alt;
 322        u32 addrmap5_alt;
 323        u32 addrmap6_alt;
 324        u32 addrmap7_alt;
 325        u32 addrmap8_alt;
 326        u32 addrmap9_alt;
 327        u32 addrmap10_alt;
 328        u32 addrmap11_alt;
 329        u32 res32[758];
 330        /* umctl2_regs_freq2 */
 331        struct ddrc_freq freq2;
 332        u32 res33[879];
 333        /* umctl2_regs_freq3 */
 334        struct ddrc_freq freq3;
 335};
 336
 337struct imx8m_ddrphy_regs {
 338        u32 reg[0xf0000];
 339};
 340
 341/* PHY State */
 342enum pstate {
 343        PS0,
 344        PS1,
 345        PS2,
 346        PS3,
 347};
 348
 349enum msg_response {
 350        TRAIN_SUCCESS = 0x7,
 351        TRAIN_STREAM_START = 0x8,
 352        TRAIN_FAIL = 0xff,
 353};
 354
 355#endif
 356