]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - drivers/staging/fsl-mc/bus/dprc-cmd.h
iio: imu: inv_mpu6050: test whoami first and against all known values
[mirror_ubuntu-artful-kernel.git] / drivers / staging / fsl-mc / bus / dprc-cmd.h
1 /*
2 * Copyright 2013-2016 Freescale Semiconductor Inc.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 * * Redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer.
8 * * Redistributions in binary form must reproduce the above copyright
9 * notice, this list of conditions and the following disclaimer in the
10 * documentation and/or other materials provided with the distribution.
11 * * Neither the name of the above-listed copyright holders nor the
12 * names of any contributors may be used to endorse or promote products
13 * derived from this software without specific prior written permission.
14 *
15 * ALTERNATIVELY, this software may be distributed under the terms of the
16 * GNU General Public License ("GPL") as published by the Free Software
17 * Foundation, either version 2 of that License or (at your option) any
18 * later version.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 */
32
33 /*
34 * dprc-cmd.h
35 *
36 * defines dprc portal commands
37 *
38 */
39
40 #ifndef _FSL_DPRC_CMD_H
41 #define _FSL_DPRC_CMD_H
42
43 /* Minimal supported DPRC Version */
44 #define DPRC_MIN_VER_MAJOR 6
45 #define DPRC_MIN_VER_MINOR 0
46
47 /* Command versioning */
48 #define DPRC_CMD_BASE_VERSION 1
49 #define DPRC_CMD_ID_OFFSET 4
50
51 #define DPRC_CMD(id) ((id << DPRC_CMD_ID_OFFSET) | DPRC_CMD_BASE_VERSION)
52
53 /* Command IDs */
54 #define DPRC_CMDID_CLOSE DPRC_CMD(0x800)
55 #define DPRC_CMDID_OPEN DPRC_CMD(0x805)
56 #define DPRC_CMDID_GET_API_VERSION DPRC_CMD(0xa05)
57
58 #define DPRC_CMDID_GET_ATTR DPRC_CMD(0x004)
59
60 #define DPRC_CMDID_SET_IRQ DPRC_CMD(0x010)
61 #define DPRC_CMDID_GET_IRQ DPRC_CMD(0x011)
62 #define DPRC_CMDID_SET_IRQ_ENABLE DPRC_CMD(0x012)
63 #define DPRC_CMDID_GET_IRQ_ENABLE DPRC_CMD(0x013)
64 #define DPRC_CMDID_SET_IRQ_MASK DPRC_CMD(0x014)
65 #define DPRC_CMDID_GET_IRQ_MASK DPRC_CMD(0x015)
66 #define DPRC_CMDID_GET_IRQ_STATUS DPRC_CMD(0x016)
67 #define DPRC_CMDID_CLEAR_IRQ_STATUS DPRC_CMD(0x017)
68
69 #define DPRC_CMDID_GET_CONT_ID DPRC_CMD(0x830)
70 #define DPRC_CMDID_GET_OBJ_COUNT DPRC_CMD(0x159)
71 #define DPRC_CMDID_GET_OBJ DPRC_CMD(0x15A)
72 #define DPRC_CMDID_GET_RES_COUNT DPRC_CMD(0x15B)
73 #define DPRC_CMDID_GET_OBJ_REG DPRC_CMD(0x15E)
74 #define DPRC_CMDID_SET_OBJ_IRQ DPRC_CMD(0x15F)
75 #define DPRC_CMDID_GET_OBJ_IRQ DPRC_CMD(0x160)
76
77 struct dprc_cmd_open {
78 __le32 container_id;
79 };
80
81 struct dprc_cmd_create_container {
82 /* cmd word 0 */
83 __le32 options;
84 __le16 icid;
85 __le16 pad0;
86 /* cmd word 1 */
87 __le32 pad1;
88 __le32 portal_id;
89 /* cmd words 2-3 */
90 u8 label[16];
91 };
92
93 struct dprc_rsp_create_container {
94 /* response word 0 */
95 __le64 pad0;
96 /* response word 1 */
97 __le32 child_container_id;
98 __le32 pad1;
99 /* response word 2 */
100 __le64 child_portal_addr;
101 };
102
103 struct dprc_cmd_destroy_container {
104 __le32 child_container_id;
105 };
106
107 struct dprc_cmd_reset_container {
108 __le32 child_container_id;
109 };
110
111 struct dprc_cmd_set_irq {
112 /* cmd word 0 */
113 __le32 irq_val;
114 u8 irq_index;
115 u8 pad[3];
116 /* cmd word 1 */
117 __le64 irq_addr;
118 /* cmd word 2 */
119 __le32 irq_num;
120 };
121
122 struct dprc_cmd_get_irq {
123 __le32 pad;
124 u8 irq_index;
125 };
126
127 struct dprc_rsp_get_irq {
128 /* response word 0 */
129 __le32 irq_val;
130 __le32 pad;
131 /* response word 1 */
132 __le64 irq_addr;
133 /* response word 2 */
134 __le32 irq_num;
135 __le32 type;
136 };
137
138 #define DPRC_ENABLE 0x1
139
140 struct dprc_cmd_set_irq_enable {
141 u8 enable;
142 u8 pad[3];
143 u8 irq_index;
144 };
145
146 struct dprc_cmd_get_irq_enable {
147 __le32 pad;
148 u8 irq_index;
149 };
150
151 struct dprc_rsp_get_irq_enable {
152 u8 enabled;
153 };
154
155 struct dprc_cmd_set_irq_mask {
156 __le32 mask;
157 u8 irq_index;
158 };
159
160 struct dprc_cmd_get_irq_mask {
161 __le32 pad;
162 u8 irq_index;
163 };
164
165 struct dprc_rsp_get_irq_mask {
166 __le32 mask;
167 };
168
169 struct dprc_cmd_get_irq_status {
170 __le32 status;
171 u8 irq_index;
172 };
173
174 struct dprc_rsp_get_irq_status {
175 __le32 status;
176 };
177
178 struct dprc_cmd_clear_irq_status {
179 __le32 status;
180 u8 irq_index;
181 };
182
183 struct dprc_rsp_get_attributes {
184 /* response word 0 */
185 __le32 container_id;
186 __le16 icid;
187 __le16 pad;
188 /* response word 1 */
189 __le32 options;
190 __le32 portal_id;
191 };
192
193 struct dprc_cmd_set_res_quota {
194 /* cmd word 0 */
195 __le32 child_container_id;
196 __le16 quota;
197 __le16 pad;
198 /* cmd words 1-2 */
199 u8 type[16];
200 };
201
202 struct dprc_cmd_get_res_quota {
203 /* cmd word 0 */
204 __le32 child_container_id;
205 __le32 pad;
206 /* cmd word 1-2 */
207 u8 type[16];
208 };
209
210 struct dprc_rsp_get_res_quota {
211 __le32 pad;
212 __le16 quota;
213 };
214
215 struct dprc_cmd_assign {
216 /* cmd word 0 */
217 __le32 container_id;
218 __le32 options;
219 /* cmd word 1 */
220 __le32 num;
221 __le32 id_base_align;
222 /* cmd word 2-3 */
223 u8 type[16];
224 };
225
226 struct dprc_cmd_unassign {
227 /* cmd word 0 */
228 __le32 child_container_id;
229 __le32 options;
230 /* cmd word 1 */
231 __le32 num;
232 __le32 id_base_align;
233 /* cmd word 2-3 */
234 u8 type[16];
235 };
236
237 struct dprc_rsp_get_pool_count {
238 __le32 pool_count;
239 };
240
241 struct dprc_cmd_get_pool {
242 __le32 pool_index;
243 };
244
245 struct dprc_rsp_get_pool {
246 /* response word 0 */
247 __le64 pad;
248 /* response word 1-2 */
249 u8 type[16];
250 };
251
252 struct dprc_rsp_get_obj_count {
253 __le32 pad;
254 __le32 obj_count;
255 };
256
257 struct dprc_cmd_get_obj {
258 __le32 obj_index;
259 };
260
261 struct dprc_rsp_get_obj {
262 /* response word 0 */
263 __le32 pad0;
264 __le32 id;
265 /* response word 1 */
266 __le16 vendor;
267 u8 irq_count;
268 u8 region_count;
269 __le32 state;
270 /* response word 2 */
271 __le16 version_major;
272 __le16 version_minor;
273 __le16 flags;
274 __le16 pad1;
275 /* response word 3-4 */
276 u8 type[16];
277 /* response word 5-6 */
278 u8 label[16];
279 };
280
281 struct dprc_cmd_get_obj_desc {
282 /* cmd word 0 */
283 __le32 obj_id;
284 __le32 pad;
285 /* cmd word 1-2 */
286 u8 type[16];
287 };
288
289 struct dprc_rsp_get_obj_desc {
290 /* response word 0 */
291 __le32 pad0;
292 __le32 id;
293 /* response word 1 */
294 __le16 vendor;
295 u8 irq_count;
296 u8 region_count;
297 __le32 state;
298 /* response word 2 */
299 __le16 version_major;
300 __le16 version_minor;
301 __le16 flags;
302 __le16 pad1;
303 /* response word 3-4 */
304 u8 type[16];
305 /* response word 5-6 */
306 u8 label[16];
307 };
308
309 struct dprc_cmd_get_res_count {
310 /* cmd word 0 */
311 __le64 pad;
312 /* cmd word 1-2 */
313 u8 type[16];
314 };
315
316 struct dprc_rsp_get_res_count {
317 __le32 res_count;
318 };
319
320 struct dprc_cmd_get_res_ids {
321 /* cmd word 0 */
322 u8 pad0[5];
323 u8 iter_status;
324 __le16 pad1;
325 /* cmd word 1 */
326 __le32 base_id;
327 __le32 last_id;
328 /* cmd word 2-3 */
329 u8 type[16];
330 };
331
332 struct dprc_rsp_get_res_ids {
333 /* response word 0 */
334 u8 pad0[5];
335 u8 iter_status;
336 __le16 pad1;
337 /* response word 1 */
338 __le32 base_id;
339 __le32 last_id;
340 };
341
342 struct dprc_cmd_get_obj_region {
343 /* cmd word 0 */
344 __le32 obj_id;
345 __le16 pad0;
346 u8 region_index;
347 u8 pad1;
348 /* cmd word 1-2 */
349 __le64 pad2[2];
350 /* cmd word 3-4 */
351 u8 obj_type[16];
352 };
353
354 struct dprc_rsp_get_obj_region {
355 /* response word 0 */
356 __le64 pad;
357 /* response word 1 */
358 __le64 base_addr;
359 /* response word 2 */
360 __le32 size;
361 };
362
363 struct dprc_cmd_set_obj_label {
364 /* cmd word 0 */
365 __le32 obj_id;
366 __le32 pad;
367 /* cmd word 1-2 */
368 u8 label[16];
369 /* cmd word 3-4 */
370 u8 obj_type[16];
371 };
372
373 struct dprc_cmd_set_obj_irq {
374 /* cmd word 0 */
375 __le32 irq_val;
376 u8 irq_index;
377 u8 pad[3];
378 /* cmd word 1 */
379 __le64 irq_addr;
380 /* cmd word 2 */
381 __le32 irq_num;
382 __le32 obj_id;
383 /* cmd word 3-4 */
384 u8 obj_type[16];
385 };
386
387 struct dprc_cmd_get_obj_irq {
388 /* cmd word 0 */
389 __le32 obj_id;
390 u8 irq_index;
391 u8 pad[3];
392 /* cmd word 1-2 */
393 u8 obj_type[16];
394 };
395
396 struct dprc_rsp_get_obj_irq {
397 /* response word 0 */
398 __le32 irq_val;
399 __le32 pad;
400 /* response word 1 */
401 __le64 irq_addr;
402 /* response word 2 */
403 __le32 irq_num;
404 __le32 type;
405 };
406
407 struct dprc_cmd_connect {
408 /* cmd word 0 */
409 __le32 ep1_id;
410 __le32 ep1_interface_id;
411 /* cmd word 1 */
412 __le32 ep2_id;
413 __le32 ep2_interface_id;
414 /* cmd word 2-3 */
415 u8 ep1_type[16];
416 /* cmd word 4 */
417 __le32 max_rate;
418 __le32 committed_rate;
419 /* cmd word 5-6 */
420 u8 ep2_type[16];
421 };
422
423 struct dprc_cmd_disconnect {
424 /* cmd word 0 */
425 __le32 id;
426 __le32 interface_id;
427 /* cmd word 1-2 */
428 u8 type[16];
429 };
430
431 struct dprc_cmd_get_connection {
432 /* cmd word 0 */
433 __le32 ep1_id;
434 __le32 ep1_interface_id;
435 /* cmd word 1-2 */
436 u8 ep1_type[16];
437 };
438
439 struct dprc_rsp_get_connection {
440 /* response word 0-2 */
441 __le64 pad[3];
442 /* response word 3 */
443 __le32 ep2_id;
444 __le32 ep2_interface_id;
445 /* response word 4-5 */
446 u8 ep2_type[16];
447 /* response word 6 */
448 __le32 state;
449 };
450
451 #endif /* _FSL_DPRC_CMD_H */