sdram_s10.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /* SPDX-License-Identifier: GPL-2.0
  2. *
  3. * Copyright (C) 2017-2018 Intel Corporation <www.intel.com>
  4. *
  5. */
  6. #ifndef _SDRAM_S10_H_
  7. #define _SDRAM_S10_H_
  8. phys_size_t sdram_calculate_size(void);
  9. int sdram_mmr_init_full(unsigned int sdr_phy_reg);
  10. int sdram_calibration_full(void);
  11. #define DDR_TWR 15
  12. #define DDR_READ_LATENCY_DELAY 40
  13. #define DDR_ACTIVATE_FAWBANK 0x1
  14. /* ECC HMC registers */
  15. #define DDRIOCTRL 0x8
  16. #define DDRCALSTAT 0xc
  17. #define DRAMADDRWIDTH 0xe0
  18. #define ECCCTRL1 0x100
  19. #define ECCCTRL2 0x104
  20. #define ERRINTEN 0x110
  21. #define INTMODE 0x11c
  22. #define INTSTAT 0x120
  23. #define AUTOWB_CORRADDR 0x138
  24. #define ECC_REG2WRECCDATABUS 0x144
  25. #define ECC_DIAGON 0x150
  26. #define ECC_DECSTAT 0x154
  27. #define HPSINTFCSEL 0x210
  28. #define RSTHANDSHAKECTRL 0x214
  29. #define RSTHANDSHAKESTAT 0x218
  30. #define DDR_HMC_DDRIOCTRL_IOSIZE_MSK 0x00000003
  31. #define DDR_HMC_DDRCALSTAT_CAL_MSK BIT(0)
  32. #define DDR_HMC_ECCCTL_AWB_CNT_RST_SET_MSK BIT(16)
  33. #define DDR_HMC_ECCCTL_CNT_RST_SET_MSK BIT(8)
  34. #define DDR_HMC_ECCCTL_ECC_EN_SET_MSK BIT(0)
  35. #define DDR_HMC_ECCCTL2_RMW_EN_SET_MSK BIT(8)
  36. #define DDR_HMC_ECCCTL2_AWB_EN_SET_MSK BIT(0)
  37. #define DDR_HMC_ECC_DIAGON_ECCDIAGON_EN_SET_MSK BIT(16)
  38. #define DDR_HMC_ECC_DIAGON_WRDIAGON_EN_SET_MSK BIT(0)
  39. #define DDR_HMC_ERRINTEN_SERRINTEN_EN_SET_MSK BIT(0)
  40. #define DDR_HMC_ERRINTEN_DERRINTEN_EN_SET_MSK BIT(1)
  41. #define DDR_HMC_INTSTAT_SERRPENA_SET_MSK BIT(0)
  42. #define DDR_HMC_INTSTAT_DERRPENA_SET_MSK BIT(1)
  43. #define DDR_HMC_INTSTAT_ADDRMTCFLG_SET_MSK BIT(16)
  44. #define DDR_HMC_INTMODE_INTMODE_SET_MSK BIT(0)
  45. #define DDR_HMC_RSTHANDSHAKE_MASK 0x000000ff
  46. #define DDR_HMC_CORE2SEQ_INT_REQ 0xF
  47. #define DDR_HMC_SEQ2CORE_INT_RESP_MASK BIT(3)
  48. #define DDR_HMC_HPSINTFCSEL_ENABLE_MASK 0x001f1f1f
  49. /* NOC DDR scheduler */
  50. #define DDR_SCH_ID_COREID 0
  51. #define DDR_SCH_ID_REVID 0x4
  52. #define DDR_SCH_DDRCONF 0x8
  53. #define DDR_SCH_DDRTIMING 0xc
  54. #define DDR_SCH_DDRMODE 0x10
  55. #define DDR_SCH_READ_LATENCY 0x14
  56. #define DDR_SCH_ACTIVATE 0x38
  57. #define DDR_SCH_DEVTODEV 0x3c
  58. #define DDR_SCH_DDR4TIMING 0x40
  59. #define DDR_SCH_DDRTIMING_ACTTOACT_OFF 0
  60. #define DDR_SCH_DDRTIMING_RDTOMISS_OFF 6
  61. #define DDR_SCH_DDRTIMING_WRTOMISS_OFF 12
  62. #define DDR_SCH_DDRTIMING_BURSTLEN_OFF 18
  63. #define DDR_SCH_DDRTIMING_RDTOWR_OFF 21
  64. #define DDR_SCH_DDRTIMING_WRTORD_OFF 26
  65. #define DDR_SCH_DDRTIMING_BWRATIO_OFF 31
  66. #define DDR_SCH_DDRMOD_BWRATIOEXTENDED_OFF 1
  67. #define DDR_SCH_ACTIVATE_RRD_OFF 0
  68. #define DDR_SCH_ACTIVATE_FAW_OFF 4
  69. #define DDR_SCH_ACTIVATE_FAWBANK_OFF 10
  70. #define DDR_SCH_DEVTODEV_BUSRDTORD_OFF 0
  71. #define DDR_SCH_DEVTODEV_BUSRDTOWR_OFF 2
  72. #define DDR_SCH_DEVTODEV_BUSWRTORD_OFF 4
  73. /* HMC MMR IO48 registers */
  74. #define CTRLCFG0 0x28
  75. #define CTRLCFG1 0x2c
  76. #define DRAMTIMING0 0x50
  77. #define CALTIMING0 0x7c
  78. #define CALTIMING1 0x80
  79. #define CALTIMING2 0x84
  80. #define CALTIMING3 0x88
  81. #define CALTIMING4 0x8c
  82. #define CALTIMING9 0xa0
  83. #define DRAMADDRW 0xa8
  84. #define DRAMSTS 0xec
  85. #define NIOSRESERVED0 0x110
  86. #define NIOSRESERVED1 0x114
  87. #define NIOSRESERVED2 0x118
  88. #define DRAMADDRW_CFG_COL_ADDR_WIDTH(x) \
  89. (((x) >> 0) & 0x1F)
  90. #define DRAMADDRW_CFG_ROW_ADDR_WIDTH(x) \
  91. (((x) >> 5) & 0x1F)
  92. #define DRAMADDRW_CFG_BANK_ADDR_WIDTH(x) \
  93. (((x) >> 10) & 0xF)
  94. #define DRAMADDRW_CFG_BANK_GRP_ADDR_WIDTH(x) \
  95. (((x) >> 14) & 0x3)
  96. #define DRAMADDRW_CFG_CS_ADDR_WIDTH(x) \
  97. (((x) >> 16) & 0x7)
  98. #define CTRLCFG0_CFG_MEMTYPE(x) \
  99. (((x) >> 0) & 0xF)
  100. #define CTRLCFG0_CFG_DIMM_TYPE(x) \
  101. (((x) >> 4) & 0x7)
  102. #define CTRLCFG0_CFG_AC_POS(x) \
  103. (((x) >> 7) & 0x3)
  104. #define CTRLCFG0_CFG_CTRL_BURST_LEN(x) \
  105. (((x) >> 9) & 0x1F)
  106. #define CTRLCFG1_CFG_DBC3_BURST_LEN(x) \
  107. (((x) >> 0) & 0x1F)
  108. #define CTRLCFG1_CFG_ADDR_ORDER(x) \
  109. (((x) >> 5) & 0x3)
  110. #define CTRLCFG1_CFG_CTRL_EN_ECC(x) \
  111. (((x) >> 7) & 0x1)
  112. #define DRAMTIMING0_CFG_TCL(x) \
  113. (((x) >> 0) & 0x7F)
  114. #define CALTIMING0_CFG_ACT_TO_RDWR(x) \
  115. (((x) >> 0) & 0x3F)
  116. #define CALTIMING0_CFG_ACT_TO_PCH(x) \
  117. (((x) >> 6) & 0x3F)
  118. #define CALTIMING0_CFG_ACT_TO_ACT(x) \
  119. (((x) >> 12) & 0x3F)
  120. #define CALTIMING0_CFG_ACT_TO_ACT_DB(x) \
  121. (((x) >> 18) & 0x3F)
  122. #define CALTIMING1_CFG_RD_TO_RD(x) \
  123. (((x) >> 0) & 0x3F)
  124. #define CALTIMING1_CFG_RD_TO_RD_DC(x) \
  125. (((x) >> 6) & 0x3F)
  126. #define CALTIMING1_CFG_RD_TO_RD_DB(x) \
  127. (((x) >> 12) & 0x3F)
  128. #define CALTIMING1_CFG_RD_TO_WR(x) \
  129. (((x) >> 18) & 0x3F)
  130. #define CALTIMING1_CFG_RD_TO_WR_DC(x) \
  131. (((x) >> 24) & 0x3F)
  132. #define CALTIMING2_CFG_RD_TO_WR_DB(x) \
  133. (((x) >> 0) & 0x3F)
  134. #define CALTIMING2_CFG_RD_TO_WR_PCH(x) \
  135. (((x) >> 6) & 0x3F)
  136. #define CALTIMING2_CFG_RD_AP_TO_VALID(x) \
  137. (((x) >> 12) & 0x3F)
  138. #define CALTIMING2_CFG_WR_TO_WR(x) \
  139. (((x) >> 18) & 0x3F)
  140. #define CALTIMING2_CFG_WR_TO_WR_DC(x) \
  141. (((x) >> 24) & 0x3F)
  142. #define CALTIMING3_CFG_WR_TO_WR_DB(x) \
  143. (((x) >> 0) & 0x3F)
  144. #define CALTIMING3_CFG_WR_TO_RD(x) \
  145. (((x) >> 6) & 0x3F)
  146. #define CALTIMING3_CFG_WR_TO_RD_DC(x) \
  147. (((x) >> 12) & 0x3F)
  148. #define CALTIMING3_CFG_WR_TO_RD_DB(x) \
  149. (((x) >> 18) & 0x3F)
  150. #define CALTIMING3_CFG_WR_TO_PCH(x) \
  151. (((x) >> 24) & 0x3F)
  152. #define CALTIMING4_CFG_WR_AP_TO_VALID(x) \
  153. (((x) >> 0) & 0x3F)
  154. #define CALTIMING4_CFG_PCH_TO_VALID(x) \
  155. (((x) >> 6) & 0x3F)
  156. #define CALTIMING4_CFG_PCH_ALL_TO_VALID(x) \
  157. (((x) >> 12) & 0x3F)
  158. #define CALTIMING4_CFG_ARF_TO_VALID(x) \
  159. (((x) >> 18) & 0xFF)
  160. #define CALTIMING4_CFG_PDN_TO_VALID(x) \
  161. (((x) >> 26) & 0x3F)
  162. #define CALTIMING9_CFG_4_ACT_TO_ACT(x) \
  163. (((x) >> 0) & 0xFF)
  164. #endif /* _SDRAM_S10_H_ */