File indexing completed on 2025-01-18 10:01:49
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 struct drm_gem_close {
0596
0597 __u32 handle;
0598 __u32 pad;
0599 };
0600
0601
0602 struct drm_gem_flink {
0603
0604 __u32 handle;
0605
0606
0607 __u32 name;
0608 };
0609
0610
0611 struct drm_gem_open {
0612
0613 __u32 name;
0614
0615
0616 __u32 handle;
0617
0618
0619 __u64 size;
0620 };
0621
0622
0623
0624
0625
0626
0627
0628 #define DRM_CAP_DUMB_BUFFER 0x1
0629
0630
0631
0632
0633
0634
0635
0636
0637 #define DRM_CAP_VBLANK_HIGH_CRTC 0x2
0638
0639
0640
0641
0642
0643
0644
0645
0646
0647
0648
0649
0650
0651 #define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3
0652
0653
0654
0655
0656
0657
0658
0659
0660
0661
0662
0663 #define DRM_CAP_DUMB_PREFER_SHADOW 0x4
0664
0665
0666
0667
0668
0669
0670
0671
0672
0673
0674
0675
0676 #define DRM_CAP_PRIME 0x5
0677
0678
0679
0680
0681
0682
0683
0684
0685 #define DRM_PRIME_CAP_IMPORT 0x1
0686
0687
0688
0689
0690
0691
0692
0693
0694 #define DRM_PRIME_CAP_EXPORT 0x2
0695
0696
0697
0698
0699
0700
0701
0702
0703
0704
0705
0706 #define DRM_CAP_TIMESTAMP_MONOTONIC 0x6
0707
0708
0709
0710
0711
0712
0713 #define DRM_CAP_ASYNC_PAGE_FLIP 0x7
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723
0724
0725 #define DRM_CAP_CURSOR_WIDTH 0x8
0726
0727
0728
0729
0730
0731 #define DRM_CAP_CURSOR_HEIGHT 0x9
0732
0733
0734
0735
0736
0737
0738 #define DRM_CAP_ADDFB2_MODIFIERS 0x10
0739
0740
0741
0742
0743
0744
0745
0746
0747 #define DRM_CAP_PAGE_FLIP_TARGET 0x11
0748
0749
0750
0751
0752
0753
0754
0755
0756
0757 #define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12
0758
0759
0760
0761
0762
0763 #define DRM_CAP_SYNCOBJ 0x13
0764
0765
0766
0767
0768
0769
0770 #define DRM_CAP_SYNCOBJ_TIMELINE 0x14
0771
0772
0773
0774
0775
0776
0777 #define DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP 0x15
0778
0779
0780 struct drm_get_cap {
0781 __u64 capability;
0782 __u64 value;
0783 };
0784
0785
0786
0787
0788
0789
0790
0791
0792
0793
0794
0795 #define DRM_CLIENT_CAP_STEREO_3D 1
0796
0797
0798
0799
0800
0801
0802
0803
0804
0805
0806 #define DRM_CLIENT_CAP_UNIVERSAL_PLANES 2
0807
0808
0809
0810
0811
0812
0813
0814
0815
0816
0817
0818
0819
0820
0821
0822 #define DRM_CLIENT_CAP_ATOMIC 3
0823
0824
0825
0826
0827
0828
0829
0830
0831
0832
0833 #define DRM_CLIENT_CAP_ASPECT_RATIO 4
0834
0835
0836
0837
0838
0839
0840
0841
0842
0843
0844
0845 #define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5
0846
0847
0848
0849
0850
0851
0852
0853
0854
0855
0856
0857
0858
0859
0860
0861
0862
0863
0864
0865
0866
0867
0868
0869
0870 #define DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT 6
0871
0872
0873 struct drm_set_client_cap {
0874 __u64 capability;
0875 __u64 value;
0876 };
0877
0878 #define DRM_RDWR O_RDWR
0879 #define DRM_CLOEXEC O_CLOEXEC
0880 struct drm_prime_handle {
0881 __u32 handle;
0882
0883
0884 __u32 flags;
0885
0886
0887 __s32 fd;
0888 };
0889
0890 struct drm_syncobj_create {
0891 __u32 handle;
0892 #define DRM_SYNCOBJ_CREATE_SIGNALED (1 << 0)
0893 __u32 flags;
0894 };
0895
0896 struct drm_syncobj_destroy {
0897 __u32 handle;
0898 __u32 pad;
0899 };
0900
0901 #define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE (1 << 0)
0902 #define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE (1 << 0)
0903 struct drm_syncobj_handle {
0904 __u32 handle;
0905 __u32 flags;
0906
0907 __s32 fd;
0908 __u32 pad;
0909 };
0910
0911 struct drm_syncobj_transfer {
0912 __u32 src_handle;
0913 __u32 dst_handle;
0914 __u64 src_point;
0915 __u64 dst_point;
0916 __u32 flags;
0917 __u32 pad;
0918 };
0919
0920 #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0)
0921 #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1)
0922 #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2)
0923 #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE (1 << 3)
0924 struct drm_syncobj_wait {
0925 __u64 handles;
0926
0927 __s64 timeout_nsec;
0928 __u32 count_handles;
0929 __u32 flags;
0930 __u32 first_signaled;
0931 __u32 pad;
0932
0933
0934
0935
0936
0937
0938
0939 __u64 deadline_nsec;
0940 };
0941
0942 struct drm_syncobj_timeline_wait {
0943 __u64 handles;
0944
0945 __u64 points;
0946
0947 __s64 timeout_nsec;
0948 __u32 count_handles;
0949 __u32 flags;
0950 __u32 first_signaled;
0951 __u32 pad;
0952
0953
0954
0955
0956
0957
0958
0959 __u64 deadline_nsec;
0960 };
0961
0962
0963
0964
0965
0966
0967
0968
0969
0970
0971
0972
0973
0974
0975 struct drm_syncobj_eventfd {
0976 __u32 handle;
0977 __u32 flags;
0978 __u64 point;
0979 __s32 fd;
0980 __u32 pad;
0981 };
0982
0983
0984 struct drm_syncobj_array {
0985 __u64 handles;
0986 __u32 count_handles;
0987 __u32 pad;
0988 };
0989
0990 #define DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED (1 << 0)
0991 struct drm_syncobj_timeline_array {
0992 __u64 handles;
0993 __u64 points;
0994 __u32 count_handles;
0995 __u32 flags;
0996 };
0997
0998
0999
1000 struct drm_crtc_get_sequence {
1001 __u32 crtc_id;
1002 __u32 active;
1003 __u64 sequence;
1004 __s64 sequence_ns;
1005 };
1006
1007
1008
1009
1010
1011 #define DRM_CRTC_SEQUENCE_RELATIVE 0x00000001
1012 #define DRM_CRTC_SEQUENCE_NEXT_ON_MISS 0x00000002
1013
1014 struct drm_crtc_queue_sequence {
1015 __u32 crtc_id;
1016 __u32 flags;
1017 __u64 sequence;
1018 __u64 user_data;
1019 };
1020
1021 #if defined(__cplusplus)
1022 }
1023 #endif
1024
1025 #include "drm_mode.h"
1026
1027 #if defined(__cplusplus)
1028 extern "C" {
1029 #endif
1030
1031 #define DRM_IOCTL_BASE 'd'
1032 #define DRM_IO(nr) _IO(DRM_IOCTL_BASE,nr)
1033 #define DRM_IOR(nr,type) _IOR(DRM_IOCTL_BASE,nr,type)
1034 #define DRM_IOW(nr,type) _IOW(DRM_IOCTL_BASE,nr,type)
1035 #define DRM_IOWR(nr,type) _IOWR(DRM_IOCTL_BASE,nr,type)
1036
1037 #define DRM_IOCTL_VERSION DRM_IOWR(0x00, struct drm_version)
1038 #define DRM_IOCTL_GET_UNIQUE DRM_IOWR(0x01, struct drm_unique)
1039 #define DRM_IOCTL_GET_MAGIC DRM_IOR( 0x02, struct drm_auth)
1040 #define DRM_IOCTL_IRQ_BUSID DRM_IOWR(0x03, struct drm_irq_busid)
1041 #define DRM_IOCTL_GET_MAP DRM_IOWR(0x04, struct drm_map)
1042 #define DRM_IOCTL_GET_CLIENT DRM_IOWR(0x05, struct drm_client)
1043 #define DRM_IOCTL_GET_STATS DRM_IOR( 0x06, struct drm_stats)
1044 #define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version)
1045 #define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl)
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059 #define DRM_IOCTL_GEM_CLOSE DRM_IOW (0x09, struct drm_gem_close)
1060 #define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
1061 #define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
1062 #define DRM_IOCTL_GET_CAP DRM_IOWR(0x0c, struct drm_get_cap)
1063 #define DRM_IOCTL_SET_CLIENT_CAP DRM_IOW( 0x0d, struct drm_set_client_cap)
1064
1065 #define DRM_IOCTL_SET_UNIQUE DRM_IOW( 0x10, struct drm_unique)
1066 #define DRM_IOCTL_AUTH_MAGIC DRM_IOW( 0x11, struct drm_auth)
1067 #define DRM_IOCTL_BLOCK DRM_IOWR(0x12, struct drm_block)
1068 #define DRM_IOCTL_UNBLOCK DRM_IOWR(0x13, struct drm_block)
1069 #define DRM_IOCTL_CONTROL DRM_IOW( 0x14, struct drm_control)
1070 #define DRM_IOCTL_ADD_MAP DRM_IOWR(0x15, struct drm_map)
1071 #define DRM_IOCTL_ADD_BUFS DRM_IOWR(0x16, struct drm_buf_desc)
1072 #define DRM_IOCTL_MARK_BUFS DRM_IOW( 0x17, struct drm_buf_desc)
1073 #define DRM_IOCTL_INFO_BUFS DRM_IOWR(0x18, struct drm_buf_info)
1074 #define DRM_IOCTL_MAP_BUFS DRM_IOWR(0x19, struct drm_buf_map)
1075 #define DRM_IOCTL_FREE_BUFS DRM_IOW( 0x1a, struct drm_buf_free)
1076
1077 #define DRM_IOCTL_RM_MAP DRM_IOW( 0x1b, struct drm_map)
1078
1079 #define DRM_IOCTL_SET_SAREA_CTX DRM_IOW( 0x1c, struct drm_ctx_priv_map)
1080 #define DRM_IOCTL_GET_SAREA_CTX DRM_IOWR(0x1d, struct drm_ctx_priv_map)
1081
1082 #define DRM_IOCTL_SET_MASTER DRM_IO(0x1e)
1083 #define DRM_IOCTL_DROP_MASTER DRM_IO(0x1f)
1084
1085 #define DRM_IOCTL_ADD_CTX DRM_IOWR(0x20, struct drm_ctx)
1086 #define DRM_IOCTL_RM_CTX DRM_IOWR(0x21, struct drm_ctx)
1087 #define DRM_IOCTL_MOD_CTX DRM_IOW( 0x22, struct drm_ctx)
1088 #define DRM_IOCTL_GET_CTX DRM_IOWR(0x23, struct drm_ctx)
1089 #define DRM_IOCTL_SWITCH_CTX DRM_IOW( 0x24, struct drm_ctx)
1090 #define DRM_IOCTL_NEW_CTX DRM_IOW( 0x25, struct drm_ctx)
1091 #define DRM_IOCTL_RES_CTX DRM_IOWR(0x26, struct drm_ctx_res)
1092 #define DRM_IOCTL_ADD_DRAW DRM_IOWR(0x27, struct drm_draw)
1093 #define DRM_IOCTL_RM_DRAW DRM_IOWR(0x28, struct drm_draw)
1094 #define DRM_IOCTL_DMA DRM_IOWR(0x29, struct drm_dma)
1095 #define DRM_IOCTL_LOCK DRM_IOW( 0x2a, struct drm_lock)
1096 #define DRM_IOCTL_UNLOCK DRM_IOW( 0x2b, struct drm_lock)
1097 #define DRM_IOCTL_FINISH DRM_IOW( 0x2c, struct drm_lock)
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111 #define DRM_IOCTL_PRIME_HANDLE_TO_FD DRM_IOWR(0x2d, struct drm_prime_handle)
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130 #define DRM_IOCTL_PRIME_FD_TO_HANDLE DRM_IOWR(0x2e, struct drm_prime_handle)
1131
1132 #define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30)
1133 #define DRM_IOCTL_AGP_RELEASE DRM_IO( 0x31)
1134 #define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x32, struct drm_agp_mode)
1135 #define DRM_IOCTL_AGP_INFO DRM_IOR( 0x33, struct drm_agp_info)
1136 #define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, struct drm_agp_buffer)
1137 #define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, struct drm_agp_buffer)
1138 #define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, struct drm_agp_binding)
1139 #define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, struct drm_agp_binding)
1140
1141 #define DRM_IOCTL_SG_ALLOC DRM_IOWR(0x38, struct drm_scatter_gather)
1142 #define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, struct drm_scatter_gather)
1143
1144 #define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, union drm_wait_vblank)
1145
1146 #define DRM_IOCTL_CRTC_GET_SEQUENCE DRM_IOWR(0x3b, struct drm_crtc_get_sequence)
1147 #define DRM_IOCTL_CRTC_QUEUE_SEQUENCE DRM_IOWR(0x3c, struct drm_crtc_queue_sequence)
1148
1149 #define DRM_IOCTL_UPDATE_DRAW DRM_IOW(0x3f, struct drm_update_draw)
1150
1151 #define DRM_IOCTL_MODE_GETRESOURCES DRM_IOWR(0xA0, struct drm_mode_card_res)
1152 #define DRM_IOCTL_MODE_GETCRTC DRM_IOWR(0xA1, struct drm_mode_crtc)
1153 #define DRM_IOCTL_MODE_SETCRTC DRM_IOWR(0xA2, struct drm_mode_crtc)
1154 #define DRM_IOCTL_MODE_CURSOR DRM_IOWR(0xA3, struct drm_mode_cursor)
1155 #define DRM_IOCTL_MODE_GETGAMMA DRM_IOWR(0xA4, struct drm_mode_crtc_lut)
1156 #define DRM_IOCTL_MODE_SETGAMMA DRM_IOWR(0xA5, struct drm_mode_crtc_lut)
1157 #define DRM_IOCTL_MODE_GETENCODER DRM_IOWR(0xA6, struct drm_mode_get_encoder)
1158 #define DRM_IOCTL_MODE_GETCONNECTOR DRM_IOWR(0xA7, struct drm_mode_get_connector)
1159 #define DRM_IOCTL_MODE_ATTACHMODE DRM_IOWR(0xA8, struct drm_mode_mode_cmd)
1160 #define DRM_IOCTL_MODE_DETACHMODE DRM_IOWR(0xA9, struct drm_mode_mode_cmd)
1161
1162 #define DRM_IOCTL_MODE_GETPROPERTY DRM_IOWR(0xAA, struct drm_mode_get_property)
1163 #define DRM_IOCTL_MODE_SETPROPERTY DRM_IOWR(0xAB, struct drm_mode_connector_set_property)
1164 #define DRM_IOCTL_MODE_GETPROPBLOB DRM_IOWR(0xAC, struct drm_mode_get_blob)
1165 #define DRM_IOCTL_MODE_GETFB DRM_IOWR(0xAD, struct drm_mode_fb_cmd)
1166 #define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177 #define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, unsigned int)
1178 #define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
1179 #define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201 #define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, struct drm_mode_create_dumb)
1202 #define DRM_IOCTL_MODE_MAP_DUMB DRM_IOWR(0xB3, struct drm_mode_map_dumb)
1203 #define DRM_IOCTL_MODE_DESTROY_DUMB DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
1204 #define DRM_IOCTL_MODE_GETPLANERESOURCES DRM_IOWR(0xB5, struct drm_mode_get_plane_res)
1205 #define DRM_IOCTL_MODE_GETPLANE DRM_IOWR(0xB6, struct drm_mode_get_plane)
1206 #define DRM_IOCTL_MODE_SETPLANE DRM_IOWR(0xB7, struct drm_mode_set_plane)
1207 #define DRM_IOCTL_MODE_ADDFB2 DRM_IOWR(0xB8, struct drm_mode_fb_cmd2)
1208 #define DRM_IOCTL_MODE_OBJ_GETPROPERTIES DRM_IOWR(0xB9, struct drm_mode_obj_get_properties)
1209 #define DRM_IOCTL_MODE_OBJ_SETPROPERTY DRM_IOWR(0xBA, struct drm_mode_obj_set_property)
1210 #define DRM_IOCTL_MODE_CURSOR2 DRM_IOWR(0xBB, struct drm_mode_cursor2)
1211 #define DRM_IOCTL_MODE_ATOMIC DRM_IOWR(0xBC, struct drm_mode_atomic)
1212 #define DRM_IOCTL_MODE_CREATEPROPBLOB DRM_IOWR(0xBD, struct drm_mode_create_blob)
1213 #define DRM_IOCTL_MODE_DESTROYPROPBLOB DRM_IOWR(0xBE, struct drm_mode_destroy_blob)
1214
1215 #define DRM_IOCTL_SYNCOBJ_CREATE DRM_IOWR(0xBF, struct drm_syncobj_create)
1216 #define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy)
1217 #define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle)
1218 #define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle)
1219 #define DRM_IOCTL_SYNCOBJ_WAIT DRM_IOWR(0xC3, struct drm_syncobj_wait)
1220 #define DRM_IOCTL_SYNCOBJ_RESET DRM_IOWR(0xC4, struct drm_syncobj_array)
1221 #define DRM_IOCTL_SYNCOBJ_SIGNAL DRM_IOWR(0xC5, struct drm_syncobj_array)
1222
1223 #define DRM_IOCTL_MODE_CREATE_LEASE DRM_IOWR(0xC6, struct drm_mode_create_lease)
1224 #define DRM_IOCTL_MODE_LIST_LESSEES DRM_IOWR(0xC7, struct drm_mode_list_lessees)
1225 #define DRM_IOCTL_MODE_GET_LEASE DRM_IOWR(0xC8, struct drm_mode_get_lease)
1226 #define DRM_IOCTL_MODE_REVOKE_LEASE DRM_IOWR(0xC9, struct drm_mode_revoke_lease)
1227
1228 #define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait)
1229 #define DRM_IOCTL_SYNCOBJ_QUERY DRM_IOWR(0xCB, struct drm_syncobj_timeline_array)
1230 #define DRM_IOCTL_SYNCOBJ_TRANSFER DRM_IOWR(0xCC, struct drm_syncobj_transfer)
1231 #define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCD, struct drm_syncobj_timeline_array)
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261 #define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
1262
1263 #define DRM_IOCTL_SYNCOBJ_EVENTFD DRM_IOWR(0xCF, struct drm_syncobj_eventfd)
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283 #define DRM_IOCTL_MODE_CLOSEFB DRM_IOWR(0xD0, struct drm_mode_closefb)
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293 #define DRM_COMMAND_BASE 0x40
1294 #define DRM_COMMAND_END 0xA0
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310 struct drm_event {
1311 __u32 type;
1312 __u32 length;
1313 };
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323 #define DRM_EVENT_VBLANK 0x01
1324
1325
1326
1327
1328
1329
1330
1331
1332 #define DRM_EVENT_FLIP_COMPLETE 0x02
1333
1334
1335
1336
1337
1338
1339
1340 #define DRM_EVENT_CRTC_SEQUENCE 0x03
1341
1342 struct drm_event_vblank {
1343 struct drm_event base;
1344 __u64 user_data;
1345 __u32 tv_sec;
1346 __u32 tv_usec;
1347 __u32 sequence;
1348 __u32 crtc_id;
1349 };
1350
1351
1352
1353
1354 struct drm_event_crtc_sequence {
1355 struct drm_event base;
1356 __u64 user_data;
1357 __s64 time_ns;
1358 __u64 sequence;
1359 };
1360
1361
1362 typedef struct drm_clip_rect drm_clip_rect_t;
1363 typedef struct drm_drawable_info drm_drawable_info_t;
1364 typedef struct drm_tex_region drm_tex_region_t;
1365 typedef struct drm_hw_lock drm_hw_lock_t;
1366 typedef struct drm_version drm_version_t;
1367 typedef struct drm_unique drm_unique_t;
1368 typedef struct drm_list drm_list_t;
1369 typedef struct drm_block drm_block_t;
1370 typedef struct drm_control drm_control_t;
1371 typedef enum drm_map_type drm_map_type_t;
1372 typedef enum drm_map_flags drm_map_flags_t;
1373 typedef struct drm_ctx_priv_map drm_ctx_priv_map_t;
1374 typedef struct drm_map drm_map_t;
1375 typedef struct drm_client drm_client_t;
1376 typedef enum drm_stat_type drm_stat_type_t;
1377 typedef struct drm_stats drm_stats_t;
1378 typedef enum drm_lock_flags drm_lock_flags_t;
1379 typedef struct drm_lock drm_lock_t;
1380 typedef enum drm_dma_flags drm_dma_flags_t;
1381 typedef struct drm_buf_desc drm_buf_desc_t;
1382 typedef struct drm_buf_info drm_buf_info_t;
1383 typedef struct drm_buf_free drm_buf_free_t;
1384 typedef struct drm_buf_pub drm_buf_pub_t;
1385 typedef struct drm_buf_map drm_buf_map_t;
1386 typedef struct drm_dma drm_dma_t;
1387 typedef union drm_wait_vblank drm_wait_vblank_t;
1388 typedef struct drm_agp_mode drm_agp_mode_t;
1389 typedef enum drm_ctx_flags drm_ctx_flags_t;
1390 typedef struct drm_ctx drm_ctx_t;
1391 typedef struct drm_ctx_res drm_ctx_res_t;
1392 typedef struct drm_draw drm_draw_t;
1393 typedef struct drm_update_draw drm_update_draw_t;
1394 typedef struct drm_auth drm_auth_t;
1395 typedef struct drm_irq_busid drm_irq_busid_t;
1396 typedef enum drm_vblank_seq_type drm_vblank_seq_type_t;
1397
1398 typedef struct drm_agp_buffer drm_agp_buffer_t;
1399 typedef struct drm_agp_binding drm_agp_binding_t;
1400 typedef struct drm_agp_info drm_agp_info_t;
1401 typedef struct drm_scatter_gather drm_scatter_gather_t;
1402 typedef struct drm_set_version drm_set_version_t;
1403
1404 #if defined(__cplusplus)
1405 }
1406 #endif
1407
1408 #endif