gsi_reg.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
  3. * Copyright (C) 2018-2022 Linaro Ltd.
  4. */
  5. #ifndef _GSI_REG_H_
  6. #define _GSI_REG_H_
  7. /* === Only "gsi.c" should include this file === */
  8. #include <linux/bits.h>
  9. /**
  10. * DOC: GSI Registers
  11. *
  12. * GSI registers are located within the "gsi" address space defined by Device
  13. * Tree. The offset of each register within that space is specified by
  14. * symbols defined below. The GSI address space is mapped to virtual memory
  15. * space in gsi_init(). All GSI registers are 32 bits wide.
  16. *
  17. * Each register type is duplicated for a number of instances of something.
  18. * For example, each GSI channel has its own set of registers defining its
  19. * configuration. The offset to a channel's set of registers is computed
  20. * based on a "base" offset plus an additional "stride" amount computed
  21. * from the channel's ID. For such registers, the offset is computed by a
  22. * function-like macro that takes a parameter used in the computation.
  23. *
  24. * The offset of a register dependent on execution environment is computed
  25. * by a macro that is supplied a parameter "ee". The "ee" value is a member
  26. * of the gsi_ee_id enumerated type.
  27. *
  28. * The offset of a channel register is computed by a macro that is supplied a
  29. * parameter "ch". The "ch" value is a channel id whose maximum value is 30
  30. * (though the actual limit is hardware-dependent).
  31. *
  32. * The offset of an event register is computed by a macro that is supplied a
  33. * parameter "ev". The "ev" value is an event id whose maximum value is 15
  34. * (though the actual limit is hardware-dependent).
  35. */
  36. /* GSI EE registers as a group are shifted downward by a fixed constant amount
  37. * for IPA versions 4.5 and beyond. This applies to all GSI registers we use
  38. * *except* the ones that disable inter-EE interrupts for channels and event
  39. * channels.
  40. *
  41. * The "raw" (not adjusted) GSI register range is mapped, and a pointer to
  42. * the mapped range is held in gsi->virt_raw. The inter-EE interrupt
  43. * registers are accessed using that pointer.
  44. *
  45. * Most registers are accessed using gsi->virt, which is a copy of the "raw"
  46. * pointer, adjusted downward by the fixed amount.
  47. */
  48. #define GSI_EE_REG_ADJUST 0x0000d000 /* IPA v4.5+ */
  49. /* The inter-EE IRQ registers are relative to gsi->virt_raw (IPA v3.5+) */
  50. #define GSI_INTER_EE_SRC_CH_IRQ_MSK_OFFSET \
  51. (0x0000c020 + 0x1000 * GSI_EE_AP)
  52. #define GSI_INTER_EE_SRC_EV_CH_IRQ_MSK_OFFSET \
  53. (0x0000c024 + 0x1000 * GSI_EE_AP)
  54. /* All other register offsets are relative to gsi->virt */
  55. /** enum gsi_channel_type - CHTYPE_PROTOCOL field values in CH_C_CNTXT_0 */
  56. enum gsi_channel_type {
  57. GSI_CHANNEL_TYPE_MHI = 0x0,
  58. GSI_CHANNEL_TYPE_XHCI = 0x1,
  59. GSI_CHANNEL_TYPE_GPI = 0x2,
  60. GSI_CHANNEL_TYPE_XDCI = 0x3,
  61. GSI_CHANNEL_TYPE_WDI2 = 0x4,
  62. GSI_CHANNEL_TYPE_GCI = 0x5,
  63. GSI_CHANNEL_TYPE_WDI3 = 0x6,
  64. GSI_CHANNEL_TYPE_MHIP = 0x7,
  65. GSI_CHANNEL_TYPE_AQC = 0x8,
  66. GSI_CHANNEL_TYPE_11AD = 0x9,
  67. };
  68. #define GSI_CH_C_CNTXT_0_OFFSET(ch) \
  69. (0x0001c000 + 0x4000 * GSI_EE_AP + 0x80 * (ch))
  70. #define CHTYPE_PROTOCOL_FMASK GENMASK(2, 0)
  71. #define CHTYPE_DIR_FMASK GENMASK(3, 3)
  72. #define EE_FMASK GENMASK(7, 4)
  73. #define CHID_FMASK GENMASK(12, 8)
  74. /* The next field is present for IPA v4.5 and above */
  75. #define CHTYPE_PROTOCOL_MSB_FMASK GENMASK(13, 13)
  76. #define ERINDEX_FMASK GENMASK(18, 14)
  77. #define CHSTATE_FMASK GENMASK(23, 20)
  78. #define ELEMENT_SIZE_FMASK GENMASK(31, 24)
  79. /* Encoded value for CH_C_CNTXT_0 register channel protocol fields */
  80. static inline u32
  81. chtype_protocol_encoded(enum ipa_version version, enum gsi_channel_type type)
  82. {
  83. u32 val;
  84. val = u32_encode_bits(type, CHTYPE_PROTOCOL_FMASK);
  85. if (version < IPA_VERSION_4_5)
  86. return val;
  87. /* Encode upper bit(s) as well */
  88. type >>= hweight32(CHTYPE_PROTOCOL_FMASK);
  89. val |= u32_encode_bits(type, CHTYPE_PROTOCOL_MSB_FMASK);
  90. return val;
  91. }
  92. #define GSI_CH_C_CNTXT_1_OFFSET(ch) \
  93. (0x0001c004 + 0x4000 * GSI_EE_AP + 0x80 * (ch))
  94. /* Encoded value for CH_C_CNTXT_1 register R_LENGTH field */
  95. static inline u32 r_length_encoded(enum ipa_version version, u32 length)
  96. {
  97. if (version < IPA_VERSION_4_9)
  98. return u32_encode_bits(length, GENMASK(15, 0));
  99. return u32_encode_bits(length, GENMASK(19, 0));
  100. }
  101. #define GSI_CH_C_CNTXT_2_OFFSET(ch) \
  102. (0x0001c008 + 0x4000 * GSI_EE_AP + 0x80 * (ch))
  103. #define GSI_CH_C_CNTXT_3_OFFSET(ch) \
  104. (0x0001c00c + 0x4000 * GSI_EE_AP + 0x80 * (ch))
  105. #define GSI_CH_C_QOS_OFFSET(ch) \
  106. (0x0001c05c + 0x4000 * GSI_EE_AP + 0x80 * (ch))
  107. #define WRR_WEIGHT_FMASK GENMASK(3, 0)
  108. #define MAX_PREFETCH_FMASK GENMASK(8, 8)
  109. #define USE_DB_ENG_FMASK GENMASK(9, 9)
  110. /* The next field is only present for IPA v4.0, v4.1, and v4.2 */
  111. #define USE_ESCAPE_BUF_ONLY_FMASK GENMASK(10, 10)
  112. /* The next two fields are present for IPA v4.5 and above */
  113. #define PREFETCH_MODE_FMASK GENMASK(13, 10)
  114. #define EMPTY_LVL_THRSHOLD_FMASK GENMASK(23, 16)
  115. /* The next field is present for IPA v4.9 and above */
  116. #define DB_IN_BYTES GENMASK(24, 24)
  117. /** enum gsi_prefetch_mode - PREFETCH_MODE field in CH_C_QOS */
  118. enum gsi_prefetch_mode {
  119. GSI_USE_PREFETCH_BUFS = 0x0,
  120. GSI_ESCAPE_BUF_ONLY = 0x1,
  121. GSI_SMART_PREFETCH = 0x2,
  122. GSI_FREE_PREFETCH = 0x3,
  123. };
  124. #define GSI_CH_C_SCRATCH_0_OFFSET(ch) \
  125. (0x0001c060 + 0x4000 * GSI_EE_AP + 0x80 * (ch))
  126. #define GSI_CH_C_SCRATCH_1_OFFSET(ch) \
  127. (0x0001c064 + 0x4000 * GSI_EE_AP + 0x80 * (ch))
  128. #define GSI_CH_C_SCRATCH_2_OFFSET(ch) \
  129. (0x0001c068 + 0x4000 * GSI_EE_AP + 0x80 * (ch))
  130. #define GSI_CH_C_SCRATCH_3_OFFSET(ch) \
  131. (0x0001c06c + 0x4000 * GSI_EE_AP + 0x80 * (ch))
  132. #define GSI_EV_CH_E_CNTXT_0_OFFSET(ev) \
  133. (0x0001d000 + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  134. /* enum gsi_channel_type defines EV_CHTYPE field values in EV_CH_E_CNTXT_0 */
  135. #define EV_CHTYPE_FMASK GENMASK(3, 0)
  136. #define EV_EE_FMASK GENMASK(7, 4)
  137. #define EV_EVCHID_FMASK GENMASK(15, 8)
  138. #define EV_INTYPE_FMASK GENMASK(16, 16)
  139. #define EV_CHSTATE_FMASK GENMASK(23, 20)
  140. #define EV_ELEMENT_SIZE_FMASK GENMASK(31, 24)
  141. #define GSI_EV_CH_E_CNTXT_1_OFFSET(ev) \
  142. (0x0001d004 + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  143. /* Encoded value for EV_CH_C_CNTXT_1 register EV_R_LENGTH field */
  144. static inline u32 ev_r_length_encoded(enum ipa_version version, u32 length)
  145. {
  146. if (version < IPA_VERSION_4_9)
  147. return u32_encode_bits(length, GENMASK(15, 0));
  148. return u32_encode_bits(length, GENMASK(19, 0));
  149. }
  150. #define GSI_EV_CH_E_CNTXT_2_OFFSET(ev) \
  151. (0x0001d008 + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  152. #define GSI_EV_CH_E_CNTXT_3_OFFSET(ev) \
  153. (0x0001d00c + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  154. #define GSI_EV_CH_E_CNTXT_4_OFFSET(ev) \
  155. (0x0001d010 + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  156. #define GSI_EV_CH_E_CNTXT_8_OFFSET(ev) \
  157. (0x0001d020 + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  158. #define MODT_FMASK GENMASK(15, 0)
  159. #define MODC_FMASK GENMASK(23, 16)
  160. #define MOD_CNT_FMASK GENMASK(31, 24)
  161. #define GSI_EV_CH_E_CNTXT_9_OFFSET(ev) \
  162. (0x0001d024 + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  163. #define GSI_EV_CH_E_CNTXT_10_OFFSET(ev) \
  164. (0x0001d028 + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  165. #define GSI_EV_CH_E_CNTXT_11_OFFSET(ev) \
  166. (0x0001d02c + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  167. #define GSI_EV_CH_E_CNTXT_12_OFFSET(ev) \
  168. (0x0001d030 + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  169. #define GSI_EV_CH_E_CNTXT_13_OFFSET(ev) \
  170. (0x0001d034 + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  171. #define GSI_EV_CH_E_SCRATCH_0_OFFSET(ev) \
  172. (0x0001d048 + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  173. #define GSI_EV_CH_E_SCRATCH_1_OFFSET(ev) \
  174. (0x0001d04c + 0x4000 * GSI_EE_AP + 0x80 * (ev))
  175. #define GSI_CH_C_DOORBELL_0_OFFSET(ch) \
  176. (0x0001e000 + 0x4000 * GSI_EE_AP + 0x08 * (ch))
  177. #define GSI_EV_CH_E_DOORBELL_0_OFFSET(ev) \
  178. (0x0001e100 + 0x4000 * GSI_EE_AP + 0x08 * (ev))
  179. #define GSI_GSI_STATUS_OFFSET \
  180. (0x0001f000 + 0x4000 * GSI_EE_AP)
  181. #define ENABLED_FMASK GENMASK(0, 0)
  182. #define GSI_CH_CMD_OFFSET \
  183. (0x0001f008 + 0x4000 * GSI_EE_AP)
  184. #define CH_CHID_FMASK GENMASK(7, 0)
  185. #define CH_OPCODE_FMASK GENMASK(31, 24)
  186. /** enum gsi_ch_cmd_opcode - CH_OPCODE field values in CH_CMD */
  187. enum gsi_ch_cmd_opcode {
  188. GSI_CH_ALLOCATE = 0x0,
  189. GSI_CH_START = 0x1,
  190. GSI_CH_STOP = 0x2,
  191. GSI_CH_RESET = 0x9,
  192. GSI_CH_DE_ALLOC = 0xa,
  193. GSI_CH_DB_STOP = 0xb,
  194. };
  195. #define GSI_EV_CH_CMD_OFFSET \
  196. (0x0001f010 + 0x4000 * GSI_EE_AP)
  197. #define EV_CHID_FMASK GENMASK(7, 0)
  198. #define EV_OPCODE_FMASK GENMASK(31, 24)
  199. /** enum gsi_evt_cmd_opcode - EV_OPCODE field values in EV_CH_CMD */
  200. enum gsi_evt_cmd_opcode {
  201. GSI_EVT_ALLOCATE = 0x0,
  202. GSI_EVT_RESET = 0x9,
  203. GSI_EVT_DE_ALLOC = 0xa,
  204. };
  205. #define GSI_GENERIC_CMD_OFFSET \
  206. (0x0001f018 + 0x4000 * GSI_EE_AP)
  207. #define GENERIC_OPCODE_FMASK GENMASK(4, 0)
  208. #define GENERIC_CHID_FMASK GENMASK(9, 5)
  209. #define GENERIC_EE_FMASK GENMASK(13, 10)
  210. #define GENERIC_PARAMS_FMASK GENMASK(31, 24) /* IPA v4.11+ */
  211. /** enum gsi_generic_cmd_opcode - GENERIC_OPCODE field values in GENERIC_CMD */
  212. enum gsi_generic_cmd_opcode {
  213. GSI_GENERIC_HALT_CHANNEL = 0x1,
  214. GSI_GENERIC_ALLOCATE_CHANNEL = 0x2,
  215. GSI_GENERIC_ENABLE_FLOW_CONTROL = 0x3, /* IPA v4.2+ */
  216. GSI_GENERIC_DISABLE_FLOW_CONTROL = 0x4, /* IPA v4.2+ */
  217. GSI_GENERIC_QUERY_FLOW_CONTROL = 0x5, /* IPA v4.11+ */
  218. };
  219. /* The next register is present for IPA v3.5.1 and above */
  220. #define GSI_GSI_HW_PARAM_2_OFFSET \
  221. (0x0001f040 + 0x4000 * GSI_EE_AP)
  222. #define IRAM_SIZE_FMASK GENMASK(2, 0)
  223. #define NUM_CH_PER_EE_FMASK GENMASK(7, 3)
  224. #define NUM_EV_PER_EE_FMASK GENMASK(12, 8)
  225. #define GSI_CH_PEND_TRANSLATE_FMASK GENMASK(13, 13)
  226. #define GSI_CH_FULL_LOGIC_FMASK GENMASK(14, 14)
  227. /* Fields below are present for IPA v4.0 and above */
  228. #define GSI_USE_SDMA_FMASK GENMASK(15, 15)
  229. #define GSI_SDMA_N_INT_FMASK GENMASK(18, 16)
  230. #define GSI_SDMA_MAX_BURST_FMASK GENMASK(26, 19)
  231. #define GSI_SDMA_N_IOVEC_FMASK GENMASK(29, 27)
  232. /* Fields below are present for IPA v4.2 and above */
  233. #define GSI_USE_RD_WR_ENG_FMASK GENMASK(30, 30)
  234. #define GSI_USE_INTER_EE_FMASK GENMASK(31, 31)
  235. /** enum gsi_iram_size - IRAM_SIZE field values in HW_PARAM_2 */
  236. enum gsi_iram_size {
  237. IRAM_SIZE_ONE_KB = 0x0,
  238. IRAM_SIZE_TWO_KB = 0x1,
  239. /* The next two values are available for IPA v4.0 and above */
  240. IRAM_SIZE_TWO_N_HALF_KB = 0x2,
  241. IRAM_SIZE_THREE_KB = 0x3,
  242. /* The next two values are available for IPA v4.5 and above */
  243. IRAM_SIZE_THREE_N_HALF_KB = 0x4,
  244. IRAM_SIZE_FOUR_KB = 0x5,
  245. };
  246. /* IRQ condition for each type is cleared by writing type-specific register */
  247. #define GSI_CNTXT_TYPE_IRQ_OFFSET \
  248. (0x0001f080 + 0x4000 * GSI_EE_AP)
  249. #define GSI_CNTXT_TYPE_IRQ_MSK_OFFSET \
  250. (0x0001f088 + 0x4000 * GSI_EE_AP)
  251. /* Values here are bit positions in the TYPE_IRQ and TYPE_IRQ_MSK registers */
  252. enum gsi_irq_type_id {
  253. GSI_CH_CTRL = 0x0, /* channel allocation, etc. */
  254. GSI_EV_CTRL = 0x1, /* event ring allocation, etc. */
  255. GSI_GLOB_EE = 0x2, /* global/general event */
  256. GSI_IEOB = 0x3, /* TRE completion */
  257. GSI_INTER_EE_CH_CTRL = 0x4, /* remote-issued stop/reset (unused) */
  258. GSI_INTER_EE_EV_CTRL = 0x5, /* remote-issued event reset (unused) */
  259. GSI_GENERAL = 0x6, /* general-purpose event */
  260. };
  261. #define GSI_CNTXT_SRC_CH_IRQ_OFFSET \
  262. (0x0001f090 + 0x4000 * GSI_EE_AP)
  263. #define GSI_CNTXT_SRC_EV_CH_IRQ_OFFSET \
  264. (0x0001f094 + 0x4000 * GSI_EE_AP)
  265. #define GSI_CNTXT_SRC_CH_IRQ_MSK_OFFSET \
  266. (0x0001f098 + 0x4000 * GSI_EE_AP)
  267. #define GSI_CNTXT_SRC_EV_CH_IRQ_MSK_OFFSET \
  268. (0x0001f09c + 0x4000 * GSI_EE_AP)
  269. #define GSI_CNTXT_SRC_CH_IRQ_CLR_OFFSET \
  270. (0x0001f0a0 + 0x4000 * GSI_EE_AP)
  271. #define GSI_CNTXT_SRC_EV_CH_IRQ_CLR_OFFSET \
  272. (0x0001f0a4 + 0x4000 * GSI_EE_AP)
  273. #define GSI_CNTXT_SRC_IEOB_IRQ_OFFSET \
  274. (0x0001f0b0 + 0x4000 * GSI_EE_AP)
  275. #define GSI_CNTXT_SRC_IEOB_IRQ_MSK_OFFSET \
  276. (0x0001f0b8 + 0x4000 * GSI_EE_AP)
  277. #define GSI_CNTXT_SRC_IEOB_IRQ_CLR_OFFSET \
  278. (0x0001f0c0 + 0x4000 * GSI_EE_AP)
  279. #define GSI_CNTXT_GLOB_IRQ_STTS_OFFSET \
  280. (0x0001f100 + 0x4000 * GSI_EE_AP)
  281. #define GSI_CNTXT_GLOB_IRQ_EN_OFFSET \
  282. (0x0001f108 + 0x4000 * GSI_EE_AP)
  283. #define GSI_CNTXT_GLOB_IRQ_CLR_OFFSET \
  284. (0x0001f110 + 0x4000 * GSI_EE_AP)
  285. /* Values here are bit positions in the GLOB_IRQ_* registers */
  286. enum gsi_global_irq_id {
  287. ERROR_INT = 0x0,
  288. GP_INT1 = 0x1,
  289. GP_INT2 = 0x2,
  290. GP_INT3 = 0x3,
  291. };
  292. #define GSI_CNTXT_GSI_IRQ_STTS_OFFSET \
  293. (0x0001f118 + 0x4000 * GSI_EE_AP)
  294. #define GSI_CNTXT_GSI_IRQ_EN_OFFSET \
  295. (0x0001f120 + 0x4000 * GSI_EE_AP)
  296. #define GSI_CNTXT_GSI_IRQ_CLR_OFFSET \
  297. (0x0001f128 + 0x4000 * GSI_EE_AP)
  298. /* Values here are bit positions in the (general) GSI_IRQ_* registers */
  299. enum gsi_general_id {
  300. BREAK_POINT = 0x0,
  301. BUS_ERROR = 0x1,
  302. CMD_FIFO_OVRFLOW = 0x2,
  303. MCS_STACK_OVRFLOW = 0x3,
  304. };
  305. #define GSI_CNTXT_INTSET_OFFSET \
  306. (0x0001f180 + 0x4000 * GSI_EE_AP)
  307. #define INTYPE_FMASK GENMASK(0, 0)
  308. #define GSI_ERROR_LOG_OFFSET \
  309. (0x0001f200 + 0x4000 * GSI_EE_AP)
  310. #define ERR_ARG3_FMASK GENMASK(3, 0)
  311. #define ERR_ARG2_FMASK GENMASK(7, 4)
  312. #define ERR_ARG1_FMASK GENMASK(11, 8)
  313. #define ERR_CODE_FMASK GENMASK(15, 12)
  314. #define ERR_VIRT_IDX_FMASK GENMASK(23, 19)
  315. #define ERR_TYPE_FMASK GENMASK(27, 24)
  316. #define ERR_EE_FMASK GENMASK(31, 28)
  317. /** enum gsi_err_code - ERR_CODE field values in EE_ERR_LOG */
  318. enum gsi_err_code {
  319. GSI_INVALID_TRE = 0x1,
  320. GSI_OUT_OF_BUFFERS = 0x2,
  321. GSI_OUT_OF_RESOURCES = 0x3,
  322. GSI_UNSUPPORTED_INTER_EE_OP = 0x4,
  323. GSI_EVT_RING_EMPTY = 0x5,
  324. GSI_NON_ALLOCATED_EVT_ACCESS = 0x6,
  325. /* 7 is not assigned */
  326. GSI_HWO_1 = 0x8,
  327. };
  328. /** enum gsi_err_type - ERR_TYPE field values in EE_ERR_LOG */
  329. enum gsi_err_type {
  330. GSI_ERR_TYPE_GLOB = 0x1,
  331. GSI_ERR_TYPE_CHAN = 0x2,
  332. GSI_ERR_TYPE_EVT = 0x3,
  333. };
  334. #define GSI_ERROR_LOG_CLR_OFFSET \
  335. (0x0001f210 + 0x4000 * GSI_EE_AP)
  336. #define GSI_CNTXT_SCRATCH_0_OFFSET \
  337. (0x0001f400 + 0x4000 * GSI_EE_AP)
  338. #define INTER_EE_RESULT_FMASK GENMASK(2, 0)
  339. #define GENERIC_EE_RESULT_FMASK GENMASK(7, 5)
  340. /** enum gsi_generic_ee_result - GENERIC_EE_RESULT field values in SCRATCH_0 */
  341. enum gsi_generic_ee_result {
  342. GENERIC_EE_SUCCESS = 0x1,
  343. GENERIC_EE_INCORRECT_CHANNEL_STATE = 0x2,
  344. GENERIC_EE_INCORRECT_DIRECTION = 0x3,
  345. GENERIC_EE_INCORRECT_CHANNEL_TYPE = 0x4,
  346. GENERIC_EE_INCORRECT_CHANNEL = 0x5,
  347. GENERIC_EE_RETRY = 0x6,
  348. GENERIC_EE_NO_RESOURCES = 0x7,
  349. };
  350. #endif /* _GSI_REG_H_ */