blob: 66a46fca30e65d30e294a4aa64132f30e6ac3c50 [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
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 */
Christopher Ferrisaeddbcf2019-07-08 12:45:46 -07007#ifndef _PANFROST_DRM_H_
8#define _PANFROST_DRM_H_
9#include "drm.h"
10#ifdef __cplusplus
11extern "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
Christopher Ferrisb8a95e22019-10-02 18:29:20 -070019#define DRM_PANFROST_PERFCNT_ENABLE 0x06
20#define DRM_PANFROST_PERFCNT_DUMP 0x07
Christopher Ferris9584fa42019-12-09 15:36:13 -080021#define DRM_PANFROST_MADVISE 0x08
Christopher Ferrisaeddbcf2019-07-08 12:45:46 -070022#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)
Christopher Ferris9584fa42019-12-09 15:36:13 -080028#define DRM_IOCTL_PANFROST_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MADVISE, struct drm_panfrost_madvise)
Christopher Ferrisb8a95e22019-10-02 18:29:20 -070029#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)
Christopher Ferrisaeddbcf2019-07-08 12:45:46 -070031#define PANFROST_JD_REQ_FS (1 << 0)
32struct 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};
41struct drm_panfrost_wait_bo {
42 __u32 handle;
43 __u32 pad;
44 __s64 timeout_ns;
45};
Christopher Ferris9584fa42019-12-09 15:36:13 -080046#define PANFROST_BO_NOEXEC 1
47#define PANFROST_BO_HEAP 2
Christopher Ferrisaeddbcf2019-07-08 12:45:46 -070048struct drm_panfrost_create_bo {
49 __u32 size;
50 __u32 flags;
51 __u32 handle;
52 __u32 pad;
53 __u64 offset;
54};
55struct drm_panfrost_mmap_bo {
56 __u32 handle;
57 __u32 flags;
58 __u64 offset;
59};
60enum drm_panfrost_param {
61 DRM_PANFROST_PARAM_GPU_PROD_ID,
Christopher Ferris9584fa42019-12-09 15:36:13 -080062 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,
Christopher Ferris3a39c0b2021-09-02 00:03:38 +0000101 DRM_PANFROST_PARAM_AFBC_FEATURES,
Christopher Ferrisaeddbcf2019-07-08 12:45:46 -0700102};
103struct drm_panfrost_get_param {
104 __u32 param;
105 __u32 pad;
106 __u64 value;
107};
108struct drm_panfrost_get_bo_offset {
109 __u32 handle;
110 __u32 pad;
111 __u64 offset;
112};
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700113struct drm_panfrost_perfcnt_enable {
114 __u32 enable;
115 __u32 counterset;
116};
117struct drm_panfrost_perfcnt_dump {
118 __u64 buf_ptr;
119};
Christopher Ferris9584fa42019-12-09 15:36:13 -0800120#define PANFROST_MADV_WILLNEED 0
121#define PANFROST_MADV_DONTNEED 1
122struct drm_panfrost_madvise {
123 __u32 handle;
124 __u32 madv;
125 __u32 retained;
126};
Christopher Ferris6cd53a52022-12-12 23:39:16 +0000127#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)
134struct 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};
155struct panfrost_dump_registers {
156 __u32 reg;
157 __u32 value;
158};
Christopher Ferrisaeddbcf2019-07-08 12:45:46 -0700159#ifdef __cplusplus
160}
161#endif
162#endif