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