File indexing completed on 2026-09-28 09:17:34
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035 #ifndef _DRM_H_
0036 #define _DRM_H_
0037
0038 #if defined(__linux__)
0039
0040 #include <linux/types.h>
0041 #include <asm/ioctl.h>
0042 typedef unsigned int drm_handle_t;
0043
0044 #else
0045
0046 #include <stdint.h>
0047 #include <sys/ioccom.h>
0048 #include <sys/types.h>
0049 typedef int8_t __s8;
0050 typedef uint8_t __u8;
0051 typedef int16_t __s16;
0052 typedef uint16_t __u16;
0053 typedef int32_t __s32;
0054 typedef uint32_t __u32;
0055 typedef int64_t __s64;
0056 typedef uint64_t __u64;
0057 typedef size_t __kernel_size_t;
0058 typedef unsigned long drm_handle_t;
0059
0060 #endif
0061
0062 #if defined(__cplusplus)
0063 extern "C" {
0064 #endif
0065
0066 #define DRM_NAME "drm"
0067 #define DRM_MIN_ORDER 5
0068 #define DRM_MAX_ORDER 22
0069 #define DRM_RAM_PERCENT 10
0070
0071 #define _DRM_LOCK_HELD 0x80000000U
0072 #define _DRM_LOCK_CONT 0x40000000U
0073 #define _DRM_LOCK_IS_HELD(lock) ((lock) & _DRM_LOCK_HELD)
0074 #define _DRM_LOCK_IS_CONT(lock) ((lock) & _DRM_LOCK_CONT)
0075 #define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD|_DRM_LOCK_CONT))
0076
0077 typedef unsigned int drm_context_t;
0078 typedef unsigned int drm_drawable_t;
0079 typedef unsigned int drm_magic_t;
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090 struct drm_clip_rect {
0091 unsigned short x1;
0092 unsigned short y1;
0093 unsigned short x2;
0094 unsigned short y2;
0095 };
0096
0097
0098
0099
0100 struct drm_drawable_info {
0101 unsigned int num_rects;
0102 struct drm_clip_rect *rects;
0103 };
0104
0105
0106
0107
0108 struct drm_tex_region {
0109 unsigned char next;
0110 unsigned char prev;
0111 unsigned char in_use;
0112 unsigned char padding;
0113 unsigned int age;
0114 };
0115
0116
0117
0118
0119
0120
0121
0122
0123 struct drm_hw_lock {
0124 __volatile__ unsigned int lock;
0125 char padding[60];
0126 };
0127
0128
0129
0130
0131
0132
0133 struct drm_version {
0134 int version_major;
0135 int version_minor;
0136 int version_patchlevel;
0137 __kernel_size_t name_len;
0138 char *name;
0139 __kernel_size_t date_len;
0140 char *date;
0141 __kernel_size_t desc_len;
0142 char *desc;
0143 };
0144
0145
0146
0147
0148
0149
0150 struct drm_unique {
0151 __kernel_size_t unique_len;
0152 char *unique;
0153 };
0154
0155 struct drm_list {
0156 int count;
0157 struct drm_version *version;
0158 };
0159
0160 struct drm_block {
0161 int unused;
0162 };
0163
0164
0165
0166
0167
0168
0169 struct drm_control {
0170 enum {
0171 DRM_ADD_COMMAND,
0172 DRM_RM_COMMAND,
0173 DRM_INST_HANDLER,
0174 DRM_UNINST_HANDLER
0175 } func;
0176 int irq;
0177 };
0178
0179
0180
0181
0182 enum drm_map_type {
0183 _DRM_FRAME_BUFFER = 0,
0184 _DRM_REGISTERS = 1,
0185 _DRM_SHM = 2,
0186 _DRM_AGP = 3,
0187 _DRM_SCATTER_GATHER = 4,
0188 _DRM_CONSISTENT = 5
0189 };
0190
0191
0192
0193
0194 enum drm_map_flags {
0195 _DRM_RESTRICTED = 0x01,
0196 _DRM_READ_ONLY = 0x02,
0197 _DRM_LOCKED = 0x04,
0198 _DRM_KERNEL = 0x08,
0199 _DRM_WRITE_COMBINING = 0x10,
0200 _DRM_CONTAINS_LOCK = 0x20,
0201 _DRM_REMOVABLE = 0x40,
0202 _DRM_DRIVER = 0x80
0203 };
0204
0205 struct drm_ctx_priv_map {
0206 unsigned int ctx_id;
0207 void *handle;
0208 };
0209
0210
0211
0212
0213
0214
0215
0216 struct drm_map {
0217 unsigned long offset;
0218 unsigned long size;
0219 enum drm_map_type type;
0220 enum drm_map_flags flags;
0221 void *handle;
0222
0223 int mtrr;
0224
0225 };
0226
0227
0228
0229
0230 struct drm_client {
0231 int idx;
0232 int auth;
0233 unsigned long pid;
0234 unsigned long uid;
0235 unsigned long magic;
0236 unsigned long iocs;
0237 };
0238
0239 enum drm_stat_type {
0240 _DRM_STAT_LOCK,
0241 _DRM_STAT_OPENS,
0242 _DRM_STAT_CLOSES,
0243 _DRM_STAT_IOCTLS,
0244 _DRM_STAT_LOCKS,
0245 _DRM_STAT_UNLOCKS,
0246 _DRM_STAT_VALUE,
0247 _DRM_STAT_BYTE,
0248 _DRM_STAT_COUNT,
0249
0250 _DRM_STAT_IRQ,
0251 _DRM_STAT_PRIMARY,
0252 _DRM_STAT_SECONDARY,
0253 _DRM_STAT_DMA,
0254 _DRM_STAT_SPECIAL,
0255 _DRM_STAT_MISSED
0256
0257 };
0258
0259
0260
0261
0262 struct drm_stats {
0263 unsigned long count;
0264 struct {
0265 unsigned long value;
0266 enum drm_stat_type type;
0267 } data[15];
0268 };
0269
0270
0271
0272
0273 enum drm_lock_flags {
0274 _DRM_LOCK_READY = 0x01,
0275 _DRM_LOCK_QUIESCENT = 0x02,
0276 _DRM_LOCK_FLUSH = 0x04,
0277 _DRM_LOCK_FLUSH_ALL = 0x08,
0278
0279
0280
0281 _DRM_HALT_ALL_QUEUES = 0x10,
0282 _DRM_HALT_CUR_QUEUES = 0x20
0283 };
0284
0285
0286
0287
0288
0289
0290 struct drm_lock {
0291 int context;
0292 enum drm_lock_flags flags;
0293 };
0294
0295
0296
0297
0298
0299
0300
0301
0302
0303 enum drm_dma_flags {
0304
0305 _DRM_DMA_BLOCK = 0x01,
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315 _DRM_DMA_WHILE_LOCKED = 0x02,
0316 _DRM_DMA_PRIORITY = 0x04,
0317
0318
0319 _DRM_DMA_WAIT = 0x10,
0320 _DRM_DMA_SMALLER_OK = 0x20,
0321 _DRM_DMA_LARGER_OK = 0x40
0322 };
0323
0324
0325
0326
0327
0328
0329 struct drm_buf_desc {
0330 int count;
0331 int size;
0332 int low_mark;
0333 int high_mark;
0334 enum {
0335 _DRM_PAGE_ALIGN = 0x01,
0336 _DRM_AGP_BUFFER = 0x02,
0337 _DRM_SG_BUFFER = 0x04,
0338 _DRM_FB_BUFFER = 0x08,
0339 _DRM_PCI_BUFFER_RO = 0x10
0340 } flags;
0341 unsigned long agp_start;
0342
0343
0344
0345 };
0346
0347
0348
0349
0350 struct drm_buf_info {
0351 int count;
0352 struct drm_buf_desc *list;
0353 };
0354
0355
0356
0357
0358 struct drm_buf_free {
0359 int count;
0360 int *list;
0361 };
0362
0363
0364
0365
0366
0367
0368 struct drm_buf_pub {
0369 int idx;
0370 int total;
0371 int used;
0372 void *address;
0373 };
0374
0375
0376
0377
0378 struct drm_buf_map {
0379 int count;
0380 #ifdef __cplusplus
0381 void *virt;
0382 #else
0383 void *virtual;
0384 #endif
0385 struct drm_buf_pub *list;
0386 };
0387
0388
0389
0390
0391
0392
0393
0394
0395 struct drm_dma {
0396 int context;
0397 int send_count;
0398 int *send_indices;
0399 int *send_sizes;
0400 enum drm_dma_flags flags;
0401 int request_count;
0402 int request_size;
0403 int *request_indices;
0404 int *request_sizes;
0405 int granted_count;
0406 };
0407
0408 enum drm_ctx_flags {
0409 _DRM_CONTEXT_PRESERVED = 0x01,
0410 _DRM_CONTEXT_2DONLY = 0x02
0411 };
0412
0413
0414
0415
0416
0417
0418 struct drm_ctx {
0419 drm_context_t handle;
0420 enum drm_ctx_flags flags;
0421 };
0422
0423
0424
0425
0426 struct drm_ctx_res {
0427 int count;
0428 struct drm_ctx *contexts;
0429 };
0430
0431
0432
0433
0434 struct drm_draw {
0435 drm_drawable_t handle;
0436 };
0437
0438
0439
0440
0441 typedef enum {
0442 DRM_DRAWABLE_CLIPRECTS
0443 } drm_drawable_info_type_t;
0444
0445 struct drm_update_draw {
0446 drm_drawable_t handle;
0447 unsigned int type;
0448 unsigned int num;
0449 unsigned long long data;
0450 };
0451
0452
0453
0454
0455 struct drm_auth {
0456 drm_magic_t magic;
0457 };
0458
0459
0460
0461
0462
0463
0464 struct drm_irq_busid {
0465 int irq;
0466 int busnum;
0467 int devnum;
0468 int funcnum;
0469 };
0470
0471 enum drm_vblank_seq_type {
0472 _DRM_VBLANK_ABSOLUTE = 0x0,
0473 _DRM_VBLANK_RELATIVE = 0x1,
0474
0475 _DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e,
0476 _DRM_VBLANK_EVENT = 0x4000000,
0477 _DRM_VBLANK_FLIP = 0x8000000,
0478 _DRM_VBLANK_NEXTONMISS = 0x10000000,
0479 _DRM_VBLANK_SECONDARY = 0x20000000,
0480 _DRM_VBLANK_SIGNAL = 0x40000000
0481 };
0482 #define _DRM_VBLANK_HIGH_CRTC_SHIFT 1
0483
0484 #define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE)
0485 #define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_EVENT | _DRM_VBLANK_SIGNAL | \
0486 _DRM_VBLANK_SECONDARY | _DRM_VBLANK_NEXTONMISS)
0487
0488 struct drm_wait_vblank_request {
0489 enum drm_vblank_seq_type type;
0490 unsigned int sequence;
0491 unsigned long signal;
0492 };
0493
0494 struct drm_wait_vblank_reply {
0495 enum drm_vblank_seq_type type;
0496 unsigned int sequence;
0497 long tval_sec;
0498 long tval_usec;
0499 };
0500
0501
0502
0503
0504
0505
0506 union drm_wait_vblank {
0507 struct drm_wait_vblank_request request;
0508 struct drm_wait_vblank_reply reply;
0509 };
0510
0511 #define _DRM_PRE_MODESET 1
0512 #define _DRM_POST_MODESET 2
0513
0514
0515
0516
0517
0518
0519 struct drm_modeset_ctl {
0520 __u32 crtc;
0521 __u32 cmd;
0522 };
0523
0524
0525
0526
0527
0528
0529 struct drm_agp_mode {
0530 unsigned long mode;
0531 };
0532
0533
0534
0535
0536
0537
0538 struct drm_agp_buffer {
0539 unsigned long size;
0540 unsigned long handle;
0541 unsigned long type;
0542 unsigned long physical;
0543 };
0544
0545
0546
0547
0548
0549
0550 struct drm_agp_binding {
0551 unsigned long handle;
0552 unsigned long offset;
0553 };
0554
0555
0556
0557
0558
0559
0560
0561
0562 struct drm_agp_info {
0563 int agp_version_major;
0564 int agp_version_minor;
0565 unsigned long mode;
0566 unsigned long aperture_base;
0567 unsigned long aperture_size;
0568 unsigned long memory_allowed;
0569 unsigned long memory_used;
0570
0571
0572 unsigned short id_vendor;
0573 unsigned short id_device;
0574 };
0575
0576
0577
0578
0579 struct drm_scatter_gather {
0580 unsigned long size;
0581 unsigned long handle;
0582 };
0583
0584
0585
0586
0587 struct drm_set_version {
0588 int drm_di_major;
0589 int drm_di_minor;
0590 int drm_dd_major;
0591 int drm_dd_minor;
0592 };
0593
0594
0595
0596
0597
0598
0599
0600
0601 struct drm_gem_close {
0602 __u32 handle;
0603 __u32 pad;
0604 };
0605
0606
0607
0608
0609
0610
0611
0612
0613
0614
0615
0616 struct drm_gem_flink {
0617 __u32 handle;
0618 __u32 name;
0619 };
0620
0621
0622
0623
0624
0625
0626
0627
0628
0629
0630
0631
0632 struct drm_gem_open {
0633 __u32 name;
0634 __u32 handle;
0635 __u64 size;
0636 };
0637
0638
0639
0640
0641
0642
0643
0644
0645
0646
0647
0648 struct drm_gem_change_handle {
0649 __u32 handle;
0650 __u32 new_handle;
0651 };
0652
0653
0654
0655
0656
0657
0658
0659 #define DRM_CAP_DUMB_BUFFER 0x1
0660
0661
0662
0663
0664
0665
0666
0667
0668 #define DRM_CAP_VBLANK_HIGH_CRTC 0x2
0669
0670
0671
0672
0673
0674
0675
0676
0677
0678
0679
0680
0681
0682 #define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3
0683
0684
0685
0686
0687
0688
0689
0690
0691
0692
0693
0694 #define DRM_CAP_DUMB_PREFER_SHADOW 0x4
0695
0696
0697
0698
0699
0700
0701
0702
0703
0704
0705
0706
0707 #define DRM_CAP_PRIME 0x5
0708
0709
0710
0711
0712
0713
0714
0715
0716 #define DRM_PRIME_CAP_IMPORT 0x1
0717
0718
0719
0720
0721
0722
0723
0724
0725 #define DRM_PRIME_CAP_EXPORT 0x2
0726
0727
0728
0729
0730
0731
0732
0733
0734
0735
0736
0737 #define DRM_CAP_TIMESTAMP_MONOTONIC 0x6
0738
0739
0740
0741
0742
0743
0744 #define DRM_CAP_ASYNC_PAGE_FLIP 0x7
0745
0746
0747
0748
0749
0750
0751
0752
0753
0754
0755
0756 #define DRM_CAP_CURSOR_WIDTH 0x8
0757
0758
0759
0760
0761
0762 #define DRM_CAP_CURSOR_HEIGHT 0x9
0763
0764
0765
0766
0767
0768
0769 #define DRM_CAP_ADDFB2_MODIFIERS 0x10
0770
0771
0772
0773
0774
0775
0776
0777
0778 #define DRM_CAP_PAGE_FLIP_TARGET 0x11
0779
0780
0781
0782
0783
0784
0785
0786
0787
0788 #define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12
0789
0790
0791
0792
0793
0794 #define DRM_CAP_SYNCOBJ 0x13
0795
0796
0797
0798
0799
0800
0801 #define DRM_CAP_SYNCOBJ_TIMELINE 0x14
0802
0803
0804
0805
0806
0807
0808 #define DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP 0x15
0809
0810
0811 struct drm_get_cap {
0812 __u64 capability;
0813 __u64 value;
0814 };
0815
0816
0817
0818
0819
0820
0821
0822
0823
0824
0825
0826 #define DRM_CLIENT_CAP_STEREO_3D 1
0827
0828
0829
0830
0831
0832
0833
0834
0835
0836
0837 #define DRM_CLIENT_CAP_UNIVERSAL_PLANES 2
0838
0839
0840
0841
0842
0843
0844
0845
0846
0847
0848
0849
0850
0851
0852
0853 #define DRM_CLIENT_CAP_ATOMIC 3
0854
0855
0856
0857
0858
0859
0860
0861
0862
0863
0864 #define DRM_CLIENT_CAP_ASPECT_RATIO 4
0865
0866
0867
0868
0869
0870
0871
0872
0873
0874
0875
0876 #define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5
0877
0878
0879
0880
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894
0895
0896
0897
0898
0899
0900
0901 #define DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT 6
0902
0903
0904
0905
0906
0907
0908
0909
0910
0911
0912
0913
0914
0915
0916 #define DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE 7
0917
0918
0919 struct drm_set_client_cap {
0920 __u64 capability;
0921 __u64 value;
0922 };
0923
0924 #define DRM_RDWR O_RDWR
0925 #define DRM_CLOEXEC O_CLOEXEC
0926 struct drm_prime_handle {
0927 __u32 handle;
0928
0929
0930 __u32 flags;
0931
0932
0933 __s32 fd;
0934 };
0935
0936 struct drm_syncobj_create {
0937 __u32 handle;
0938 #define DRM_SYNCOBJ_CREATE_SIGNALED (1 << 0)
0939 __u32 flags;
0940 };
0941
0942 struct drm_syncobj_destroy {
0943 __u32 handle;
0944 __u32 pad;
0945 };
0946
0947 #define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE (1 << 0)
0948 #define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_TIMELINE (1 << 1)
0949 #define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE (1 << 0)
0950 #define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_TIMELINE (1 << 1)
0951 struct drm_syncobj_handle {
0952 __u32 handle;
0953 __u32 flags;
0954
0955 __s32 fd;
0956 __u32 pad;
0957
0958 __u64 point;
0959 };
0960
0961 struct drm_syncobj_transfer {
0962 __u32 src_handle;
0963 __u32 dst_handle;
0964 __u64 src_point;
0965 __u64 dst_point;
0966 __u32 flags;
0967 __u32 pad;
0968 };
0969
0970 #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0)
0971 #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1)
0972 #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2)
0973 #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE (1 << 3)
0974 struct drm_syncobj_wait {
0975 __u64 handles;
0976
0977 __s64 timeout_nsec;
0978 __u32 count_handles;
0979 __u32 flags;
0980 __u32 first_signaled;
0981 __u32 pad;
0982
0983
0984
0985
0986
0987
0988
0989 __u64 deadline_nsec;
0990 };
0991
0992 struct drm_syncobj_timeline_wait {
0993 __u64 handles;
0994
0995 __u64 points;
0996
0997 __s64 timeout_nsec;
0998 __u32 count_handles;
0999 __u32 flags;
1000 __u32 first_signaled;
1001 __u32 pad;
1002
1003
1004
1005
1006
1007
1008
1009 __u64 deadline_nsec;
1010 };
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025 struct drm_syncobj_eventfd {
1026 __u32 handle;
1027 __u32 flags;
1028 __u64 point;
1029 __s32 fd;
1030 __u32 pad;
1031 };
1032
1033
1034 struct drm_syncobj_array {
1035 __u64 handles;
1036 __u32 count_handles;
1037 __u32 pad;
1038 };
1039
1040 #define DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED (1 << 0)
1041 struct drm_syncobj_timeline_array {
1042 __u64 handles;
1043 __u64 points;
1044 __u32 count_handles;
1045 __u32 flags;
1046 };
1047
1048
1049
1050 struct drm_crtc_get_sequence {
1051 __u32 crtc_id;
1052 __u32 active;
1053 __u64 sequence;
1054 __s64 sequence_ns;
1055 };
1056
1057
1058
1059
1060
1061 #define DRM_CRTC_SEQUENCE_RELATIVE 0x00000001
1062 #define DRM_CRTC_SEQUENCE_NEXT_ON_MISS 0x00000002
1063
1064 struct drm_crtc_queue_sequence {
1065 __u32 crtc_id;
1066 __u32 flags;
1067 __u64 sequence;
1068 __u64 user_data;
1069 };
1070
1071 #define DRM_CLIENT_NAME_MAX_LEN 64
1072 struct drm_set_client_name {
1073 __u64 name_len;
1074 __u64 name;
1075 };
1076
1077
1078 #if defined(__cplusplus)
1079 }
1080 #endif
1081
1082 #include "drm_mode.h"
1083
1084 #if defined(__cplusplus)
1085 extern "C" {
1086 #endif
1087
1088 #define DRM_IOCTL_BASE 'd'
1089 #define DRM_IO(nr) _IO(DRM_IOCTL_BASE,nr)
1090 #define DRM_IOR(nr,type) _IOR(DRM_IOCTL_BASE,nr,type)
1091 #define DRM_IOW(nr,type) _IOW(DRM_IOCTL_BASE,nr,type)
1092 #define DRM_IOWR(nr,type) _IOWR(DRM_IOCTL_BASE,nr,type)
1093
1094 #define DRM_IOCTL_VERSION DRM_IOWR(0x00, struct drm_version)
1095 #define DRM_IOCTL_GET_UNIQUE DRM_IOWR(0x01, struct drm_unique)
1096 #define DRM_IOCTL_GET_MAGIC DRM_IOR( 0x02, struct drm_auth)
1097 #define DRM_IOCTL_IRQ_BUSID DRM_IOWR(0x03, struct drm_irq_busid)
1098 #define DRM_IOCTL_GET_MAP DRM_IOWR(0x04, struct drm_map)
1099 #define DRM_IOCTL_GET_CLIENT DRM_IOWR(0x05, struct drm_client)
1100 #define DRM_IOCTL_GET_STATS DRM_IOR( 0x06, struct drm_stats)
1101 #define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version)
1102 #define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl)
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116 #define DRM_IOCTL_GEM_CLOSE DRM_IOW (0x09, struct drm_gem_close)
1117 #define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
1118 #define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
1119 #define DRM_IOCTL_GET_CAP DRM_IOWR(0x0c, struct drm_get_cap)
1120 #define DRM_IOCTL_SET_CLIENT_CAP DRM_IOW( 0x0d, struct drm_set_client_cap)
1121
1122 #define DRM_IOCTL_SET_UNIQUE DRM_IOW( 0x10, struct drm_unique)
1123 #define DRM_IOCTL_AUTH_MAGIC DRM_IOW( 0x11, struct drm_auth)
1124 #define DRM_IOCTL_BLOCK DRM_IOWR(0x12, struct drm_block)
1125 #define DRM_IOCTL_UNBLOCK DRM_IOWR(0x13, struct drm_block)
1126 #define DRM_IOCTL_CONTROL DRM_IOW( 0x14, struct drm_control)
1127 #define DRM_IOCTL_ADD_MAP DRM_IOWR(0x15, struct drm_map)
1128 #define DRM_IOCTL_ADD_BUFS DRM_IOWR(0x16, struct drm_buf_desc)
1129 #define DRM_IOCTL_MARK_BUFS DRM_IOW( 0x17, struct drm_buf_desc)
1130 #define DRM_IOCTL_INFO_BUFS DRM_IOWR(0x18, struct drm_buf_info)
1131 #define DRM_IOCTL_MAP_BUFS DRM_IOWR(0x19, struct drm_buf_map)
1132 #define DRM_IOCTL_FREE_BUFS DRM_IOW( 0x1a, struct drm_buf_free)
1133
1134 #define DRM_IOCTL_RM_MAP DRM_IOW( 0x1b, struct drm_map)
1135
1136 #define DRM_IOCTL_SET_SAREA_CTX DRM_IOW( 0x1c, struct drm_ctx_priv_map)
1137 #define DRM_IOCTL_GET_SAREA_CTX DRM_IOWR(0x1d, struct drm_ctx_priv_map)
1138
1139 #define DRM_IOCTL_SET_MASTER DRM_IO(0x1e)
1140 #define DRM_IOCTL_DROP_MASTER DRM_IO(0x1f)
1141
1142 #define DRM_IOCTL_ADD_CTX DRM_IOWR(0x20, struct drm_ctx)
1143 #define DRM_IOCTL_RM_CTX DRM_IOWR(0x21, struct drm_ctx)
1144 #define DRM_IOCTL_MOD_CTX DRM_IOW( 0x22, struct drm_ctx)
1145 #define DRM_IOCTL_GET_CTX DRM_IOWR(0x23, struct drm_ctx)
1146 #define DRM_IOCTL_SWITCH_CTX DRM_IOW( 0x24, struct drm_ctx)
1147 #define DRM_IOCTL_NEW_CTX DRM_IOW( 0x25, struct drm_ctx)
1148 #define DRM_IOCTL_RES_CTX DRM_IOWR(0x26, struct drm_ctx_res)
1149 #define DRM_IOCTL_ADD_DRAW DRM_IOWR(0x27, struct drm_draw)
1150 #define DRM_IOCTL_RM_DRAW DRM_IOWR(0x28, struct drm_draw)
1151 #define DRM_IOCTL_DMA DRM_IOWR(0x29, struct drm_dma)
1152 #define DRM_IOCTL_LOCK DRM_IOW( 0x2a, struct drm_lock)
1153 #define DRM_IOCTL_UNLOCK DRM_IOW( 0x2b, struct drm_lock)
1154 #define DRM_IOCTL_FINISH DRM_IOW( 0x2c, struct drm_lock)
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168 #define DRM_IOCTL_PRIME_HANDLE_TO_FD DRM_IOWR(0x2d, struct drm_prime_handle)
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187 #define DRM_IOCTL_PRIME_FD_TO_HANDLE DRM_IOWR(0x2e, struct drm_prime_handle)
1188
1189 #define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30)
1190 #define DRM_IOCTL_AGP_RELEASE DRM_IO( 0x31)
1191 #define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x32, struct drm_agp_mode)
1192 #define DRM_IOCTL_AGP_INFO DRM_IOR( 0x33, struct drm_agp_info)
1193 #define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, struct drm_agp_buffer)
1194 #define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, struct drm_agp_buffer)
1195 #define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, struct drm_agp_binding)
1196 #define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, struct drm_agp_binding)
1197
1198 #define DRM_IOCTL_SG_ALLOC DRM_IOWR(0x38, struct drm_scatter_gather)
1199 #define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, struct drm_scatter_gather)
1200
1201 #define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, union drm_wait_vblank)
1202
1203 #define DRM_IOCTL_CRTC_GET_SEQUENCE DRM_IOWR(0x3b, struct drm_crtc_get_sequence)
1204 #define DRM_IOCTL_CRTC_QUEUE_SEQUENCE DRM_IOWR(0x3c, struct drm_crtc_queue_sequence)
1205
1206 #define DRM_IOCTL_UPDATE_DRAW DRM_IOW(0x3f, struct drm_update_draw)
1207
1208 #define DRM_IOCTL_MODE_GETRESOURCES DRM_IOWR(0xA0, struct drm_mode_card_res)
1209 #define DRM_IOCTL_MODE_GETCRTC DRM_IOWR(0xA1, struct drm_mode_crtc)
1210 #define DRM_IOCTL_MODE_SETCRTC DRM_IOWR(0xA2, struct drm_mode_crtc)
1211 #define DRM_IOCTL_MODE_CURSOR DRM_IOWR(0xA3, struct drm_mode_cursor)
1212 #define DRM_IOCTL_MODE_GETGAMMA DRM_IOWR(0xA4, struct drm_mode_crtc_lut)
1213 #define DRM_IOCTL_MODE_SETGAMMA DRM_IOWR(0xA5, struct drm_mode_crtc_lut)
1214 #define DRM_IOCTL_MODE_GETENCODER DRM_IOWR(0xA6, struct drm_mode_get_encoder)
1215 #define DRM_IOCTL_MODE_GETCONNECTOR DRM_IOWR(0xA7, struct drm_mode_get_connector)
1216 #define DRM_IOCTL_MODE_ATTACHMODE DRM_IOWR(0xA8, struct drm_mode_mode_cmd)
1217 #define DRM_IOCTL_MODE_DETACHMODE DRM_IOWR(0xA9, struct drm_mode_mode_cmd)
1218
1219 #define DRM_IOCTL_MODE_GETPROPERTY DRM_IOWR(0xAA, struct drm_mode_get_property)
1220 #define DRM_IOCTL_MODE_SETPROPERTY DRM_IOWR(0xAB, struct drm_mode_connector_set_property)
1221 #define DRM_IOCTL_MODE_GETPROPBLOB DRM_IOWR(0xAC, struct drm_mode_get_blob)
1222 #define DRM_IOCTL_MODE_GETFB DRM_IOWR(0xAD, struct drm_mode_fb_cmd)
1223 #define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234 #define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, unsigned int)
1235 #define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
1236 #define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258 #define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, struct drm_mode_create_dumb)
1259 #define DRM_IOCTL_MODE_MAP_DUMB DRM_IOWR(0xB3, struct drm_mode_map_dumb)
1260 #define DRM_IOCTL_MODE_DESTROY_DUMB DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
1261 #define DRM_IOCTL_MODE_GETPLANERESOURCES DRM_IOWR(0xB5, struct drm_mode_get_plane_res)
1262 #define DRM_IOCTL_MODE_GETPLANE DRM_IOWR(0xB6, struct drm_mode_get_plane)
1263 #define DRM_IOCTL_MODE_SETPLANE DRM_IOWR(0xB7, struct drm_mode_set_plane)
1264 #define DRM_IOCTL_MODE_ADDFB2 DRM_IOWR(0xB8, struct drm_mode_fb_cmd2)
1265 #define DRM_IOCTL_MODE_OBJ_GETPROPERTIES DRM_IOWR(0xB9, struct drm_mode_obj_get_properties)
1266 #define DRM_IOCTL_MODE_OBJ_SETPROPERTY DRM_IOWR(0xBA, struct drm_mode_obj_set_property)
1267 #define DRM_IOCTL_MODE_CURSOR2 DRM_IOWR(0xBB, struct drm_mode_cursor2)
1268 #define DRM_IOCTL_MODE_ATOMIC DRM_IOWR(0xBC, struct drm_mode_atomic)
1269 #define DRM_IOCTL_MODE_CREATEPROPBLOB DRM_IOWR(0xBD, struct drm_mode_create_blob)
1270 #define DRM_IOCTL_MODE_DESTROYPROPBLOB DRM_IOWR(0xBE, struct drm_mode_destroy_blob)
1271
1272 #define DRM_IOCTL_SYNCOBJ_CREATE DRM_IOWR(0xBF, struct drm_syncobj_create)
1273 #define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy)
1274 #define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle)
1275 #define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle)
1276 #define DRM_IOCTL_SYNCOBJ_WAIT DRM_IOWR(0xC3, struct drm_syncobj_wait)
1277 #define DRM_IOCTL_SYNCOBJ_RESET DRM_IOWR(0xC4, struct drm_syncobj_array)
1278 #define DRM_IOCTL_SYNCOBJ_SIGNAL DRM_IOWR(0xC5, struct drm_syncobj_array)
1279
1280 #define DRM_IOCTL_MODE_CREATE_LEASE DRM_IOWR(0xC6, struct drm_mode_create_lease)
1281 #define DRM_IOCTL_MODE_LIST_LESSEES DRM_IOWR(0xC7, struct drm_mode_list_lessees)
1282 #define DRM_IOCTL_MODE_GET_LEASE DRM_IOWR(0xC8, struct drm_mode_get_lease)
1283 #define DRM_IOCTL_MODE_REVOKE_LEASE DRM_IOWR(0xC9, struct drm_mode_revoke_lease)
1284
1285 #define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait)
1286 #define DRM_IOCTL_SYNCOBJ_QUERY DRM_IOWR(0xCB, struct drm_syncobj_timeline_array)
1287 #define DRM_IOCTL_SYNCOBJ_TRANSFER DRM_IOWR(0xCC, struct drm_syncobj_transfer)
1288 #define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCD, struct drm_syncobj_timeline_array)
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318 #define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
1319
1320 #define DRM_IOCTL_SYNCOBJ_EVENTFD DRM_IOWR(0xCF, struct drm_syncobj_eventfd)
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340 #define DRM_IOCTL_MODE_CLOSEFB DRM_IOWR(0xD0, struct drm_mode_closefb)
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350 #define DRM_IOCTL_SET_CLIENT_NAME DRM_IOWR(0xD1, struct drm_set_client_name)
1351
1352
1353
1354
1355
1356
1357
1358 #define DRM_IOCTL_GEM_CHANGE_HANDLE DRM_IOWR(0xD2, struct drm_gem_change_handle)
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368 #define DRM_COMMAND_BASE 0x40
1369 #define DRM_COMMAND_END 0xA0
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385 struct drm_event {
1386 __u32 type;
1387 __u32 length;
1388 };
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398 #define DRM_EVENT_VBLANK 0x01
1399
1400
1401
1402
1403
1404
1405
1406
1407 #define DRM_EVENT_FLIP_COMPLETE 0x02
1408
1409
1410
1411
1412
1413
1414
1415 #define DRM_EVENT_CRTC_SEQUENCE 0x03
1416
1417 struct drm_event_vblank {
1418 struct drm_event base;
1419 __u64 user_data;
1420 __u32 tv_sec;
1421 __u32 tv_usec;
1422 __u32 sequence;
1423 __u32 crtc_id;
1424 };
1425
1426
1427
1428
1429 struct drm_event_crtc_sequence {
1430 struct drm_event base;
1431 __u64 user_data;
1432 __s64 time_ns;
1433 __u64 sequence;
1434 };
1435
1436
1437 typedef struct drm_clip_rect drm_clip_rect_t;
1438 typedef struct drm_drawable_info drm_drawable_info_t;
1439 typedef struct drm_tex_region drm_tex_region_t;
1440 typedef struct drm_hw_lock drm_hw_lock_t;
1441 typedef struct drm_version drm_version_t;
1442 typedef struct drm_unique drm_unique_t;
1443 typedef struct drm_list drm_list_t;
1444 typedef struct drm_block drm_block_t;
1445 typedef struct drm_control drm_control_t;
1446 typedef enum drm_map_type drm_map_type_t;
1447 typedef enum drm_map_flags drm_map_flags_t;
1448 typedef struct drm_ctx_priv_map drm_ctx_priv_map_t;
1449 typedef struct drm_map drm_map_t;
1450 typedef struct drm_client drm_client_t;
1451 typedef enum drm_stat_type drm_stat_type_t;
1452 typedef struct drm_stats drm_stats_t;
1453 typedef enum drm_lock_flags drm_lock_flags_t;
1454 typedef struct drm_lock drm_lock_t;
1455 typedef enum drm_dma_flags drm_dma_flags_t;
1456 typedef struct drm_buf_desc drm_buf_desc_t;
1457 typedef struct drm_buf_info drm_buf_info_t;
1458 typedef struct drm_buf_free drm_buf_free_t;
1459 typedef struct drm_buf_pub drm_buf_pub_t;
1460 typedef struct drm_buf_map drm_buf_map_t;
1461 typedef struct drm_dma drm_dma_t;
1462 typedef union drm_wait_vblank drm_wait_vblank_t;
1463 typedef struct drm_agp_mode drm_agp_mode_t;
1464 typedef enum drm_ctx_flags drm_ctx_flags_t;
1465 typedef struct drm_ctx drm_ctx_t;
1466 typedef struct drm_ctx_res drm_ctx_res_t;
1467 typedef struct drm_draw drm_draw_t;
1468 typedef struct drm_update_draw drm_update_draw_t;
1469 typedef struct drm_auth drm_auth_t;
1470 typedef struct drm_irq_busid drm_irq_busid_t;
1471 typedef enum drm_vblank_seq_type drm_vblank_seq_type_t;
1472
1473 typedef struct drm_agp_buffer drm_agp_buffer_t;
1474 typedef struct drm_agp_binding drm_agp_binding_t;
1475 typedef struct drm_agp_info drm_agp_info_t;
1476 typedef struct drm_scatter_gather drm_scatter_gather_t;
1477 typedef struct drm_set_version drm_set_version_t;
1478
1479 #if defined(__cplusplus)
1480 }
1481 #endif
1482
1483 #endif