]> git.ipfire.org Git - thirdparty/linux.git/blame - drivers/net/ipa/gsi_reg.h
Merge tag 'io_uring-5.7-2020-05-22' of git://git.kernel.dk/linux-block
[thirdparty/linux.git] / drivers / net / ipa / gsi_reg.h
CommitLineData
ca48b27b
AE
1/* SPDX-License-Identifier: GPL-2.0 */
2
3/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
4 * Copyright (C) 2018-2020 Linaro Ltd.
5 */
6#ifndef _GSI_REG_H_
7#define _GSI_REG_H_
8
9/* === Only "gsi.c" should include this file === */
10
11#include <linux/bits.h>
12
13/**
14 * DOC: GSI Registers
15 *
16 * GSI registers are located within the "gsi" address space defined by Device
17 * Tree. The offset of each register within that space is specified by
18 * symbols defined below. The GSI address space is mapped to virtual memory
19 * space in gsi_init(). All GSI registers are 32 bits wide.
20 *
21 * Each register type is duplicated for a number of instances of something.
22 * For example, each GSI channel has its own set of registers defining its
23 * configuration. The offset to a channel's set of registers is computed
24 * based on a "base" offset plus an additional "stride" amount computed
25 * from the channel's ID. For such registers, the offset is computed by a
26 * function-like macro that takes a parameter used in the computation.
27 *
28 * The offset of a register dependent on execution environment is computed
29 * by a macro that is supplied a parameter "ee". The "ee" value is a member
30 * of the gsi_ee_id enumerated type.
31 *
32 * The offset of a channel register is computed by a macro that is supplied a
33 * parameter "ch". The "ch" value is a channel id whose maximum value is 30
34 * (though the actual limit is hardware-dependent).
35 *
36 * The offset of an event register is computed by a macro that is supplied a
37 * parameter "ev". The "ev" value is an event id whose maximum value is 15
38 * (though the actual limit is hardware-dependent).
39 */
40
41#define GSI_INTER_EE_SRC_CH_IRQ_OFFSET \
42 GSI_INTER_EE_N_SRC_CH_IRQ_OFFSET(GSI_EE_AP)
43#define GSI_INTER_EE_N_SRC_CH_IRQ_OFFSET(ee) \
44 (0x0000c018 + 0x1000 * (ee))
45
46#define GSI_INTER_EE_SRC_EV_CH_IRQ_OFFSET \
47 GSI_INTER_EE_N_SRC_EV_CH_IRQ_OFFSET(GSI_EE_AP)
48#define GSI_INTER_EE_N_SRC_EV_CH_IRQ_OFFSET(ee) \
49 (0x0000c01c + 0x1000 * (ee))
50
51#define GSI_INTER_EE_SRC_CH_IRQ_CLR_OFFSET \
52 GSI_INTER_EE_N_SRC_CH_IRQ_CLR_OFFSET(GSI_EE_AP)
53#define GSI_INTER_EE_N_SRC_CH_IRQ_CLR_OFFSET(ee) \
54 (0x0000c028 + 0x1000 * (ee))
55
56#define GSI_INTER_EE_SRC_EV_CH_IRQ_CLR_OFFSET \
57 GSI_INTER_EE_N_SRC_EV_CH_IRQ_CLR_OFFSET(GSI_EE_AP)
58#define GSI_INTER_EE_N_SRC_EV_CH_IRQ_CLR_OFFSET(ee) \
59 (0x0000c02c + 0x1000 * (ee))
60
61#define GSI_CH_C_CNTXT_0_OFFSET(ch) \
62 GSI_EE_N_CH_C_CNTXT_0_OFFSET((ch), GSI_EE_AP)
63#define GSI_EE_N_CH_C_CNTXT_0_OFFSET(ch, ee) \
64 (0x0001c000 + 0x4000 * (ee) + 0x80 * (ch))
65#define CHTYPE_PROTOCOL_FMASK GENMASK(2, 0)
66#define CHTYPE_DIR_FMASK GENMASK(3, 3)
67#define EE_FMASK GENMASK(7, 4)
68#define CHID_FMASK GENMASK(12, 8)
69/* The next field is present for GSI v2.0 and above */
70#define CHTYPE_PROTOCOL_MSB_FMASK GENMASK(13, 13)
71#define ERINDEX_FMASK GENMASK(18, 14)
72#define CHSTATE_FMASK GENMASK(23, 20)
73#define ELEMENT_SIZE_FMASK GENMASK(31, 24)
74
75#define GSI_CH_C_CNTXT_1_OFFSET(ch) \
76 GSI_EE_N_CH_C_CNTXT_1_OFFSET((ch), GSI_EE_AP)
77#define GSI_EE_N_CH_C_CNTXT_1_OFFSET(ch, ee) \
78 (0x0001c004 + 0x4000 * (ee) + 0x80 * (ch))
79#define R_LENGTH_FMASK GENMASK(15, 0)
80
81#define GSI_CH_C_CNTXT_2_OFFSET(ch) \
82 GSI_EE_N_CH_C_CNTXT_2_OFFSET((ch), GSI_EE_AP)
83#define GSI_EE_N_CH_C_CNTXT_2_OFFSET(ch, ee) \
84 (0x0001c008 + 0x4000 * (ee) + 0x80 * (ch))
85
86#define GSI_CH_C_CNTXT_3_OFFSET(ch) \
87 GSI_EE_N_CH_C_CNTXT_3_OFFSET((ch), GSI_EE_AP)
88#define GSI_EE_N_CH_C_CNTXT_3_OFFSET(ch, ee) \
89 (0x0001c00c + 0x4000 * (ee) + 0x80 * (ch))
90
91#define GSI_CH_C_QOS_OFFSET(ch) \
92 GSI_EE_N_CH_C_QOS_OFFSET((ch), GSI_EE_AP)
93#define GSI_EE_N_CH_C_QOS_OFFSET(ch, ee) \
94 (0x0001c05c + 0x4000 * (ee) + 0x80 * (ch))
95#define WRR_WEIGHT_FMASK GENMASK(3, 0)
96#define MAX_PREFETCH_FMASK GENMASK(8, 8)
97#define USE_DB_ENG_FMASK GENMASK(9, 9)
98/* The next field is present for GSI v2.0 and above */
99#define USE_ESCAPE_BUF_ONLY_FMASK GENMASK(10, 10)
100
101#define GSI_CH_C_SCRATCH_0_OFFSET(ch) \
102 GSI_EE_N_CH_C_SCRATCH_0_OFFSET((ch), GSI_EE_AP)
103#define GSI_EE_N_CH_C_SCRATCH_0_OFFSET(ch, ee) \
104 (0x0001c060 + 0x4000 * (ee) + 0x80 * (ch))
105
106#define GSI_CH_C_SCRATCH_1_OFFSET(ch) \
107 GSI_EE_N_CH_C_SCRATCH_1_OFFSET((ch), GSI_EE_AP)
108#define GSI_EE_N_CH_C_SCRATCH_1_OFFSET(ch, ee) \
109 (0x0001c064 + 0x4000 * (ee) + 0x80 * (ch))
110
111#define GSI_CH_C_SCRATCH_2_OFFSET(ch) \
112 GSI_EE_N_CH_C_SCRATCH_2_OFFSET((ch), GSI_EE_AP)
113#define GSI_EE_N_CH_C_SCRATCH_2_OFFSET(ch, ee) \
114 (0x0001c068 + 0x4000 * (ee) + 0x80 * (ch))
115
116#define GSI_CH_C_SCRATCH_3_OFFSET(ch) \
117 GSI_EE_N_CH_C_SCRATCH_3_OFFSET((ch), GSI_EE_AP)
118#define GSI_EE_N_CH_C_SCRATCH_3_OFFSET(ch, ee) \
119 (0x0001c06c + 0x4000 * (ee) + 0x80 * (ch))
120
121#define GSI_EV_CH_E_CNTXT_0_OFFSET(ev) \
122 GSI_EE_N_EV_CH_E_CNTXT_0_OFFSET((ev), GSI_EE_AP)
123#define GSI_EE_N_EV_CH_E_CNTXT_0_OFFSET(ev, ee) \
124 (0x0001d000 + 0x4000 * (ee) + 0x80 * (ev))
125#define EV_CHTYPE_FMASK GENMASK(3, 0)
126#define EV_EE_FMASK GENMASK(7, 4)
127#define EV_EVCHID_FMASK GENMASK(15, 8)
128#define EV_INTYPE_FMASK GENMASK(16, 16)
129#define EV_CHSTATE_FMASK GENMASK(23, 20)
130#define EV_ELEMENT_SIZE_FMASK GENMASK(31, 24)
131
132#define GSI_EV_CH_E_CNTXT_1_OFFSET(ev) \
133 GSI_EE_N_EV_CH_E_CNTXT_1_OFFSET((ev), GSI_EE_AP)
134#define GSI_EE_N_EV_CH_E_CNTXT_1_OFFSET(ev, ee) \
135 (0x0001d004 + 0x4000 * (ee) + 0x80 * (ev))
136#define EV_R_LENGTH_FMASK GENMASK(15, 0)
137
138#define GSI_EV_CH_E_CNTXT_2_OFFSET(ev) \
139 GSI_EE_N_EV_CH_E_CNTXT_2_OFFSET((ev), GSI_EE_AP)
140#define GSI_EE_N_EV_CH_E_CNTXT_2_OFFSET(ev, ee) \
141 (0x0001d008 + 0x4000 * (ee) + 0x80 * (ev))
142
143#define GSI_EV_CH_E_CNTXT_3_OFFSET(ev) \
144 GSI_EE_N_EV_CH_E_CNTXT_3_OFFSET((ev), GSI_EE_AP)
145#define GSI_EE_N_EV_CH_E_CNTXT_3_OFFSET(ev, ee) \
146 (0x0001d00c + 0x4000 * (ee) + 0x80 * (ev))
147
148#define GSI_EV_CH_E_CNTXT_4_OFFSET(ev) \
149 GSI_EE_N_EV_CH_E_CNTXT_4_OFFSET((ev), GSI_EE_AP)
150#define GSI_EE_N_EV_CH_E_CNTXT_4_OFFSET(ev, ee) \
151 (0x0001d010 + 0x4000 * (ee) + 0x80 * (ev))
152
153#define GSI_EV_CH_E_CNTXT_8_OFFSET(ev) \
154 GSI_EE_N_EV_CH_E_CNTXT_8_OFFSET((ev), GSI_EE_AP)
155#define GSI_EE_N_EV_CH_E_CNTXT_8_OFFSET(ev, ee) \
156 (0x0001d020 + 0x4000 * (ee) + 0x80 * (ev))
157#define MODT_FMASK GENMASK(15, 0)
158#define MODC_FMASK GENMASK(23, 16)
159#define MOD_CNT_FMASK GENMASK(31, 24)
160
161#define GSI_EV_CH_E_CNTXT_9_OFFSET(ev) \
162 GSI_EE_N_EV_CH_E_CNTXT_9_OFFSET((ev), GSI_EE_AP)
163#define GSI_EE_N_EV_CH_E_CNTXT_9_OFFSET(ev, ee) \
164 (0x0001d024 + 0x4000 * (ee) + 0x80 * (ev))
165
166#define GSI_EV_CH_E_CNTXT_10_OFFSET(ev) \
167 GSI_EE_N_EV_CH_E_CNTXT_10_OFFSET((ev), GSI_EE_AP)
168#define GSI_EE_N_EV_CH_E_CNTXT_10_OFFSET(ev, ee) \
169 (0x0001d028 + 0x4000 * (ee) + 0x80 * (ev))
170
171#define GSI_EV_CH_E_CNTXT_11_OFFSET(ev) \
172 GSI_EE_N_EV_CH_E_CNTXT_11_OFFSET((ev), GSI_EE_AP)
173#define GSI_EE_N_EV_CH_E_CNTXT_11_OFFSET(ev, ee) \
174 (0x0001d02c + 0x4000 * (ee) + 0x80 * (ev))
175
176#define GSI_EV_CH_E_CNTXT_12_OFFSET(ev) \
177 GSI_EE_N_EV_CH_E_CNTXT_12_OFFSET((ev), GSI_EE_AP)
178#define GSI_EE_N_EV_CH_E_CNTXT_12_OFFSET(ev, ee) \
179 (0x0001d030 + 0x4000 * (ee) + 0x80 * (ev))
180
181#define GSI_EV_CH_E_CNTXT_13_OFFSET(ev) \
182 GSI_EE_N_EV_CH_E_CNTXT_13_OFFSET((ev), GSI_EE_AP)
183#define GSI_EE_N_EV_CH_E_CNTXT_13_OFFSET(ev, ee) \
184 (0x0001d034 + 0x4000 * (ee) + 0x80 * (ev))
185
186#define GSI_EV_CH_E_SCRATCH_0_OFFSET(ev) \
187 GSI_EE_N_EV_CH_E_SCRATCH_0_OFFSET((ev), GSI_EE_AP)
188#define GSI_EE_N_EV_CH_E_SCRATCH_0_OFFSET(ev, ee) \
189 (0x0001d048 + 0x4000 * (ee) + 0x80 * (ev))
190
191#define GSI_EV_CH_E_SCRATCH_1_OFFSET(ev) \
192 GSI_EE_N_EV_CH_E_SCRATCH_1_OFFSET((ev), GSI_EE_AP)
193#define GSI_EE_N_EV_CH_E_SCRATCH_1_OFFSET(ev, ee) \
194 (0x0001d04c + 0x4000 * (ee) + 0x80 * (ev))
195
196#define GSI_CH_C_DOORBELL_0_OFFSET(ch) \
197 GSI_EE_N_CH_C_DOORBELL_0_OFFSET((ch), GSI_EE_AP)
198#define GSI_EE_N_CH_C_DOORBELL_0_OFFSET(ch, ee) \
199 (0x0001e000 + 0x4000 * (ee) + 0x08 * (ch))
200
201#define GSI_EV_CH_E_DOORBELL_0_OFFSET(ev) \
202 GSI_EE_N_EV_CH_E_DOORBELL_0_OFFSET((ev), GSI_EE_AP)
203#define GSI_EE_N_EV_CH_E_DOORBELL_0_OFFSET(ev, ee) \
204 (0x0001e100 + 0x4000 * (ee) + 0x08 * (ev))
205
206#define GSI_GSI_STATUS_OFFSET \
207 GSI_EE_N_GSI_STATUS_OFFSET(GSI_EE_AP)
208#define GSI_EE_N_GSI_STATUS_OFFSET(ee) \
209 (0x0001f000 + 0x4000 * (ee))
210#define ENABLED_FMASK GENMASK(0, 0)
211
212#define GSI_CH_CMD_OFFSET \
213 GSI_EE_N_CH_CMD_OFFSET(GSI_EE_AP)
214#define GSI_EE_N_CH_CMD_OFFSET(ee) \
215 (0x0001f008 + 0x4000 * (ee))
216#define CH_CHID_FMASK GENMASK(7, 0)
217#define CH_OPCODE_FMASK GENMASK(31, 24)
218
219#define GSI_EV_CH_CMD_OFFSET \
220 GSI_EE_N_EV_CH_CMD_OFFSET(GSI_EE_AP)
221#define GSI_EE_N_EV_CH_CMD_OFFSET(ee) \
222 (0x0001f010 + 0x4000 * (ee))
223#define EV_CHID_FMASK GENMASK(7, 0)
224#define EV_OPCODE_FMASK GENMASK(31, 24)
225
226#define GSI_GENERIC_CMD_OFFSET \
227 GSI_EE_N_GENERIC_CMD_OFFSET(GSI_EE_AP)
228#define GSI_EE_N_GENERIC_CMD_OFFSET(ee) \
229 (0x0001f018 + 0x4000 * (ee))
230#define GENERIC_OPCODE_FMASK GENMASK(4, 0)
231#define GENERIC_CHID_FMASK GENMASK(9, 5)
232#define GENERIC_EE_FMASK GENMASK(13, 10)
233
234#define GSI_GSI_HW_PARAM_2_OFFSET \
235 GSI_EE_N_GSI_HW_PARAM_2_OFFSET(GSI_EE_AP)
236#define GSI_EE_N_GSI_HW_PARAM_2_OFFSET(ee) \
237 (0x0001f040 + 0x4000 * (ee))
238#define IRAM_SIZE_FMASK GENMASK(2, 0)
239#define IRAM_SIZE_ONE_KB_FVAL 0
240#define IRAM_SIZE_TWO_KB_FVAL 1
241/* The next two values are available for GSI v2.0 and above */
242#define IRAM_SIZE_TWO_N_HALF_KB_FVAL 2
243#define IRAM_SIZE_THREE_KB_FVAL 3
244#define NUM_CH_PER_EE_FMASK GENMASK(7, 3)
245#define NUM_EV_PER_EE_FMASK GENMASK(12, 8)
246#define GSI_CH_PEND_TRANSLATE_FMASK GENMASK(13, 13)
247#define GSI_CH_FULL_LOGIC_FMASK GENMASK(14, 14)
248/* Fields below are present for GSI v2.0 and above */
249#define GSI_USE_SDMA_FMASK GENMASK(15, 15)
250#define GSI_SDMA_N_INT_FMASK GENMASK(18, 16)
251#define GSI_SDMA_MAX_BURST_FMASK GENMASK(26, 19)
252#define GSI_SDMA_N_IOVEC_FMASK GENMASK(29, 27)
253/* Fields below are present for GSI v2.2 and above */
254#define GSI_USE_RD_WR_ENG_FMASK GENMASK(30, 30)
255#define GSI_USE_INTER_EE_FMASK GENMASK(31, 31)
256
257#define GSI_CNTXT_TYPE_IRQ_OFFSET \
258 GSI_EE_N_CNTXT_TYPE_IRQ_OFFSET(GSI_EE_AP)
259#define GSI_EE_N_CNTXT_TYPE_IRQ_OFFSET(ee) \
260 (0x0001f080 + 0x4000 * (ee))
261#define CH_CTRL_FMASK GENMASK(0, 0)
262#define EV_CTRL_FMASK GENMASK(1, 1)
263#define GLOB_EE_FMASK GENMASK(2, 2)
264#define IEOB_FMASK GENMASK(3, 3)
265#define INTER_EE_CH_CTRL_FMASK GENMASK(4, 4)
266#define INTER_EE_EV_CTRL_FMASK GENMASK(5, 5)
267#define GENERAL_FMASK GENMASK(6, 6)
268
269#define GSI_CNTXT_TYPE_IRQ_MSK_OFFSET \
270 GSI_EE_N_CNTXT_TYPE_IRQ_MSK_OFFSET(GSI_EE_AP)
271#define GSI_EE_N_CNTXT_TYPE_IRQ_MSK_OFFSET(ee) \
272 (0x0001f088 + 0x4000 * (ee))
273#define MSK_CH_CTRL_FMASK GENMASK(0, 0)
274#define MSK_EV_CTRL_FMASK GENMASK(1, 1)
275#define MSK_GLOB_EE_FMASK GENMASK(2, 2)
276#define MSK_IEOB_FMASK GENMASK(3, 3)
277#define MSK_INTER_EE_CH_CTRL_FMASK GENMASK(4, 4)
278#define MSK_INTER_EE_EV_CTRL_FMASK GENMASK(5, 5)
279#define MSK_GENERAL_FMASK GENMASK(6, 6)
280#define GSI_CNTXT_TYPE_IRQ_MSK_ALL GENMASK(6, 0)
281
282#define GSI_CNTXT_SRC_CH_IRQ_OFFSET \
283 GSI_EE_N_CNTXT_SRC_CH_IRQ_OFFSET(GSI_EE_AP)
284#define GSI_EE_N_CNTXT_SRC_CH_IRQ_OFFSET(ee) \
285 (0x0001f090 + 0x4000 * (ee))
286
287#define GSI_CNTXT_SRC_EV_CH_IRQ_OFFSET \
288 GSI_EE_N_CNTXT_SRC_EV_CH_IRQ_OFFSET(GSI_EE_AP)
289#define GSI_EE_N_CNTXT_SRC_EV_CH_IRQ_OFFSET(ee) \
290 (0x0001f094 + 0x4000 * (ee))
291
292#define GSI_CNTXT_SRC_CH_IRQ_MSK_OFFSET \
293 GSI_EE_N_CNTXT_SRC_CH_IRQ_MSK_OFFSET(GSI_EE_AP)
294#define GSI_EE_N_CNTXT_SRC_CH_IRQ_MSK_OFFSET(ee) \
295 (0x0001f098 + 0x4000 * (ee))
296
297#define GSI_CNTXT_SRC_EV_CH_IRQ_MSK_OFFSET \
298 GSI_EE_N_CNTXT_SRC_EV_CH_IRQ_MSK_OFFSET(GSI_EE_AP)
299#define GSI_EE_N_CNTXT_SRC_EV_CH_IRQ_MSK_OFFSET(ee) \
300 (0x0001f09c + 0x4000 * (ee))
301
302#define GSI_CNTXT_SRC_CH_IRQ_CLR_OFFSET \
303 GSI_EE_N_CNTXT_SRC_CH_IRQ_CLR_OFFSET(GSI_EE_AP)
304#define GSI_EE_N_CNTXT_SRC_CH_IRQ_CLR_OFFSET(ee) \
305 (0x0001f0a0 + 0x4000 * (ee))
306
307#define GSI_CNTXT_SRC_EV_CH_IRQ_CLR_OFFSET \
308 GSI_EE_N_CNTXT_SRC_EV_CH_IRQ_CLR_OFFSET(GSI_EE_AP)
309#define GSI_EE_N_CNTXT_SRC_EV_CH_IRQ_CLR_OFFSET(ee) \
310 (0x0001f0a4 + 0x4000 * (ee))
311
312#define GSI_CNTXT_SRC_IEOB_IRQ_OFFSET \
313 GSI_EE_N_CNTXT_SRC_IEOB_IRQ_OFFSET(GSI_EE_AP)
314#define GSI_EE_N_CNTXT_SRC_IEOB_IRQ_OFFSET(ee) \
315 (0x0001f0b0 + 0x4000 * (ee))
316
317#define GSI_CNTXT_SRC_IEOB_IRQ_MSK_OFFSET \
318 GSI_EE_N_CNTXT_SRC_IEOB_IRQ_MSK_OFFSET(GSI_EE_AP)
319#define GSI_EE_N_CNTXT_SRC_IEOB_IRQ_MSK_OFFSET(ee) \
320 (0x0001f0b8 + 0x4000 * (ee))
321
322#define GSI_CNTXT_SRC_IEOB_IRQ_CLR_OFFSET \
323 GSI_EE_N_CNTXT_SRC_IEOB_IRQ_CLR_OFFSET(GSI_EE_AP)
324#define GSI_EE_N_CNTXT_SRC_IEOB_IRQ_CLR_OFFSET(ee) \
325 (0x0001f0c0 + 0x4000 * (ee))
326
327#define GSI_CNTXT_GLOB_IRQ_STTS_OFFSET \
328 GSI_EE_N_CNTXT_GLOB_IRQ_STTS_OFFSET(GSI_EE_AP)
329#define GSI_EE_N_CNTXT_GLOB_IRQ_STTS_OFFSET(ee) \
330 (0x0001f100 + 0x4000 * (ee))
331#define ERROR_INT_FMASK GENMASK(0, 0)
332#define GP_INT1_FMASK GENMASK(1, 1)
333#define GP_INT2_FMASK GENMASK(2, 2)
334#define GP_INT3_FMASK GENMASK(3, 3)
335
336#define GSI_CNTXT_GLOB_IRQ_EN_OFFSET \
337 GSI_EE_N_CNTXT_GLOB_IRQ_EN_OFFSET(GSI_EE_AP)
338#define GSI_EE_N_CNTXT_GLOB_IRQ_EN_OFFSET(ee) \
339 (0x0001f108 + 0x4000 * (ee))
340#define EN_ERROR_INT_FMASK GENMASK(0, 0)
341#define EN_GP_INT1_FMASK GENMASK(1, 1)
342#define EN_GP_INT2_FMASK GENMASK(2, 2)
343#define EN_GP_INT3_FMASK GENMASK(3, 3)
344#define GSI_CNTXT_GLOB_IRQ_ALL GENMASK(3, 0)
345
346#define GSI_CNTXT_GLOB_IRQ_CLR_OFFSET \
347 GSI_EE_N_CNTXT_GLOB_IRQ_CLR_OFFSET(GSI_EE_AP)
348#define GSI_EE_N_CNTXT_GLOB_IRQ_CLR_OFFSET(ee) \
349 (0x0001f110 + 0x4000 * (ee))
350#define CLR_ERROR_INT_FMASK GENMASK(0, 0)
351#define CLR_GP_INT1_FMASK GENMASK(1, 1)
352#define CLR_GP_INT2_FMASK GENMASK(2, 2)
353#define CLR_GP_INT3_FMASK GENMASK(3, 3)
354
355#define GSI_CNTXT_GSI_IRQ_STTS_OFFSET \
356 GSI_EE_N_CNTXT_GSI_IRQ_STTS_OFFSET(GSI_EE_AP)
357#define GSI_EE_N_CNTXT_GSI_IRQ_STTS_OFFSET(ee) \
358 (0x0001f118 + 0x4000 * (ee))
359#define BREAK_POINT_FMASK GENMASK(0, 0)
360#define BUS_ERROR_FMASK GENMASK(1, 1)
361#define CMD_FIFO_OVRFLOW_FMASK GENMASK(2, 2)
362#define MCS_STACK_OVRFLOW_FMASK GENMASK(3, 3)
363
364#define GSI_CNTXT_GSI_IRQ_EN_OFFSET \
365 GSI_EE_N_CNTXT_GSI_IRQ_EN_OFFSET(GSI_EE_AP)
366#define GSI_EE_N_CNTXT_GSI_IRQ_EN_OFFSET(ee) \
367 (0x0001f120 + 0x4000 * (ee))
368#define EN_BREAK_POINT_FMASK GENMASK(0, 0)
369#define EN_BUS_ERROR_FMASK GENMASK(1, 1)
370#define EN_CMD_FIFO_OVRFLOW_FMASK GENMASK(2, 2)
371#define EN_MCS_STACK_OVRFLOW_FMASK GENMASK(3, 3)
372#define GSI_CNTXT_GSI_IRQ_ALL GENMASK(3, 0)
373
374#define GSI_CNTXT_GSI_IRQ_CLR_OFFSET \
375 GSI_EE_N_CNTXT_GSI_IRQ_CLR_OFFSET(GSI_EE_AP)
376#define GSI_EE_N_CNTXT_GSI_IRQ_CLR_OFFSET(ee) \
377 (0x0001f128 + 0x4000 * (ee))
378#define CLR_BREAK_POINT_FMASK GENMASK(0, 0)
379#define CLR_BUS_ERROR_FMASK GENMASK(1, 1)
380#define CLR_CMD_FIFO_OVRFLOW_FMASK GENMASK(2, 2)
381#define CLR_MCS_STACK_OVRFLOW_FMASK GENMASK(3, 3)
382
383#define GSI_CNTXT_INTSET_OFFSET \
384 GSI_EE_N_CNTXT_INTSET_OFFSET(GSI_EE_AP)
385#define GSI_EE_N_CNTXT_INTSET_OFFSET(ee) \
386 (0x0001f180 + 0x4000 * (ee))
387#define INTYPE_FMASK GENMASK(0, 0)
388
389#define GSI_ERROR_LOG_OFFSET \
390 GSI_EE_N_ERROR_LOG_OFFSET(GSI_EE_AP)
391#define GSI_EE_N_ERROR_LOG_OFFSET(ee) \
392 (0x0001f200 + 0x4000 * (ee))
393#define ERR_ARG3_FMASK GENMASK(3, 0)
394#define ERR_ARG2_FMASK GENMASK(7, 4)
395#define ERR_ARG1_FMASK GENMASK(11, 8)
396#define ERR_CODE_FMASK GENMASK(15, 12)
397#define ERR_VIRT_IDX_FMASK GENMASK(23, 19)
398#define ERR_TYPE_FMASK GENMASK(27, 24)
399#define ERR_EE_FMASK GENMASK(31, 28)
400
401#define GSI_ERROR_LOG_CLR_OFFSET \
402 GSI_EE_N_ERROR_LOG_CLR_OFFSET(GSI_EE_AP)
403#define GSI_EE_N_ERROR_LOG_CLR_OFFSET(ee) \
404 (0x0001f210 + 0x4000 * (ee))
405
406#define GSI_CNTXT_SCRATCH_0_OFFSET \
407 GSI_EE_N_CNTXT_SCRATCH_0_OFFSET(GSI_EE_AP)
408#define GSI_EE_N_CNTXT_SCRATCH_0_OFFSET(ee) \
409 (0x0001f400 + 0x4000 * (ee))
410#define INTER_EE_RESULT_FMASK GENMASK(2, 0)
411#define GENERIC_EE_RESULT_FMASK GENMASK(7, 5)
412#define GENERIC_EE_SUCCESS_FVAL 1
0b1ba18a
AE
413#define GENERIC_EE_INCORRECT_DIRECTION_FVAL 3
414#define GENERIC_EE_INCORRECT_CHANNEL_FVAL 5
ca48b27b
AE
415#define GENERIC_EE_NO_RESOURCES_FVAL 7
416#define USB_MAX_PACKET_FMASK GENMASK(15, 15) /* 0: HS; 1: SS */
417#define MHI_BASE_CHANNEL_FMASK GENMASK(31, 24)
418
419#endif /* _GSI_REG_H_ */