ddr3.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * DDR3
  4. *
  5. * (C) Copyright 2014
  6. * Texas Instruments Incorporated, <www.ti.com>
  7. */
  8. #ifndef _DDR3_H_
  9. #define _DDR3_H_
  10. #include <asm/arch/hardware.h>
  11. struct ddr3_phy_config {
  12. unsigned int pllcr;
  13. unsigned int pgcr1_mask;
  14. unsigned int pgcr1_val;
  15. unsigned int ptr0;
  16. unsigned int ptr1;
  17. unsigned int ptr2;
  18. unsigned int ptr3;
  19. unsigned int ptr4;
  20. unsigned int dcr_mask;
  21. unsigned int dcr_val;
  22. unsigned int dtpr0;
  23. unsigned int dtpr1;
  24. unsigned int dtpr2;
  25. unsigned int mr0;
  26. unsigned int mr1;
  27. unsigned int mr2;
  28. unsigned int dtcr;
  29. unsigned int pgcr2;
  30. unsigned int zq0cr1;
  31. unsigned int zq1cr1;
  32. unsigned int zq2cr1;
  33. unsigned int pir_v1;
  34. unsigned int datx8_2_mask;
  35. unsigned int datx8_2_val;
  36. unsigned int datx8_3_mask;
  37. unsigned int datx8_3_val;
  38. unsigned int datx8_4_mask;
  39. unsigned int datx8_4_val;
  40. unsigned int datx8_5_mask;
  41. unsigned int datx8_5_val;
  42. unsigned int datx8_6_mask;
  43. unsigned int datx8_6_val;
  44. unsigned int datx8_7_mask;
  45. unsigned int datx8_7_val;
  46. unsigned int datx8_8_mask;
  47. unsigned int datx8_8_val;
  48. unsigned int pir_v2;
  49. };
  50. struct ddr3_emif_config {
  51. unsigned int sdcfg;
  52. unsigned int sdtim1;
  53. unsigned int sdtim2;
  54. unsigned int sdtim3;
  55. unsigned int sdtim4;
  56. unsigned int zqcfg;
  57. unsigned int sdrfc;
  58. };
  59. struct ddr3_spd_cb {
  60. char dimm_name[32];
  61. struct ddr3_phy_config phy_cfg;
  62. struct ddr3_emif_config emif_cfg;
  63. unsigned int ddrspdclock;
  64. int ddr_size_gbyte;
  65. };
  66. u32 ddr3_init(void);
  67. void ddr3_reset_ddrphy(void);
  68. void ddr3_init_ecc(u32 base, u32 ddr3_size);
  69. void ddr3_disable_ecc(u32 base);
  70. void ddr3_check_ecc_int(u32 base);
  71. int ddr3_ecc_support_rmw(u32 base);
  72. void ddr3_err_reset_workaround(void);
  73. void ddr3_enable_ecc(u32 base, int test);
  74. void ddr3_init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg);
  75. void ddr3_init_ddremif(u32 base, struct ddr3_emif_config *emif_cfg);
  76. int ddr3_get_size(void);
  77. #endif