ddrmc-vf610.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*
  2. * Copyright (C) 2015
  3. * Toradex, Inc.
  4. *
  5. * Authors: Stefan Agner
  6. * Sanchayan Maity
  7. *
  8. * SPDX-License-Identifier: GPL-2.0+
  9. */
  10. #ifndef __ASM_ARCH_VF610_DDRMC_H
  11. #define __ASM_ARCH_VF610_DDRMC_H
  12. struct ddr3_jedec_timings {
  13. u8 tinit;
  14. u32 trst_pwron;
  15. u32 cke_inactive;
  16. u8 wrlat;
  17. u8 caslat_lin;
  18. u8 trc;
  19. u8 trrd;
  20. u8 tccd;
  21. u8 tbst_int_interval;
  22. u8 tfaw;
  23. u8 trp;
  24. u8 twtr;
  25. u8 tras_min;
  26. u8 tmrd;
  27. u8 trtp;
  28. u32 tras_max;
  29. u8 tmod;
  30. u8 tckesr;
  31. u8 tcke;
  32. u8 trcd_int;
  33. u8 tras_lockout;
  34. u8 tdal;
  35. u8 bstlen;
  36. u16 tdll;
  37. u8 trp_ab;
  38. u16 tref;
  39. u8 trfc;
  40. u16 tref_int;
  41. u8 tpdex;
  42. u8 txpdll;
  43. u8 txsnr;
  44. u16 txsr;
  45. u8 cksrx;
  46. u8 cksre;
  47. u8 freq_chg_en;
  48. u16 zqcl;
  49. u16 zqinit;
  50. u8 zqcs;
  51. u8 ref_per_zq;
  52. u8 zqcs_rotate;
  53. u8 aprebit;
  54. u8 cmd_age_cnt;
  55. u8 age_cnt;
  56. u8 q_fullness;
  57. u8 odt_rd_mapcs0;
  58. u8 odt_wr_mapcs0;
  59. u8 wlmrd;
  60. u8 wldqsen;
  61. };
  62. struct ddrmc_cr_setting {
  63. u32 setting;
  64. int cr_rnum; /* CR register ; -1 for last entry */
  65. };
  66. struct ddrmc_phy_setting {
  67. u32 setting;
  68. int phy_rnum; /* PHY register ; -1 for last entry */
  69. };
  70. void ddrmc_setup_iomux(const iomux_v3_cfg_t *pads, int pads_count);
  71. void ddrmc_phy_init(void);
  72. void ddrmc_ctrl_init_ddr3(struct ddr3_jedec_timings const *timings,
  73. struct ddrmc_cr_setting *board_cr_settings,
  74. struct ddrmc_phy_setting *board_phy_settings,
  75. int col_diff, int row_diff);
  76. #endif