1 /*
2  * This file is auto-generated. Modifications will be lost.
3  *
4  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5  * for more information.
6  */
7 #ifndef _PANFROST_DRM_H_
8 #define _PANFROST_DRM_H_
9 #include "drm.h"
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 #define DRM_PANFROST_SUBMIT 0x00
14 #define DRM_PANFROST_WAIT_BO 0x01
15 #define DRM_PANFROST_CREATE_BO 0x02
16 #define DRM_PANFROST_MMAP_BO 0x03
17 #define DRM_PANFROST_GET_PARAM 0x04
18 #define DRM_PANFROST_GET_BO_OFFSET 0x05
19 #define DRM_PANFROST_PERFCNT_ENABLE 0x06
20 #define DRM_PANFROST_PERFCNT_DUMP 0x07
21 #define DRM_PANFROST_MADVISE 0x08
22 #define DRM_IOCTL_PANFROST_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit)
23 #define DRM_IOCTL_PANFROST_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_WAIT_BO, struct drm_panfrost_wait_bo)
24 #define DRM_IOCTL_PANFROST_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_CREATE_BO, struct drm_panfrost_create_bo)
25 #define DRM_IOCTL_PANFROST_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MMAP_BO, struct drm_panfrost_mmap_bo)
26 #define DRM_IOCTL_PANFROST_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_PARAM, struct drm_panfrost_get_param)
27 #define DRM_IOCTL_PANFROST_GET_BO_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_BO_OFFSET, struct drm_panfrost_get_bo_offset)
28 #define DRM_IOCTL_PANFROST_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MADVISE, struct drm_panfrost_madvise)
29 #define DRM_IOCTL_PANFROST_PERFCNT_ENABLE DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_ENABLE, struct drm_panfrost_perfcnt_enable)
30 #define DRM_IOCTL_PANFROST_PERFCNT_DUMP DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_DUMP, struct drm_panfrost_perfcnt_dump)
31 #define PANFROST_JD_REQ_FS (1 << 0)
32 struct drm_panfrost_submit {
33   __u64 jc;
34   __u64 in_syncs;
35   __u32 in_sync_count;
36   __u32 out_sync;
37   __u64 bo_handles;
38   __u32 bo_handle_count;
39   __u32 requirements;
40 };
41 struct drm_panfrost_wait_bo {
42   __u32 handle;
43   __u32 pad;
44   __s64 timeout_ns;
45 };
46 #define PANFROST_BO_NOEXEC 1
47 #define PANFROST_BO_HEAP 2
48 struct drm_panfrost_create_bo {
49   __u32 size;
50   __u32 flags;
51   __u32 handle;
52   __u32 pad;
53   __u64 offset;
54 };
55 struct drm_panfrost_mmap_bo {
56   __u32 handle;
57   __u32 flags;
58   __u64 offset;
59 };
60 enum drm_panfrost_param {
61   DRM_PANFROST_PARAM_GPU_PROD_ID,
62   DRM_PANFROST_PARAM_GPU_REVISION,
63   DRM_PANFROST_PARAM_SHADER_PRESENT,
64   DRM_PANFROST_PARAM_TILER_PRESENT,
65   DRM_PANFROST_PARAM_L2_PRESENT,
66   DRM_PANFROST_PARAM_STACK_PRESENT,
67   DRM_PANFROST_PARAM_AS_PRESENT,
68   DRM_PANFROST_PARAM_JS_PRESENT,
69   DRM_PANFROST_PARAM_L2_FEATURES,
70   DRM_PANFROST_PARAM_CORE_FEATURES,
71   DRM_PANFROST_PARAM_TILER_FEATURES,
72   DRM_PANFROST_PARAM_MEM_FEATURES,
73   DRM_PANFROST_PARAM_MMU_FEATURES,
74   DRM_PANFROST_PARAM_THREAD_FEATURES,
75   DRM_PANFROST_PARAM_MAX_THREADS,
76   DRM_PANFROST_PARAM_THREAD_MAX_WORKGROUP_SZ,
77   DRM_PANFROST_PARAM_THREAD_MAX_BARRIER_SZ,
78   DRM_PANFROST_PARAM_COHERENCY_FEATURES,
79   DRM_PANFROST_PARAM_TEXTURE_FEATURES0,
80   DRM_PANFROST_PARAM_TEXTURE_FEATURES1,
81   DRM_PANFROST_PARAM_TEXTURE_FEATURES2,
82   DRM_PANFROST_PARAM_TEXTURE_FEATURES3,
83   DRM_PANFROST_PARAM_JS_FEATURES0,
84   DRM_PANFROST_PARAM_JS_FEATURES1,
85   DRM_PANFROST_PARAM_JS_FEATURES2,
86   DRM_PANFROST_PARAM_JS_FEATURES3,
87   DRM_PANFROST_PARAM_JS_FEATURES4,
88   DRM_PANFROST_PARAM_JS_FEATURES5,
89   DRM_PANFROST_PARAM_JS_FEATURES6,
90   DRM_PANFROST_PARAM_JS_FEATURES7,
91   DRM_PANFROST_PARAM_JS_FEATURES8,
92   DRM_PANFROST_PARAM_JS_FEATURES9,
93   DRM_PANFROST_PARAM_JS_FEATURES10,
94   DRM_PANFROST_PARAM_JS_FEATURES11,
95   DRM_PANFROST_PARAM_JS_FEATURES12,
96   DRM_PANFROST_PARAM_JS_FEATURES13,
97   DRM_PANFROST_PARAM_JS_FEATURES14,
98   DRM_PANFROST_PARAM_JS_FEATURES15,
99   DRM_PANFROST_PARAM_NR_CORE_GROUPS,
100   DRM_PANFROST_PARAM_THREAD_TLS_ALLOC,
101   DRM_PANFROST_PARAM_AFBC_FEATURES,
102 };
103 struct drm_panfrost_get_param {
104   __u32 param;
105   __u32 pad;
106   __u64 value;
107 };
108 struct drm_panfrost_get_bo_offset {
109   __u32 handle;
110   __u32 pad;
111   __u64 offset;
112 };
113 struct drm_panfrost_perfcnt_enable {
114   __u32 enable;
115   __u32 counterset;
116 };
117 struct drm_panfrost_perfcnt_dump {
118   __u64 buf_ptr;
119 };
120 #define PANFROST_MADV_WILLNEED 0
121 #define PANFROST_MADV_DONTNEED 1
122 struct drm_panfrost_madvise {
123   __u32 handle;
124   __u32 madv;
125   __u32 retained;
126 };
127 #define PANFROSTDUMP_MAJOR 1
128 #define PANFROSTDUMP_MINOR 0
129 #define PANFROSTDUMP_MAGIC 0x464E4150
130 #define PANFROSTDUMP_BUF_REG 0
131 #define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1)
132 #define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1)
133 #define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1)
134 struct panfrost_dump_object_header {
135   __u32 magic;
136   __u32 type;
137   __u32 file_size;
138   __u32 file_offset;
139   union {
140     struct {
141       __u64 jc;
142       __u32 gpu_id;
143       __u32 major;
144       __u32 minor;
145       __u64 nbos;
146     } reghdr;
147     struct {
148       __u32 valid;
149       __u64 iova;
150       __u32 data[2];
151     } bomap;
152     __u32 sizer[496];
153   };
154 };
155 struct panfrost_dump_registers {
156   __u32 reg;
157   __u32 value;
158 };
159 #ifdef __cplusplus
160 }
161 #endif
162 #endif
163