ddr3_training_ip_def.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (C) Marvell International Ltd. and its affiliates
  4. */
  5. #ifndef _DDR3_TRAINING_IP_DEF_H
  6. #define _DDR3_TRAINING_IP_DEF_H
  7. #define PATTERN_55 0x55555555
  8. #define PATTERN_AA 0xaaaaaaaa
  9. #define PATTERN_80 0x80808080
  10. #define PATTERN_20 0x20202020
  11. #define PATTERN_01 0x01010101
  12. #define PATTERN_FF 0xffffffff
  13. #define PATTERN_00 0x00000000
  14. /* 16bit bus width patterns */
  15. #define PATTERN_55AA 0x5555aaaa
  16. #define PATTERN_00FF 0x0000ffff
  17. #define PATTERN_0080 0x00008080
  18. #define INVALID_VALUE 0xffffffff
  19. #define MAX_NUM_OF_DUNITS 32
  20. /*
  21. * length *2 = length in words of pattern, first low address,
  22. * second high address
  23. */
  24. #define TEST_PATTERN_LENGTH 4
  25. #define KILLER_PATTERN_DQ_NUMBER 8
  26. #define SSO_DQ_NUMBER 4
  27. #define PATTERN_MAXIMUM_LENGTH 64
  28. #define ADLL_TX_LENGTH 64
  29. #define ADLL_RX_LENGTH 32
  30. #define PARAM_NOT_CARE 0
  31. #define PARAM_UNDEFINED 0xffffffff
  32. #define READ_LEVELING_PHY_OFFSET 2
  33. #define WRITE_LEVELING_PHY_OFFSET 0
  34. #define MASK_ALL_BITS 0xffffffff
  35. #define CS_BIT_MASK 0xf
  36. /* DFX access */
  37. #define BROADCAST_ID 28
  38. #define MULTICAST_ID 29
  39. #define XSB_BASE_ADDR 0x00004000
  40. #define XSB_CTRL_0_REG 0x00000000
  41. #define XSB_CTRL_1_REG 0x00000004
  42. #define XSB_CMD_REG 0x00000008
  43. #define XSB_ADDRESS_REG 0x0000000c
  44. #define XSB_DATA_REG 0x00000010
  45. #define PIPE_ENABLE_ADDR 0x000f8000
  46. #define ENABLE_DDR_TUNING_ADDR 0x000f829c
  47. #define CLIENT_BASE_ADDR 0x00002000
  48. #define CLIENT_CTRL_REG 0x00000000
  49. #define TARGET_INT 0x1801
  50. #define TARGET_EXT 0x180e
  51. #define BYTE_EN 0
  52. #define CMD_READ 0
  53. #define CMD_WRITE 1
  54. #define INTERNAL_ACCESS_PORT 1
  55. #define EXECUTING 1
  56. #define ACCESS_EXT 1
  57. #define CS2_EXIST_BIT 2
  58. #define TRAINING_ID 0xf
  59. #define EXT_TRAINING_ID 1
  60. #define EXT_MODE 0x4
  61. #define GET_RESULT_STATE(res) (res)
  62. #define SET_RESULT_STATE(res, state) (res = state)
  63. #define _1K 0x00000400
  64. #define _4K 0x00001000
  65. #define _8K 0x00002000
  66. #define _16K 0x00004000
  67. #define _32K 0x00008000
  68. #define _64K 0x00010000
  69. #define _128K 0x00020000
  70. #define _256K 0x00040000
  71. #define _512K 0x00080000
  72. #define _1M 0x00100000
  73. #define _2M 0x00200000
  74. #define _4M 0x00400000
  75. #define _8M 0x00800000
  76. #define _16M 0x01000000
  77. #define _32M 0x02000000
  78. #define _64M 0x04000000
  79. #define _128M 0x08000000
  80. #define _256M 0x10000000
  81. #define _512M 0x20000000
  82. #define _1G 0x40000000
  83. #define _2G 0x80000000
  84. #define _4G 0x100000000
  85. #define _8G 0x200000000
  86. #define ADDR_SIZE_512MB 0x04000000
  87. #define ADDR_SIZE_1GB 0x08000000
  88. #define ADDR_SIZE_2GB 0x10000000
  89. #define ADDR_SIZE_4GB 0x20000000
  90. #define ADDR_SIZE_8GB 0x40000000
  91. enum hws_edge_compare {
  92. EDGE_PF,
  93. EDGE_FP,
  94. EDGE_FPF,
  95. EDGE_PFP
  96. };
  97. enum hws_control_element {
  98. HWS_CONTROL_ELEMENT_ADLL, /* per bit 1 edge */
  99. HWS_CONTROL_ELEMENT_DQ_SKEW,
  100. HWS_CONTROL_ELEMENT_DQS_SKEW
  101. };
  102. enum hws_search_dir {
  103. HWS_LOW2HIGH,
  104. HWS_HIGH2LOW,
  105. HWS_SEARCH_DIR_LIMIT
  106. };
  107. enum hws_page_size {
  108. PAGE_SIZE_1K,
  109. PAGE_SIZE_2K
  110. };
  111. enum hws_operation {
  112. OPERATION_READ = 0,
  113. OPERATION_WRITE = 1
  114. };
  115. enum hws_training_ip_stat {
  116. HWS_TRAINING_IP_STATUS_FAIL,
  117. HWS_TRAINING_IP_STATUS_SUCCESS,
  118. HWS_TRAINING_IP_STATUS_TIMEOUT
  119. };
  120. enum hws_ddr_cs {
  121. CS_SINGLE,
  122. CS_NON_SINGLE
  123. };
  124. enum hws_ddr_phy {
  125. DDR_PHY_DATA = 0,
  126. DDR_PHY_CONTROL = 1
  127. };
  128. enum hws_dir {
  129. OPER_WRITE,
  130. OPER_READ,
  131. OPER_WRITE_AND_READ
  132. };
  133. enum hws_wl_supp {
  134. PHASE_SHIFT,
  135. CLOCK_SHIFT,
  136. ALIGN_SHIFT
  137. };
  138. enum mv_ddr_tip_bit_state {
  139. BIT_LOW_UI,
  140. BIT_HIGH_UI,
  141. BIT_SPLIT_IN,
  142. BIT_SPLIT_OUT,
  143. BIT_STATE_LAST
  144. };
  145. enum mv_ddr_tip_byte_state{
  146. BYTE_NOT_DEFINED,
  147. BYTE_HOMOGENEOUS_LOW = 0x1,
  148. BYTE_HOMOGENEOUS_HIGH = 0x2,
  149. BYTE_HOMOGENEOUS_SPLIT_IN = 0x4,
  150. BYTE_HOMOGENEOUS_SPLIT_OUT = 0x8,
  151. BYTE_SPLIT_OUT_MIX = 0x10,
  152. BYTE_STATE_LAST
  153. };
  154. struct reg_data {
  155. unsigned int reg_addr;
  156. unsigned int reg_data;
  157. unsigned int reg_mask;
  158. };
  159. enum dm_direction {
  160. DM_DIR_INVERSE,
  161. DM_DIR_DIRECT
  162. };
  163. #endif /* _DDR3_TRAINING_IP_DEF_H */