dmc.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497
  1. #ifndef __DMC_H__
  2. #define __DMC_H__
  3. #ifndef __ASSEMBLY__
  4. struct exynos4_dmc {
  5. unsigned int concontrol;
  6. unsigned int memcontrol;
  7. unsigned int memconfig0;
  8. unsigned int memconfig1;
  9. unsigned int directcmd;
  10. unsigned int prechconfig;
  11. unsigned int phycontrol0;
  12. unsigned int phycontrol1;
  13. unsigned int phycontrol2;
  14. unsigned int phycontrol3;
  15. unsigned int pwrdnconfig;
  16. unsigned char res1[0x4];
  17. unsigned int timingref;
  18. unsigned int timingrow;
  19. unsigned int timingdata;
  20. unsigned int timingpower;
  21. unsigned int phystatus;
  22. unsigned int phyzqcontrol;
  23. unsigned int chip0status;
  24. unsigned int chip1status;
  25. unsigned int arefstatus;
  26. unsigned int mrstatus;
  27. unsigned int phytest0;
  28. unsigned int phytest1;
  29. unsigned int qoscontrol0;
  30. unsigned int qosconfig0;
  31. unsigned int qoscontrol1;
  32. unsigned int qosconfig1;
  33. unsigned int qoscontrol2;
  34. unsigned int qosconfig2;
  35. unsigned int qoscontrol3;
  36. unsigned int qosconfig3;
  37. unsigned int qoscontrol4;
  38. unsigned int qosconfig4;
  39. unsigned int qoscontrol5;
  40. unsigned int qosconfig5;
  41. unsigned int qoscontrol6;
  42. unsigned int qosconfig6;
  43. unsigned int qoscontrol7;
  44. unsigned int qosconfig7;
  45. unsigned int qoscontrol8;
  46. unsigned int qosconfig8;
  47. unsigned int qoscontrol9;
  48. unsigned int qosconfig9;
  49. unsigned int qoscontrol10;
  50. unsigned int qosconfig10;
  51. unsigned int qoscontrol11;
  52. unsigned int qosconfig11;
  53. unsigned int qoscontrol12;
  54. unsigned int qosconfig12;
  55. unsigned int qoscontrol13;
  56. unsigned int qosconfig13;
  57. unsigned int qoscontrol14;
  58. unsigned int qosconfig14;
  59. unsigned int qoscontrol15;
  60. unsigned int qosconfig15;
  61. unsigned int qostimeout0;
  62. unsigned int qostimeout1;
  63. unsigned char res2[0x8];
  64. unsigned int ivcontrol;
  65. unsigned char res3[0x8];
  66. unsigned int perevconfig;
  67. unsigned char res4[0xDF00];
  68. unsigned int pmnc_ppc_a;
  69. unsigned char res5[0xC];
  70. unsigned int cntens_ppc_a;
  71. unsigned char res6[0xC];
  72. unsigned int cntenc_ppc_a;
  73. unsigned char res7[0xC];
  74. unsigned int intens_ppc_a;
  75. unsigned char res8[0xC];
  76. unsigned int intenc_ppc_a;
  77. unsigned char res9[0xC];
  78. unsigned int flag_ppc_a;
  79. unsigned char res10[0xAC];
  80. unsigned int ccnt_ppc_a;
  81. unsigned char res11[0xC];
  82. unsigned int pmcnt0_ppc_a;
  83. unsigned char res12[0xC];
  84. unsigned int pmcnt1_ppc_a;
  85. unsigned char res13[0xC];
  86. unsigned int pmcnt2_ppc_a;
  87. unsigned char res14[0xC];
  88. unsigned int pmcnt3_ppc_a;
  89. unsigned char res15[0xEBC];
  90. unsigned int pmnc_ppc_m;
  91. unsigned char res16[0xC];
  92. unsigned int cntens_ppc_m;
  93. unsigned char res17[0xC];
  94. unsigned int cntenc_ppc_m;
  95. unsigned char res18[0xC];
  96. unsigned int intens_ppc_m;
  97. unsigned char res19[0xC];
  98. unsigned int intenc_ppc_m;
  99. unsigned char res20[0xC];
  100. unsigned int flag_ppc_m;
  101. unsigned char res21[0xAC];
  102. unsigned int ccnt_ppc_m;
  103. unsigned char res22[0xC];
  104. unsigned int pmcnt0_ppc_m;
  105. unsigned char res23[0xC];
  106. unsigned int pmcnt1_ppc_m;
  107. unsigned char res24[0xC];
  108. unsigned int pmcnt2_ppc_m;
  109. unsigned char res25[0xC];
  110. unsigned int pmcnt3_ppc_m;
  111. };
  112. struct exynos5_dmc {
  113. unsigned int concontrol;
  114. unsigned int memcontrol;
  115. unsigned int memconfig0;
  116. unsigned int memconfig1;
  117. unsigned int directcmd;
  118. unsigned int prechconfig;
  119. unsigned int phycontrol0;
  120. unsigned char res1[0xc];
  121. unsigned int pwrdnconfig;
  122. unsigned int timingpzq;
  123. unsigned int timingref;
  124. unsigned int timingrow;
  125. unsigned int timingdata;
  126. unsigned int timingpower;
  127. unsigned int phystatus;
  128. unsigned char res2[0x4];
  129. unsigned int chipstatus_ch0;
  130. unsigned int chipstatus_ch1;
  131. unsigned char res3[0x4];
  132. unsigned int mrstatus;
  133. unsigned char res4[0x8];
  134. unsigned int qoscontrol0;
  135. unsigned char resr5[0x4];
  136. unsigned int qoscontrol1;
  137. unsigned char res6[0x4];
  138. unsigned int qoscontrol2;
  139. unsigned char res7[0x4];
  140. unsigned int qoscontrol3;
  141. unsigned char res8[0x4];
  142. unsigned int qoscontrol4;
  143. unsigned char res9[0x4];
  144. unsigned int qoscontrol5;
  145. unsigned char res10[0x4];
  146. unsigned int qoscontrol6;
  147. unsigned char res11[0x4];
  148. unsigned int qoscontrol7;
  149. unsigned char res12[0x4];
  150. unsigned int qoscontrol8;
  151. unsigned char res13[0x4];
  152. unsigned int qoscontrol9;
  153. unsigned char res14[0x4];
  154. unsigned int qoscontrol10;
  155. unsigned char res15[0x4];
  156. unsigned int qoscontrol11;
  157. unsigned char res16[0x4];
  158. unsigned int qoscontrol12;
  159. unsigned char res17[0x4];
  160. unsigned int qoscontrol13;
  161. unsigned char res18[0x4];
  162. unsigned int qoscontrol14;
  163. unsigned char res19[0x4];
  164. unsigned int qoscontrol15;
  165. unsigned char res20[0x14];
  166. unsigned int ivcontrol;
  167. unsigned int wrtra_config;
  168. unsigned int rdlvl_config;
  169. unsigned char res21[0x8];
  170. unsigned int brbrsvconfig;
  171. unsigned int brbqosconfig;
  172. unsigned int membaseconfig0;
  173. unsigned int membaseconfig1;
  174. unsigned char res22[0xc];
  175. unsigned int wrlvl_config;
  176. unsigned char res23[0xc];
  177. unsigned int perevcontrol;
  178. unsigned int perev0config;
  179. unsigned int perev1config;
  180. unsigned int perev2config;
  181. unsigned int perev3config;
  182. unsigned char res24[0xdebc];
  183. unsigned int pmnc_ppc_a;
  184. unsigned char res25[0xc];
  185. unsigned int cntens_ppc_a;
  186. unsigned char res26[0xc];
  187. unsigned int cntenc_ppc_a;
  188. unsigned char res27[0xc];
  189. unsigned int intens_ppc_a;
  190. unsigned char res28[0xc];
  191. unsigned int intenc_ppc_a;
  192. unsigned char res29[0xc];
  193. unsigned int flag_ppc_a;
  194. unsigned char res30[0xac];
  195. unsigned int ccnt_ppc_a;
  196. unsigned char res31[0xc];
  197. unsigned int pmcnt0_ppc_a;
  198. unsigned char res32[0xc];
  199. unsigned int pmcnt1_ppc_a;
  200. unsigned char res33[0xc];
  201. unsigned int pmcnt2_ppc_a;
  202. unsigned char res34[0xc];
  203. unsigned int pmcnt3_ppc_a;
  204. };
  205. struct exynos5420_dmc {
  206. unsigned int concontrol;
  207. unsigned int memcontrol;
  208. unsigned int cgcontrol;
  209. unsigned char res500[0x4];
  210. unsigned int directcmd;
  211. unsigned int prechconfig0;
  212. unsigned int phycontrol0;
  213. unsigned int prechconfig1;
  214. unsigned char res1[0x8];
  215. unsigned int pwrdnconfig;
  216. unsigned int timingpzq;
  217. unsigned int timingref;
  218. unsigned int timingrow0;
  219. unsigned int timingdata0;
  220. unsigned int timingpower0;
  221. unsigned int phystatus;
  222. unsigned int etctiming;
  223. unsigned int chipstatus;
  224. unsigned char res3[0x8];
  225. unsigned int mrstatus;
  226. unsigned char res4[0x8];
  227. unsigned int qoscontrol0;
  228. unsigned char resr5[0x4];
  229. unsigned int qoscontrol1;
  230. unsigned char res6[0x4];
  231. unsigned int qoscontrol2;
  232. unsigned char res7[0x4];
  233. unsigned int qoscontrol3;
  234. unsigned char res8[0x4];
  235. unsigned int qoscontrol4;
  236. unsigned char res9[0x4];
  237. unsigned int qoscontrol5;
  238. unsigned char res10[0x4];
  239. unsigned int qoscontrol6;
  240. unsigned char res11[0x4];
  241. unsigned int qoscontrol7;
  242. unsigned char res12[0x4];
  243. unsigned int qoscontrol8;
  244. unsigned char res13[0x4];
  245. unsigned int qoscontrol9;
  246. unsigned char res14[0x4];
  247. unsigned int qoscontrol10;
  248. unsigned char res15[0x4];
  249. unsigned int qoscontrol11;
  250. unsigned char res16[0x4];
  251. unsigned int qoscontrol12;
  252. unsigned char res17[0x4];
  253. unsigned int qoscontrol13;
  254. unsigned char res18[0x4];
  255. unsigned int qoscontrol14;
  256. unsigned char res19[0x4];
  257. unsigned int qoscontrol15;
  258. unsigned char res20[0x4];
  259. unsigned int timing_set_sw;
  260. unsigned int timingrow1;
  261. unsigned int timingdata1;
  262. unsigned int timingpower1;
  263. unsigned char res300[0x4];
  264. unsigned int wrtra_config;
  265. unsigned int rdlvl_config;
  266. unsigned char res21[0x4];
  267. unsigned int brbrsvcontrol;
  268. unsigned int brbrsvconfig;
  269. unsigned int brbqosconfig;
  270. unsigned char res301[0x14];
  271. unsigned int wrlvl_config0;
  272. unsigned int wrlvl_config1;
  273. unsigned int wrlvl_status;
  274. unsigned char res23[0x4];
  275. unsigned int ppcclockon;
  276. unsigned int perevconfig0;
  277. unsigned int perevconfig1;
  278. unsigned int perevconfig2;
  279. unsigned int perevconfig3;
  280. unsigned char res24[0xc];
  281. unsigned int control_io_rdata;
  282. unsigned char res240[0xc];
  283. unsigned int cacal_config0;
  284. unsigned int cacal_config1;
  285. unsigned int cacal_status;
  286. unsigned char res302[0xa4];
  287. unsigned int bp_control0;
  288. unsigned int bp_config0_r;
  289. unsigned int bp_config0_w;
  290. unsigned char res303[0x4];
  291. unsigned int bp_control1;
  292. unsigned int bp_config1_r;
  293. unsigned int bp_config1_w;
  294. unsigned char res304[0x4];
  295. unsigned int bp_control2;
  296. unsigned int bp_config2_r;
  297. unsigned int bp_config2_w;
  298. unsigned char res305[0x4];
  299. unsigned int bp_control3;
  300. unsigned int bp_config3_r;
  301. unsigned int bp_config3_w;
  302. unsigned char res306[0xddb4];
  303. unsigned int pmnc_ppc;
  304. unsigned char res25[0xc];
  305. unsigned int cntens_ppc;
  306. unsigned char res26[0xc];
  307. unsigned int cntenc_ppc;
  308. unsigned char res27[0xc];
  309. unsigned int intens_ppc;
  310. unsigned char res28[0xc];
  311. unsigned int intenc_ppc;
  312. unsigned char res29[0xc];
  313. unsigned int flag_ppc;
  314. unsigned char res30[0xac];
  315. unsigned int ccnt_ppc;
  316. unsigned char res31[0xc];
  317. unsigned int pmcnt0_ppc;
  318. unsigned char res32[0xc];
  319. unsigned int pmcnt1_ppc;
  320. unsigned char res33[0xc];
  321. unsigned int pmcnt2_ppc;
  322. unsigned char res34[0xc];
  323. unsigned int pmcnt3_ppc;
  324. };
  325. struct exynos5_phy_control {
  326. unsigned int phy_con0;
  327. unsigned int phy_con1;
  328. unsigned int phy_con2;
  329. unsigned int phy_con3;
  330. unsigned int phy_con4;
  331. unsigned char res1[4];
  332. unsigned int phy_con6;
  333. unsigned char res2[4];
  334. unsigned int phy_con8;
  335. unsigned int phy_con9;
  336. unsigned int phy_con10;
  337. unsigned char res3[4];
  338. unsigned int phy_con12;
  339. unsigned int phy_con13;
  340. unsigned int phy_con14;
  341. unsigned int phy_con15;
  342. unsigned int phy_con16;
  343. unsigned char res4[4];
  344. unsigned int phy_con17;
  345. unsigned int phy_con18;
  346. unsigned int phy_con19;
  347. unsigned int phy_con20;
  348. unsigned int phy_con21;
  349. unsigned int phy_con22;
  350. unsigned int phy_con23;
  351. unsigned int phy_con24;
  352. unsigned int phy_con25;
  353. unsigned int phy_con26;
  354. unsigned int phy_con27;
  355. unsigned int phy_con28;
  356. unsigned int phy_con29;
  357. unsigned int phy_con30;
  358. unsigned int phy_con31;
  359. unsigned int phy_con32;
  360. unsigned int phy_con33;
  361. unsigned int phy_con34;
  362. unsigned int phy_con35;
  363. unsigned int phy_con36;
  364. unsigned int phy_con37;
  365. unsigned int phy_con38;
  366. unsigned int phy_con39;
  367. unsigned int phy_con40;
  368. unsigned int phy_con41;
  369. unsigned int phy_con42;
  370. };
  371. struct exynos5420_phy_control {
  372. unsigned int phy_con0;
  373. unsigned int phy_con1;
  374. unsigned int phy_con2;
  375. unsigned int phy_con3;
  376. unsigned int phy_con4;
  377. unsigned int phy_con5;
  378. unsigned int phy_con6;
  379. unsigned char res2[0x4];
  380. unsigned int phy_con8;
  381. unsigned char res5[0x4];
  382. unsigned int phy_con10;
  383. unsigned int phy_con11;
  384. unsigned int phy_con12;
  385. unsigned int phy_con13;
  386. unsigned int phy_con14;
  387. unsigned int phy_con15;
  388. unsigned int phy_con16;
  389. unsigned char res4[0x4];
  390. unsigned int phy_con17;
  391. unsigned int phy_con18;
  392. unsigned int phy_con19;
  393. unsigned int phy_con20;
  394. unsigned int phy_con21;
  395. unsigned int phy_con22;
  396. unsigned int phy_con23;
  397. unsigned int phy_con24;
  398. unsigned int phy_con25;
  399. unsigned int phy_con26;
  400. unsigned int phy_con27;
  401. unsigned int phy_con28;
  402. unsigned int phy_con29;
  403. unsigned int phy_con30;
  404. unsigned int phy_con31;
  405. unsigned int phy_con32;
  406. unsigned int phy_con33;
  407. unsigned int phy_con34;
  408. unsigned char res6[0x8];
  409. unsigned int phy_con37;
  410. unsigned char res7[0x4];
  411. unsigned int phy_con39;
  412. unsigned int phy_con40;
  413. unsigned int phy_con41;
  414. unsigned int phy_con42;
  415. };
  416. struct exynos5420_tzasc {
  417. unsigned char res1[0xf00];
  418. unsigned int membaseconfig0;
  419. unsigned int membaseconfig1;
  420. unsigned char res2[0x8];
  421. unsigned int memconfig0;
  422. unsigned int memconfig1;
  423. };
  424. enum ddr_mode {
  425. DDR_MODE_DDR2,
  426. DDR_MODE_DDR3,
  427. DDR_MODE_LPDDR2,
  428. DDR_MODE_LPDDR3,
  429. DDR_MODE_COUNT,
  430. };
  431. enum mem_manuf {
  432. MEM_MANUF_AUTODETECT,
  433. MEM_MANUF_ELPIDA,
  434. MEM_MANUF_SAMSUNG,
  435. MEM_MANUF_COUNT,
  436. };
  437. /* CONCONTROL register fields */
  438. #define CONCONTROL_DFI_INIT_START_SHIFT 28
  439. #define CONCONTROL_RD_FETCH_SHIFT 12
  440. #define CONCONTROL_RD_FETCH_MASK (0x7 << CONCONTROL_RD_FETCH_SHIFT)
  441. #define CONCONTROL_AREF_EN_SHIFT 5
  442. /* PRECHCONFIG register field */
  443. #define PRECHCONFIG_TP_CNT_SHIFT 24
  444. /* PWRDNCONFIG register field */
  445. #define PWRDNCONFIG_DPWRDN_CYC_SHIFT 0
  446. #define PWRDNCONFIG_DSREF_CYC_SHIFT 16
  447. /* PHY_CON0 register fields */
  448. #define PHY_CON0_T_WRRDCMD_SHIFT 17
  449. #define PHY_CON0_T_WRRDCMD_MASK (0x7 << PHY_CON0_T_WRRDCMD_SHIFT)
  450. #define PHY_CON0_CTRL_DDR_MODE_SHIFT 11
  451. #define PHY_CON0_CTRL_DDR_MODE_MASK 0x3
  452. /* PHY_CON1 register fields */
  453. #define PHY_CON1_RDLVL_RDDATA_ADJ_SHIFT 0
  454. /* PHY_CON12 register fields */
  455. #define PHY_CON12_CTRL_START_POINT_SHIFT 24
  456. #define PHY_CON12_CTRL_INC_SHIFT 16
  457. #define PHY_CON12_CTRL_FORCE_SHIFT 8
  458. #define PHY_CON12_CTRL_START_SHIFT 6
  459. #define PHY_CON12_CTRL_START_MASK (1 << PHY_CON12_CTRL_START_SHIFT)
  460. #define PHY_CON12_CTRL_DLL_ON_SHIFT 5
  461. #define PHY_CON12_CTRL_DLL_ON_MASK (1 << PHY_CON12_CTRL_DLL_ON_SHIFT)
  462. #define PHY_CON12_CTRL_REF_SHIFT 1
  463. /* PHY_CON16 register fields */
  464. #define PHY_CON16_ZQ_MODE_DDS_SHIFT 24
  465. #define PHY_CON16_ZQ_MODE_DDS_MASK (0x7 << PHY_CON16_ZQ_MODE_DDS_SHIFT)
  466. #define PHY_CON16_ZQ_MODE_TERM_SHIFT 21
  467. #define PHY_CON16_ZQ_MODE_TERM_MASK (0x7 << PHY_CON16_ZQ_MODE_TERM_SHIFT)
  468. #define PHY_CON16_ZQ_MODE_NOTERM_MASK (1 << 19)
  469. /* PHY_CON42 register fields */
  470. #define PHY_CON42_CTRL_BSTLEN_SHIFT 8
  471. #define PHY_CON42_CTRL_BSTLEN_MASK (0xff << PHY_CON42_CTRL_BSTLEN_SHIFT)
  472. #define PHY_CON42_CTRL_RDLAT_SHIFT 0
  473. #define PHY_CON42_CTRL_RDLAT_MASK (0x1f << PHY_CON42_CTRL_RDLAT_SHIFT)
  474. #endif
  475. #endif