keystone_rio.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620
  1. /*
  2. * (C) Copyright 2017
  3. * Texas Instruments Incorporated, <www.ti.com>
  4. * Authors: Aurelien Jacquiot <a-jacquiot@ti.com>
  5. * WingMan Kwok <w-kwok2@ti.com>
  6. *
  7. * SPDX-License-Identifier: GPL-2.0+
  8. */
  9. #ifndef KEYSTONE_RIO_H
  10. #define KEYSTONE_RIO_H
  11. #include <asm/setup.h>
  12. #include <asm/cache.h>
  13. #include <asm/io.h>
  14. #define KEYSTONE_RIO_MAP_FLAG_SEGMENT BIT(0)
  15. #define KEYSTONE_RIO_MAP_FLAG_SRC_PROMISC BIT(1)
  16. #define KEYSTONE_RIO_MAP_FLAG_TT_16 BIT(13)
  17. #define KEYSTONE_RIO_MAP_FLAG_DST_PROMISC BIT(15)
  18. #define KEYSTONE_RIO_DESC_FLAG_TT_16 BIT(9)
  19. #define KEYSTONE_RIO_BOOT_COMPLETE BIT(24)
  20. #define KEYSTONE_RIO_PER_EN BIT(2)
  21. #define KEYSTONE_RIO_PER_FREE BIT(0)
  22. #define KEYSTONE_RIO_PEF_FLOW_CONTROL BIT(7)
  23. /*
  24. * Packet types
  25. */
  26. #define KEYSTONE_RIO_PACKET_TYPE_NREAD 0x24
  27. #define KEYSTONE_RIO_PACKET_TYPE_NWRITE 0x54
  28. #define KEYSTONE_RIO_PACKET_TYPE_NWRITE_R 0x55
  29. #define KEYSTONE_RIO_PACKET_TYPE_SWRITE 0x60
  30. #define KEYSTONE_RIO_PACKET_TYPE_DBELL 0xa0
  31. #define KEYSTONE_RIO_PACKET_TYPE_MAINT_R 0x80
  32. #define KEYSTONE_RIO_PACKET_TYPE_MAINT_W 0x81
  33. #define KEYSTONE_RIO_PACKET_TYPE_MAINT_RR 0x82
  34. #define KEYSTONE_RIO_PACKET_TYPE_MAINT_WR 0x83
  35. #define KEYSTONE_RIO_PACKET_TYPE_MAINT_PW 0x84
  36. /*
  37. * LSU defines
  38. */
  39. #define KEYSTONE_RIO_LSU_PRIO 0
  40. #define KEYSTONE_RIO_LSU_BUSY_MASK BIT(31)
  41. #define KEYSTONE_RIO_LSU_FULL_MASK BIT(30)
  42. #define KEYSTONE_RIO_LSU_CC_MASK 0x0f
  43. #define KEYSTONE_RIO_LSU_CC_TIMEOUT 0x01
  44. #define KEYSTONE_RIO_LSU_CC_XOFF 0x02
  45. #define KEYSTONE_RIO_LSU_CC_ERROR 0x03
  46. #define KEYSTONE_RIO_LSU_CC_INVALID 0x04
  47. #define KEYSTONE_RIO_LSU_CC_DMA 0x05
  48. #define KEYSTONE_RIO_LSU_CC_RETRY 0x06
  49. #define KEYSTONE_RIO_LSU_CC_CANCELED 0x07
  50. /* Mask for receiving both error and good completion LSU interrupts */
  51. #define KEYSTONE_RIO_ICSR_LSU0(src_id) ((0x10001) << (src_id))
  52. /* Keystone2 supported baud rates */
  53. #define KEYSTONE_RIO_BAUD_1_250 0
  54. #define KEYSTONE_RIO_BAUD_2_500 1
  55. #define KEYSTONE_RIO_BAUD_3_125 2
  56. #define KEYSTONE_RIO_BAUD_5_000 3
  57. #define KEYSTONE_RIO_FULL_RATE 0
  58. #define KEYSTONE_RIO_HALF_RATE 1
  59. #define KEYSTONE_RIO_QUARTER_RATE 2
  60. /* Max ports configuration per path modes */
  61. #define KEYSTONE_RIO_MAX_PORTS_PATH_MODE_0 0xf /* 4 ports: 4-1x */
  62. #define KEYSTONE_RIO_MAX_PORTS_PATH_MODE_1 0xd /* 3 ports: 2-1x, 1-2x */
  63. #define KEYSTONE_RIO_MAX_PORTS_PATH_MODE_2 0x7 /* 3 ports: 1-2x, 2-1x */
  64. #define KEYSTONE_RIO_MAX_PORTS_PATH_MODE_3 0x5 /* 2 ports: 1-2x, 1-2x */
  65. #define KEYSTONE_RIO_MAX_PORTS_PATH_MODE_4 0x1 /* 1 ports: 1-4x */
  66. #define SERDES_LANE(lane_num) (0x01 << lane_num)
  67. #define IS_SERDES_LANE_USED(lanes, lane_num) (lanes & SERDES_LANE(lane_num))
  68. /*
  69. * Various RIO defines
  70. */
  71. #define KEYSTONE_RIO_TIMEOUT_CNT 1000
  72. /*
  73. * RIO error, reset and special event interrupt defines
  74. */
  75. #define KEYSTONE_RIO_PORT_ERROR_OUT_PKT_DROP BIT(26)
  76. #define KEYSTONE_RIO_PORT_ERROR_OUT_FAILED BIT(25)
  77. #define KEYSTONE_RIO_PORT_ERROR_OUT_DEGRADED BIT(24)
  78. #define KEYSTONE_RIO_PORT_ERROR_OUT_RETRY BIT(20)
  79. #define KEYSTONE_RIO_PORT_ERROR_OUT_ERROR BIT(17)
  80. #define KEYSTONE_RIO_PORT_ERROR_IN_ERROR BIT(9)
  81. #define KEYSTONE_RIO_PORT_ERROR_PW_PENDING BIT(4)
  82. #define KEYSTONE_RIO_PORT_ERROR_PORT_ERR BIT(2)
  83. #define KEYSTONE_RIO_PORT_ERROR_MASK \
  84. (KEYSTONE_RIO_PORT_ERROR_OUT_PKT_DROP |\
  85. KEYSTONE_RIO_PORT_ERROR_OUT_FAILED |\
  86. KEYSTONE_RIO_PORT_ERROR_OUT_DEGRADED |\
  87. KEYSTONE_RIO_PORT_ERROR_OUT_RETRY |\
  88. KEYSTONE_RIO_PORT_ERROR_OUT_ERROR |\
  89. KEYSTONE_RIO_PORT_ERROR_IN_ERROR |\
  90. KEYSTONE_RIO_PORT_ERROR_PW_PENDING |\
  91. KEYSTONE_RIO_PORT_ERROR_PORT_ERR)
  92. #define KEYSTONE_RIO_SP_HDR_NEXT_BLK_PTR 0x1000
  93. #define KEYSTONE_RIO_SP_HDR_EP_REC_ID 0x0002
  94. #define KEYSTONE_RIO_ERR_HDR_NEXT_BLK_PTR 0x3000
  95. #define KEYSTONE_RIO_ERR_EXT_FEAT_ID 0x0007
  96. /*
  97. * RapidIO global definitions
  98. */
  99. #define KEYSTONE_RIO_MAX_PORT 4
  100. #define KEYSTONE_RIO_BLK_NUM 9
  101. #define KEYSTONE_RIO_MAINT_BUF_SIZE 64
  102. /*
  103. * Dev Id and dev revision
  104. */
  105. #define KEYSTONE_RIO_DEV_ID_VAL \
  106. ((((__raw_readl(krio_priv->jtagid_reg)) << 4) & 0xffff0000) | 0x30)
  107. #define KEYSTONE_RIO_DEV_INFO_VAL \
  108. (((__raw_readl(krio_priv->jtagid_reg)) >> 28) & 0xf)
  109. #define KEYSTONE_RIO_ID_TI (0x00000030)
  110. #define KEYSTONE_RIO_EXT_FEAT_PTR (0x00000100)
  111. /*
  112. * RIO error, reset and special event interrupt defines
  113. */
  114. #define KEYSTONE_RIO_ERR_RST_EVNT_MASK 0x00010f07
  115. /* Refer to bits in KEYSTONE_RIO_ERR_RST_EVNT_MASK */
  116. #define KEYSTONE_RIO_RESET_INT 16 /* reset interrupt on any port */
  117. #define KEYSTONE_RIO_PORT3_ERROR_INT 11 /* port 3 error */
  118. #define KEYSTONE_RIO_PORT2_ERROR_INT 10 /* port 2 error */
  119. #define KEYSTONE_RIO_PORT1_ERROR_INT 9 /* port 1 error */
  120. #define KEYSTONE_RIO_PORT0_ERROR_INT 8 /* port 0 error */
  121. #define KEYSTONE_RIO_EVT_CAP_ERROR_INT 2 /* error management event capture */
  122. #define KEYSTONE_RIO_PORT_WRITEIN_INT 1 /* port-write-in request received */
  123. #define KEYSTONE_RIO_MCAST_EVT_INT 0 /* multicast event control symbol */
  124. /*
  125. * Interrupts and DMA event mapping
  126. */
  127. #define KEYSTONE_GEN_RIO_INT 0 /* RIO int for generic events */
  128. #define KEYSTONE_LSU_RIO_INT 1 /* RIO int for LSU events */
  129. /* Mask for error and good completion LSU interrupts */
  130. #define KEYSTONE_RIO_ICSR_LSU0_ERROR_MASK 0xffff0000
  131. #define KEYSTONE_RIO_ICSR_LSU0_COMPLETE_MASK 0x0000ffff
  132. #define KEYSTONE_RIO_ICSR_LSU1_COMPLETE_MASK 0x000000ff
  133. /*
  134. * Various RIO defines
  135. */
  136. #define KEYSTONE_RIO_DBELL_NUMBER 4
  137. #define KEYSTONE_RIO_DBELL_VALUE_MAX (KEYSTONE_RIO_DBELL_NUMBER * 16)
  138. #define KEYSTONE_RIO_DBELL_MASK (KEYSTONE_RIO_DBELL_VALUE_MAX - 1)
  139. #define KEYSTONE_RIO_DBELL_INFO_ANY 0xffff
  140. /*
  141. * SerDes configurations
  142. */
  143. struct keystone_serdes_config {
  144. u32 cfg_cntl; /* setting control register config */
  145. u16 serdes_cfg_pll;
  146. u16 prescalar_srv_clk;
  147. u32 rx_chan_config[KEYSTONE_RIO_MAX_PORT];
  148. u32 tx_chan_config[KEYSTONE_RIO_MAX_PORT];
  149. };
  150. /*
  151. * Per board RIO devices controller configuration
  152. */
  153. struct keystone_rio_pdata {
  154. u32 rio_regs_base;
  155. u32 rio_regs_size;
  156. u32 boot_cfg_regs_base;
  157. u32 boot_cfg_regs_size;
  158. u32 serdes_cfg_regs_base;
  159. u32 serdes_cfg_regs_size;
  160. u16 ports; /* bitfield of port(s) to probe on this controller */
  161. u16 id; /* host id */
  162. u16 size; /* RapidIO common transport system size.
  163. * 0 - Small size. 256 devices.
  164. * 1 - Large size, 65536 devices.
  165. */
  166. u16 keystone2_serdes;
  167. u32 serdes_baudrate;
  168. u32 path_mode;
  169. int riohdid;
  170. int rio_irq;
  171. int lsu_irq;
  172. struct keystone_serdes_config serdes_config;
  173. };
  174. struct keystone_rio_data;
  175. /*
  176. * RapidIO Registers
  177. */
  178. struct keystone_srio_serdes_regs {
  179. u32 pll;
  180. struct {
  181. u32 rx;
  182. u32 tx;
  183. } channel[4];
  184. };
  185. /* RIO Registers 0000 - 2fff */
  186. struct keystone_rio_regs {
  187. /* Required Peripheral Registers */
  188. u32 pid; /* 0000 */
  189. u32 pcr; /* 0004 */
  190. u32 __rsvd0[3]; /* 0008 - 0010 */
  191. /* Peripheral Setting Control Registers */
  192. u32 per_set_cntl; /* 0014 */
  193. u32 per_set_cntl1; /* 0018 */
  194. u32 __rsvd1[2]; /* 001c - 0020 */
  195. u32 gbl_en; /* 0024 */
  196. u32 gbl_en_stat; /* 0028 */
  197. struct {
  198. u32 enable; /* 002c */
  199. u32 status; /* 0030 */
  200. } blk[10]; /* 002c - 0078 */
  201. /* ID Registers */
  202. u32 __rsvd2[17]; /* 007c - 00bc */
  203. u32 multiid_reg[8]; /* 00c0 - 00dc */
  204. /* Hardware Packet Forwarding Registers */
  205. struct {
  206. u32 pf_16b;
  207. u32 pf_8b;
  208. } pkt_fwd_cntl[8]; /* 00e0 - 011c */
  209. u32 __rsvd3[24]; /* 0120 - 017c */
  210. /* Interrupt Registers */
  211. struct {
  212. u32 status;
  213. u32 __rsvd0;
  214. u32 clear;
  215. u32 __rsvd1;
  216. } doorbell_int[4]; /* 0180 - 01bc */
  217. struct {
  218. u32 status;
  219. u32 __rsvd0;
  220. u32 clear;
  221. u32 __rsvd1;
  222. } lsu_int[2]; /* 01c0 - 01dc */
  223. u32 err_rst_evnt_int_stat; /* 01e0 */
  224. u32 __rsvd4;
  225. u32 err_rst_evnt_int_clear; /* 01e8 */
  226. u32 __rsvd5;
  227. u32 __rsvd6[4]; /* 01f0 - 01fc */
  228. struct {
  229. u32 route; /* 0200 */
  230. u32 route2; /* 0204 */
  231. u32 __rsvd; /* 0208 */
  232. } doorbell_int_route[4]; /* 0200 - 022c */
  233. u32 lsu0_int_route[4]; /* 0230 - 023c */
  234. u32 lsu1_int_route1; /* 0240 */
  235. u32 __rsvd7[3]; /* 0244 - 024c */
  236. u32 err_rst_evnt_int_route[3]; /* 0250 - 0258 */
  237. u32 __rsvd8[2]; /* 025c - 0260 */
  238. u32 interrupt_ctl; /* 0264 */
  239. u32 __rsvd9[26]; /* 0268, 026c, 0270 - 02cc */
  240. u32 intdst_rate_cntl[16]; /* 02d0 - 030c */
  241. u32 intdst_rate_disable; /* 0310 */
  242. u32 __rsvd10[59]; /* 0314 - 03fc */
  243. /* RXU Registers */
  244. struct {
  245. u32 ltr_mbox_src;
  246. u32 dest_prom_seg;
  247. u32 flow_qid;
  248. } rxu_map[64]; /* 0400 - 06fc */
  249. struct {
  250. u32 cos_src;
  251. u32 dest_prom;
  252. u32 stream;
  253. } rxu_type9_map[64]; /* 0700 - 09fc */
  254. u32 __rsvd11[192]; /* 0a00 - 0cfc */
  255. /* LSU/MAU Registers */
  256. struct {
  257. u32 addr_msb; /* 0d00 */
  258. u32 addr_lsb_cfg_ofs; /* 0d04 */
  259. u32 dsp_addr; /* 0d08 */
  260. u32 dbell_val_byte_cnt; /* 0d0c */
  261. u32 destid; /* 0d10 */
  262. u32 dbell_info_fttype; /* 0d14 */
  263. u32 busy_full; /* 0d18 */
  264. } lsu_reg[8]; /* 0d00 - 0ddc */
  265. u32 lsu_setup_reg[2]; /* 0de0 - 0de4 */
  266. u32 lsu_stat_reg[6]; /* 0de8 - 0dfc */
  267. u32 lsu_flow_masks[4]; /* 0e00 - 0e0c */
  268. u32 __rsvd12[16]; /* 0e10 - 0e4c */
  269. /* Flow Control Registers */
  270. u32 flow_cntl[16]; /* 0e50 - 0e8c */
  271. u32 __rsvd13[8]; /* 0e90 - 0eac */
  272. /* TXU Registers 0eb0 - 0efc */
  273. u32 tx_cppi_flow_masks[8]; /* 0eb0 - 0ecc */
  274. u32 tx_queue_sch_info[4]; /* 0ed0 - 0edc */
  275. u32 garbage_coll_qid[3]; /* 0ee0 - 0ee8 */
  276. u32 __rsvd14[69]; /* 0eec, 0ef0 - 0ffc */
  277. };
  278. /* CDMAHP Registers 1000 - 2ffc */
  279. struct keystone_rio_pktdma_regs {
  280. u32 __rsvd[2048]; /* 1000 - 2ffc */
  281. };
  282. /* CSR/CAR Registers b000+ */
  283. struct keystone_rio_car_csr_regs {
  284. u32 dev_id; /* b000 */
  285. u32 dev_info; /* b004 */
  286. u32 assembly_id; /* b008 */
  287. u32 assembly_info; /* b00c */
  288. u32 pe_feature; /* b010 */
  289. u32 sw_port; /* b014 */
  290. u32 src_op; /* b018 */
  291. u32 dest_op; /* b01c */
  292. u32 __rsvd1[7]; /* b020 - b038 */
  293. u32 data_stm_info; /* b03c */
  294. u32 __rsvd2[2]; /* b040 - b044 */
  295. u32 data_stm_logical_ctl; /* b048 */
  296. u32 pe_logical_ctl; /* b04c */
  297. u32 __rsvd3[2]; /* b050 - b054 */
  298. u32 local_cfg_hbar; /* b058 */
  299. u32 local_cfg_bar; /* b05c */
  300. u32 base_dev_id; /* b060 */
  301. u32 __rsvd4;
  302. u32 host_base_id_lock; /* b068 */
  303. u32 component_tag; /* b06c */
  304. /* b070 - b0fc */
  305. };
  306. struct keystone_rio_serial_port_regs {
  307. u32 sp_maint_blk_hdr; /* b100 */
  308. u32 __rsvd6[7]; /* b104 - b11c */
  309. u32 sp_link_timeout_ctl; /* b120 */
  310. u32 sp_rsp_timeout_ctl; /* b124 */
  311. u32 __rsvd7[5]; /* b128 - b138 */
  312. u32 sp_gen_ctl; /* b13c */
  313. struct {
  314. u32 link_maint_req; /* b140 */
  315. u32 link_maint_resp;/* b144 */
  316. u32 ackid_stat; /* b148 */
  317. u32 __rsvd[2]; /* b14c - b150 */
  318. u32 ctl2; /* b154 */
  319. u32 err_stat; /* b158 */
  320. u32 ctl; /* b15c */
  321. } sp[4]; /* b140 - b1bc */
  322. /* b1c0 - bffc */
  323. };
  324. struct keystone_rio_err_mgmt_regs {
  325. u32 err_report_blk_hdr; /* c000 */
  326. u32 __rsvd9;
  327. u32 err_det; /* c008 */
  328. u32 err_en; /* c00c */
  329. u32 h_addr_capt; /* c010 */
  330. u32 addr_capt; /* c014 */
  331. u32 id_capt; /* c018 */
  332. u32 ctrl_capt; /* c01c */
  333. u32 __rsvd10[2]; /* c020 - c024 */
  334. u32 port_write_tgt_id; /* c028 */
  335. u32 __rsvd11[5]; /* c02c - c03c */
  336. struct {
  337. u32 det; /* c040 */
  338. u32 rate_en; /* c044 */
  339. u32 attr_capt_dbg0; /* c048 */
  340. u32 capt_0_dbg1; /* c04c */
  341. u32 capt_1_dbg2; /* c050 */
  342. u32 capt_2_dbg3; /* c054 */
  343. u32 capt_3_dbg4; /* c058 */
  344. u32 __rsvd0[3]; /* c05c - c064 */
  345. u32 rate; /* c068 */
  346. u32 thresh; /* c06c */
  347. u32 __rsvd1[4]; /* c070 - c07c */
  348. } sp_err[4]; /* c040 - c13c */
  349. u32 __rsvd12[1972]; /* c140 - e00c */
  350. struct {
  351. u32 stat0; /* e010 */
  352. u32 stat1; /* e014 */
  353. u32 __rsvd[6]; /* e018 - e02c */
  354. } lane_stat[4]; /* e010 - e08c */
  355. /* e090 - 1affc */
  356. };
  357. struct keystone_rio_phy_layer_regs {
  358. u32 phy_blk_hdr; /* 1b000 */
  359. u32 __rsvd14[31]; /* 1b004 - 1b07c */
  360. struct {
  361. u32 imp_spec_ctl; /* 1b080 */
  362. u32 pwdn_ctl; /* 1b084 */
  363. u32 __rsvd0[2];
  364. u32 status; /* 1b090 */
  365. u32 int_enable; /* 1b094 */
  366. u32 port_wr_enable; /* 1b098 */
  367. u32 event_gen; /* 1b09c */
  368. u32 all_int_en; /* 1b0a0 */
  369. u32 all_port_wr_en; /* 1b0a4 */
  370. u32 __rsvd1[2];
  371. u32 path_ctl; /* 1b0b0 */
  372. u32 discovery_timer;/* 1b0b4 */
  373. u32 silence_timer; /* 1b0b8 */
  374. u32 vmin_exp; /* 1b0bc */
  375. u32 pol_ctl; /* 1b0c0 */
  376. u32 __rsvd2;
  377. u32 denial_ctl; /* 1b0c8 */
  378. u32 __rsvd3;
  379. u32 rcvd_mecs; /* 1b0d0 */
  380. u32 __rsvd4;
  381. u32 mecs_fwd; /* 1b0d8 */
  382. u32 __rsvd5;
  383. u32 long_cs_tx1; /* 1b0e0 */
  384. u32 long_cs_tx2; /* 1b0e4 */
  385. u32 __rsvd[6]; /* 1b0e8, 1b0ec, 1b0f0 - 1b0fc */
  386. } phy_sp[4]; /* 1b080 - 1b27c */
  387. /* 1b280 - 1b2fc */
  388. };
  389. struct keystone_rio_transport_layer_regs {
  390. u32 transport_blk_hdr; /* 1b300 */
  391. u32 __rsvd16[31]; /* 1b304 - 1b37c */
  392. struct {
  393. u32 control; /*1b380 */
  394. u32 __rsvd0[3];
  395. u32 status; /* 1b390 */
  396. u32 int_enable; /* 1b394 */
  397. u32 port_wr_enable; /* 1b398 */
  398. u32 event_gen; /* 1b39c */
  399. struct {
  400. u32 ctl; /* 1b3a0 */
  401. u32 pattern_match; /* 1b3a4 */
  402. u32 __rsvd[2]; /* 1b3a8 - 1b3ac */
  403. } base_route[4]; /* 1b3a0 - 1b3dc */
  404. u32 __rsvd1[8]; /* 1b3e0 - 1b3fc */
  405. } transport_sp[4]; /* 1b380 - 1b57c */
  406. /* 1b580 - 1b5fc */
  407. };
  408. struct keystone_rio_pkt_buf_regs {
  409. u32 pkt_buf_blk_hdr; /* 1b600 */
  410. u32 __rsvd18[31]; /* 1b604 - 1b67c */
  411. struct {
  412. u32 control; /* 1b680 */
  413. u32 __rsvd0[3];
  414. u32 status; /* 1b690 */
  415. u32 int_enable; /* 1b694 */
  416. u32 port_wr_enable; /* 1b698 */
  417. u32 event_gen; /* 1b69c */
  418. u32 ingress_rsc; /* 1b6a0 */
  419. u32 egress_rsc; /* 1b6a4 */
  420. u32 __rsvd1[2];
  421. u32 ingress_watermark[4]; /* 1b6b0 - 1b6bc */
  422. u32 __rsvd2[16]; /* 1b6c0 - 1b6fc */
  423. } pkt_buf_sp[4]; /* 1b680 - 1b87c */
  424. /* 1b880 - 1b8fc */
  425. };
  426. struct keystone_rio_evt_mgmt_regs {
  427. u32 evt_mgmt_blk_hdr; /* 1b900 */
  428. u32 __rsvd20[3];
  429. u32 evt_mgmt_int_stat; /* 1b910 */
  430. u32 evt_mgmt_int_enable; /* 1b914 */
  431. u32 evt_mgmt_int_port_stat; /* 1b918 */
  432. u32 __rsvd21;
  433. u32 evt_mgmt_port_wr_stat; /* 1b920 */
  434. u32 evt_mgmt_port_wr_enable;/* 1b924 */
  435. u32 evt_mgmt_port_wr_port_stat; /* 1b928 */
  436. u32 __rsvd22;
  437. u32 evt_mgmt_dev_int_en; /* 1b930 */
  438. u32 evt_mgmt_dev_port_wr_en;/* 1b934 */
  439. u32 __rsvd23;
  440. u32 evt_mgmt_mecs_stat; /* 1b93c */
  441. u32 evt_mgmt_mecs_int_en; /* 1b940 */
  442. u32 evt_mgmt_mecs_cap_en; /* 1b944 */
  443. u32 evt_mgmt_mecs_trig_en; /* 1b948 */
  444. u32 evt_mgmt_mecs_req; /* 1b94c */
  445. u32 evt_mgmt_mecs_port_stat;/* 1b950 */
  446. u32 __rsvd24[2];
  447. u32 evt_mgmt_mecs_event_gen;/* 1b95c */
  448. u32 evt_mgmt_rst_port_stat; /* 1b960 */
  449. u32 __rsvd25;
  450. u32 evt_mgmt_rst_int_en; /* 1b968 */
  451. u32 __rsvd26;
  452. u32 evt_mgmt_rst_port_wr_en;/* 1b970 */
  453. /* 1b974 - 1b9fc */
  454. };
  455. struct keystone_rio_port_write_regs {
  456. u32 port_wr_blk_hdr; /* 1ba00 */
  457. u32 port_wr_ctl; /* 1ba04 */
  458. u32 port_wr_route; /* 1ba08 */
  459. u32 __rsvd28;
  460. u32 port_wr_rx_stat; /* 1ba10 */
  461. u32 port_wr_rx_event_gen; /* 1ba14 */
  462. u32 __rsvd29[2];
  463. u32 port_wr_rx_capt[4]; /* 1ba20 - 1ba2c */
  464. /* 1ba30 - 1bcfc */
  465. };
  466. struct keystone_rio_link_layer_regs {
  467. u32 link_blk_hdr; /* 1bd00 */
  468. u32 __rsvd31[8]; /* 1bd04 - 1bd20 */
  469. u32 whiteboard; /* 1bd24 */
  470. u32 port_number; /* 1bd28 */
  471. u32 __rsvd32; /* 1bd2c */
  472. u32 prescalar_srv_clk; /* 1bd30 */
  473. u32 reg_rst_ctl; /* 1bd34 */
  474. u32 __rsvd33[4]; /* 1bd38, 1bd3c, 1bd40, 1bd44 */
  475. u32 local_err_det; /* 1bd48 */
  476. u32 local_err_en; /* 1bd4c */
  477. u32 local_h_addr_capt; /* 1bd50 */
  478. u32 local_addr_capt; /* 1bd54 */
  479. u32 local_id_capt; /* 1bd58 */
  480. u32 local_ctrl_capt; /* 1bd5c */
  481. /* 1bd60 - 1bdfc */
  482. };
  483. struct keystone_rio_fabric_regs {
  484. u32 fabric_hdr; /* 1be00 */
  485. u32 __rsvd35[3]; /* 1be04 - 1be0c */
  486. u32 fabric_csr; /* 1be10 */
  487. u32 __rsvd36[11]; /* 1be14 - 1be3c */
  488. u32 sp_fabric_status[4]; /* 1be40 - 1be4c */
  489. };
  490. #endif /* KEYSTONE_RIO_H */