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