1 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
2 /* Copyright 2020 Qiang Yu <yuq825@gmail.com> */
3 
4 #ifndef __LIMA_DUMP_H__
5 #define __LIMA_DUMP_H__
6 
7 #include <linux/types.h>
8 
9 /**
10  * dump file format for all the information to start a lima task
11  *
12  * top level format
13  * | magic code "LIMA" | format version | num tasks | data size |
14  * | reserved | reserved | reserved | reserved |
15  * | task 1 ID | task 1 size | num chunks | reserved | task 1 data |
16  * | task 2 ID | task 2 size | num chunks | reserved | task 2 data |
17  * ...
18  *
19  * task data format
20  * | chunk 1 ID | chunk 1 size | reserved | reserved | chunk 1 data |
21  * | chunk 2 ID | chunk 2 size | reserved | reserved | chunk 2 data |
22  * ...
23  *
24  */
25 
26 #define LIMA_DUMP_MAJOR 1
27 #define LIMA_DUMP_MINOR 0
28 
29 #define LIMA_DUMP_MAGIC 0x414d494c
30 
31 struct lima_dump_head {
32 	__u32 magic;
33 	__u16 version_major;
34 	__u16 version_minor;
35 	__u32 num_tasks;
36 	__u32 size;
37 	__u32 reserved[4];
38 };
39 
40 #define LIMA_DUMP_TASK_GP   0
41 #define LIMA_DUMP_TASK_PP   1
42 #define LIMA_DUMP_TASK_NUM  2
43 
44 struct lima_dump_task {
45 	__u32 id;
46 	__u32 size;
47 	__u32 num_chunks;
48 	__u32 reserved;
49 };
50 
51 #define LIMA_DUMP_CHUNK_FRAME         0
52 #define LIMA_DUMP_CHUNK_BUFFER        1
53 #define LIMA_DUMP_CHUNK_PROCESS_NAME  2
54 #define LIMA_DUMP_CHUNK_PROCESS_ID    3
55 #define LIMA_DUMP_CHUNK_NUM           4
56 
57 struct lima_dump_chunk {
58 	__u32 id;
59 	__u32 size;
60 	__u32 reserved[2];
61 };
62 
63 struct lima_dump_chunk_buffer {
64 	__u32 id;
65 	__u32 size;
66 	__u32 va;
67 	__u32 reserved;
68 };
69 
70 struct lima_dump_chunk_pid {
71 	__u32 id;
72 	__u32 size;
73 	__u32 pid;
74 	__u32 reserved;
75 };
76 
77 #endif
78