k3-psil-j7200.c 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com
  4. * Author: Peter Ujfalusi <[email protected]>
  5. */
  6. #include <linux/kernel.h>
  7. #include "k3-psil-priv.h"
  8. #define PSIL_PDMA_XY_TR(x) \
  9. { \
  10. .thread_id = x, \
  11. .ep_config = { \
  12. .ep_type = PSIL_EP_PDMA_XY, \
  13. }, \
  14. }
  15. #define PSIL_PDMA_XY_PKT(x) \
  16. { \
  17. .thread_id = x, \
  18. .ep_config = { \
  19. .ep_type = PSIL_EP_PDMA_XY, \
  20. .pkt_mode = 1, \
  21. }, \
  22. }
  23. #define PSIL_PDMA_MCASP(x) \
  24. { \
  25. .thread_id = x, \
  26. .ep_config = { \
  27. .ep_type = PSIL_EP_PDMA_XY, \
  28. .pdma_acc32 = 1, \
  29. .pdma_burst = 1, \
  30. }, \
  31. }
  32. #define PSIL_ETHERNET(x) \
  33. { \
  34. .thread_id = x, \
  35. .ep_config = { \
  36. .ep_type = PSIL_EP_NATIVE, \
  37. .pkt_mode = 1, \
  38. .needs_epib = 1, \
  39. .psd_size = 16, \
  40. }, \
  41. }
  42. #define PSIL_SA2UL(x, tx) \
  43. { \
  44. .thread_id = x, \
  45. .ep_config = { \
  46. .ep_type = PSIL_EP_NATIVE, \
  47. .pkt_mode = 1, \
  48. .needs_epib = 1, \
  49. .psd_size = 64, \
  50. .notdpkt = tx, \
  51. }, \
  52. }
  53. /* PSI-L source thread IDs, used for RX (DMA_DEV_TO_MEM) */
  54. static struct psil_ep j7200_src_ep_map[] = {
  55. /* PDMA_MCASP - McASP0-2 */
  56. PSIL_PDMA_MCASP(0x4400),
  57. PSIL_PDMA_MCASP(0x4401),
  58. PSIL_PDMA_MCASP(0x4402),
  59. /* PDMA_SPI_G0 - SPI0-3 */
  60. PSIL_PDMA_XY_PKT(0x4600),
  61. PSIL_PDMA_XY_PKT(0x4601),
  62. PSIL_PDMA_XY_PKT(0x4602),
  63. PSIL_PDMA_XY_PKT(0x4603),
  64. PSIL_PDMA_XY_PKT(0x4604),
  65. PSIL_PDMA_XY_PKT(0x4605),
  66. PSIL_PDMA_XY_PKT(0x4606),
  67. PSIL_PDMA_XY_PKT(0x4607),
  68. PSIL_PDMA_XY_PKT(0x4608),
  69. PSIL_PDMA_XY_PKT(0x4609),
  70. PSIL_PDMA_XY_PKT(0x460a),
  71. PSIL_PDMA_XY_PKT(0x460b),
  72. PSIL_PDMA_XY_PKT(0x460c),
  73. PSIL_PDMA_XY_PKT(0x460d),
  74. PSIL_PDMA_XY_PKT(0x460e),
  75. PSIL_PDMA_XY_PKT(0x460f),
  76. /* PDMA_SPI_G1 - SPI4-7 */
  77. PSIL_PDMA_XY_PKT(0x4610),
  78. PSIL_PDMA_XY_PKT(0x4611),
  79. PSIL_PDMA_XY_PKT(0x4612),
  80. PSIL_PDMA_XY_PKT(0x4613),
  81. PSIL_PDMA_XY_PKT(0x4614),
  82. PSIL_PDMA_XY_PKT(0x4615),
  83. PSIL_PDMA_XY_PKT(0x4616),
  84. PSIL_PDMA_XY_PKT(0x4617),
  85. PSIL_PDMA_XY_PKT(0x4618),
  86. PSIL_PDMA_XY_PKT(0x4619),
  87. PSIL_PDMA_XY_PKT(0x461a),
  88. PSIL_PDMA_XY_PKT(0x461b),
  89. PSIL_PDMA_XY_PKT(0x461c),
  90. PSIL_PDMA_XY_PKT(0x461d),
  91. PSIL_PDMA_XY_PKT(0x461e),
  92. PSIL_PDMA_XY_PKT(0x461f),
  93. /* PDMA_USART_G0 - UART0-1 */
  94. PSIL_PDMA_XY_PKT(0x4700),
  95. PSIL_PDMA_XY_PKT(0x4701),
  96. /* PDMA_USART_G1 - UART2-3 */
  97. PSIL_PDMA_XY_PKT(0x4702),
  98. PSIL_PDMA_XY_PKT(0x4703),
  99. /* PDMA_USART_G2 - UART4-9 */
  100. PSIL_PDMA_XY_PKT(0x4704),
  101. PSIL_PDMA_XY_PKT(0x4705),
  102. PSIL_PDMA_XY_PKT(0x4706),
  103. PSIL_PDMA_XY_PKT(0x4707),
  104. PSIL_PDMA_XY_PKT(0x4708),
  105. PSIL_PDMA_XY_PKT(0x4709),
  106. /* CPSW5 */
  107. PSIL_ETHERNET(0x4a00),
  108. /* CPSW0 */
  109. PSIL_ETHERNET(0x7000),
  110. /* MCU_PDMA_MISC_G0 - SPI0 */
  111. PSIL_PDMA_XY_PKT(0x7100),
  112. PSIL_PDMA_XY_PKT(0x7101),
  113. PSIL_PDMA_XY_PKT(0x7102),
  114. PSIL_PDMA_XY_PKT(0x7103),
  115. /* MCU_PDMA_MISC_G1 - SPI1-2 */
  116. PSIL_PDMA_XY_PKT(0x7200),
  117. PSIL_PDMA_XY_PKT(0x7201),
  118. PSIL_PDMA_XY_PKT(0x7202),
  119. PSIL_PDMA_XY_PKT(0x7203),
  120. PSIL_PDMA_XY_PKT(0x7204),
  121. PSIL_PDMA_XY_PKT(0x7205),
  122. PSIL_PDMA_XY_PKT(0x7206),
  123. PSIL_PDMA_XY_PKT(0x7207),
  124. /* MCU_PDMA_MISC_G2 - UART0 */
  125. PSIL_PDMA_XY_PKT(0x7300),
  126. /* MCU_PDMA_ADC - ADC0-1 */
  127. PSIL_PDMA_XY_TR(0x7400),
  128. PSIL_PDMA_XY_TR(0x7401),
  129. /* SA2UL */
  130. PSIL_SA2UL(0x7500, 0),
  131. PSIL_SA2UL(0x7501, 0),
  132. PSIL_SA2UL(0x7502, 0),
  133. PSIL_SA2UL(0x7503, 0),
  134. };
  135. /* PSI-L destination thread IDs, used for TX (DMA_MEM_TO_DEV) */
  136. static struct psil_ep j7200_dst_ep_map[] = {
  137. /* PDMA_MCASP - McASP0-2 */
  138. PSIL_PDMA_MCASP(0xc400),
  139. PSIL_PDMA_MCASP(0xc401),
  140. PSIL_PDMA_MCASP(0xc402),
  141. /* PDMA_SPI_G0 - SPI0-3 */
  142. PSIL_PDMA_XY_PKT(0xc600),
  143. PSIL_PDMA_XY_PKT(0xc601),
  144. PSIL_PDMA_XY_PKT(0xc602),
  145. PSIL_PDMA_XY_PKT(0xc603),
  146. PSIL_PDMA_XY_PKT(0xc604),
  147. PSIL_PDMA_XY_PKT(0xc605),
  148. PSIL_PDMA_XY_PKT(0xc606),
  149. PSIL_PDMA_XY_PKT(0xc607),
  150. PSIL_PDMA_XY_PKT(0xc608),
  151. PSIL_PDMA_XY_PKT(0xc609),
  152. PSIL_PDMA_XY_PKT(0xc60a),
  153. PSIL_PDMA_XY_PKT(0xc60b),
  154. PSIL_PDMA_XY_PKT(0xc60c),
  155. PSIL_PDMA_XY_PKT(0xc60d),
  156. PSIL_PDMA_XY_PKT(0xc60e),
  157. PSIL_PDMA_XY_PKT(0xc60f),
  158. /* PDMA_SPI_G1 - SPI4-7 */
  159. PSIL_PDMA_XY_PKT(0xc610),
  160. PSIL_PDMA_XY_PKT(0xc611),
  161. PSIL_PDMA_XY_PKT(0xc612),
  162. PSIL_PDMA_XY_PKT(0xc613),
  163. PSIL_PDMA_XY_PKT(0xc614),
  164. PSIL_PDMA_XY_PKT(0xc615),
  165. PSIL_PDMA_XY_PKT(0xc616),
  166. PSIL_PDMA_XY_PKT(0xc617),
  167. PSIL_PDMA_XY_PKT(0xc618),
  168. PSIL_PDMA_XY_PKT(0xc619),
  169. PSIL_PDMA_XY_PKT(0xc61a),
  170. PSIL_PDMA_XY_PKT(0xc61b),
  171. PSIL_PDMA_XY_PKT(0xc61c),
  172. PSIL_PDMA_XY_PKT(0xc61d),
  173. PSIL_PDMA_XY_PKT(0xc61e),
  174. PSIL_PDMA_XY_PKT(0xc61f),
  175. /* PDMA_USART_G0 - UART0-1 */
  176. PSIL_PDMA_XY_PKT(0xc700),
  177. PSIL_PDMA_XY_PKT(0xc701),
  178. /* PDMA_USART_G1 - UART2-3 */
  179. PSIL_PDMA_XY_PKT(0xc702),
  180. PSIL_PDMA_XY_PKT(0xc703),
  181. /* PDMA_USART_G2 - UART4-9 */
  182. PSIL_PDMA_XY_PKT(0xc704),
  183. PSIL_PDMA_XY_PKT(0xc705),
  184. PSIL_PDMA_XY_PKT(0xc706),
  185. PSIL_PDMA_XY_PKT(0xc707),
  186. PSIL_PDMA_XY_PKT(0xc708),
  187. PSIL_PDMA_XY_PKT(0xc709),
  188. /* CPSW5 */
  189. PSIL_ETHERNET(0xca00),
  190. PSIL_ETHERNET(0xca01),
  191. PSIL_ETHERNET(0xca02),
  192. PSIL_ETHERNET(0xca03),
  193. PSIL_ETHERNET(0xca04),
  194. PSIL_ETHERNET(0xca05),
  195. PSIL_ETHERNET(0xca06),
  196. PSIL_ETHERNET(0xca07),
  197. /* CPSW0 */
  198. PSIL_ETHERNET(0xf000),
  199. PSIL_ETHERNET(0xf001),
  200. PSIL_ETHERNET(0xf002),
  201. PSIL_ETHERNET(0xf003),
  202. PSIL_ETHERNET(0xf004),
  203. PSIL_ETHERNET(0xf005),
  204. PSIL_ETHERNET(0xf006),
  205. PSIL_ETHERNET(0xf007),
  206. /* MCU_PDMA_MISC_G0 - SPI0 */
  207. PSIL_PDMA_XY_PKT(0xf100),
  208. PSIL_PDMA_XY_PKT(0xf101),
  209. PSIL_PDMA_XY_PKT(0xf102),
  210. PSIL_PDMA_XY_PKT(0xf103),
  211. /* MCU_PDMA_MISC_G1 - SPI1-2 */
  212. PSIL_PDMA_XY_PKT(0xf200),
  213. PSIL_PDMA_XY_PKT(0xf201),
  214. PSIL_PDMA_XY_PKT(0xf202),
  215. PSIL_PDMA_XY_PKT(0xf203),
  216. PSIL_PDMA_XY_PKT(0xf204),
  217. PSIL_PDMA_XY_PKT(0xf205),
  218. PSIL_PDMA_XY_PKT(0xf206),
  219. PSIL_PDMA_XY_PKT(0xf207),
  220. /* MCU_PDMA_MISC_G2 - UART0 */
  221. PSIL_PDMA_XY_PKT(0xf300),
  222. /* SA2UL */
  223. PSIL_SA2UL(0xf500, 1),
  224. PSIL_SA2UL(0xf501, 1),
  225. };
  226. struct psil_ep_map j7200_ep_map = {
  227. .name = "j7200",
  228. .src = j7200_src_ep_map,
  229. .src_count = ARRAY_SIZE(j7200_src_ep_map),
  230. .dst = j7200_dst_ep_map,
  231. .dst_count = ARRAY_SIZE(j7200_dst_ep_map),
  232. };