Home | History | Annotate | Download | only in drm
      1 /*
      2  * Copyright (c) 2012-2013, NVIDIA CORPORATION.  All rights reserved.
      3  *
      4  * This program is free software; you can redistribute it and/or modify it
      5  * under the terms and conditions of the GNU General Public License,
      6  * version 2, as published by the Free Software Foundation.
      7  *
      8  * This program is distributed in the hope it will be useful, but WITHOUT
      9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     10  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
     11  * more details.
     12  *
     13  * You should have received a copy of the GNU General Public License
     14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     15  */
     16 
     17 #ifndef _UAPI_TEGRA_DRM_H_
     18 #define _UAPI_TEGRA_DRM_H_
     19 
     20 #include <drm/drm.h>
     21 
     22 #define DRM_TEGRA_GEM_CREATE_TILED     (1 << 0)
     23 #define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1)
     24 
     25 struct drm_tegra_gem_create {
     26 	__u64 size;
     27 	__u32 flags;
     28 	__u32 handle;
     29 };
     30 
     31 struct drm_tegra_gem_mmap {
     32 	__u32 handle;
     33 	__u32 offset;
     34 };
     35 
     36 struct drm_tegra_syncpt_read {
     37 	__u32 id;
     38 	__u32 value;
     39 };
     40 
     41 struct drm_tegra_syncpt_incr {
     42 	__u32 id;
     43 	__u32 pad;
     44 };
     45 
     46 struct drm_tegra_syncpt_wait {
     47 	__u32 id;
     48 	__u32 thresh;
     49 	__u32 timeout;
     50 	__u32 value;
     51 };
     52 
     53 #define DRM_TEGRA_NO_TIMEOUT	(0xffffffff)
     54 
     55 struct drm_tegra_open_channel {
     56 	__u32 client;
     57 	__u32 pad;
     58 	__u64 context;
     59 };
     60 
     61 struct drm_tegra_close_channel {
     62 	__u64 context;
     63 };
     64 
     65 struct drm_tegra_get_syncpt {
     66 	__u64 context;
     67 	__u32 index;
     68 	__u32 id;
     69 };
     70 
     71 struct drm_tegra_get_syncpt_base {
     72 	__u64 context;
     73 	__u32 syncpt;
     74 	__u32 id;
     75 };
     76 
     77 struct drm_tegra_syncpt {
     78 	__u32 id;
     79 	__u32 incrs;
     80 };
     81 
     82 struct drm_tegra_cmdbuf {
     83 	__u32 handle;
     84 	__u32 offset;
     85 	__u32 words;
     86 	__u32 pad;
     87 };
     88 
     89 struct drm_tegra_reloc {
     90 	struct {
     91 		__u32 handle;
     92 		__u32 offset;
     93 	} cmdbuf;
     94 	struct {
     95 		__u32 handle;
     96 		__u32 offset;
     97 	} target;
     98 	__u32 shift;
     99 	__u32 pad;
    100 };
    101 
    102 struct drm_tegra_waitchk {
    103 	__u32 handle;
    104 	__u32 offset;
    105 	__u32 syncpt;
    106 	__u32 thresh;
    107 };
    108 
    109 struct drm_tegra_submit {
    110 	__u64 context;
    111 	__u32 num_syncpts;
    112 	__u32 num_cmdbufs;
    113 	__u32 num_relocs;
    114 	__u32 num_waitchks;
    115 	__u32 waitchk_mask;
    116 	__u32 timeout;
    117 	__u32 pad;
    118 	__u64 syncpts;
    119 	__u64 cmdbufs;
    120 	__u64 relocs;
    121 	__u64 waitchks;
    122 	__u32 fence;		/* Return value */
    123 
    124 	__u32 reserved[5];	/* future expansion */
    125 };
    126 
    127 #define DRM_TEGRA_GEM_CREATE		0x00
    128 #define DRM_TEGRA_GEM_MMAP		0x01
    129 #define DRM_TEGRA_SYNCPT_READ		0x02
    130 #define DRM_TEGRA_SYNCPT_INCR		0x03
    131 #define DRM_TEGRA_SYNCPT_WAIT		0x04
    132 #define DRM_TEGRA_OPEN_CHANNEL		0x05
    133 #define DRM_TEGRA_CLOSE_CHANNEL		0x06
    134 #define DRM_TEGRA_GET_SYNCPT		0x07
    135 #define DRM_TEGRA_SUBMIT		0x08
    136 #define DRM_TEGRA_GET_SYNCPT_BASE	0x09
    137 
    138 #define DRM_IOCTL_TEGRA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_CREATE, struct drm_tegra_gem_create)
    139 #define DRM_IOCTL_TEGRA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_MMAP, struct drm_tegra_gem_mmap)
    140 #define DRM_IOCTL_TEGRA_SYNCPT_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_READ, struct drm_tegra_syncpt_read)
    141 #define DRM_IOCTL_TEGRA_SYNCPT_INCR DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_INCR, struct drm_tegra_syncpt_incr)
    142 #define DRM_IOCTL_TEGRA_SYNCPT_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_WAIT, struct drm_tegra_syncpt_wait)
    143 #define DRM_IOCTL_TEGRA_OPEN_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_OPEN_CHANNEL, struct drm_tegra_open_channel)
    144 #define DRM_IOCTL_TEGRA_CLOSE_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_CLOSE_CHANNEL, struct drm_tegra_open_channel)
    145 #define DRM_IOCTL_TEGRA_GET_SYNCPT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT, struct drm_tegra_get_syncpt)
    146 #define DRM_IOCTL_TEGRA_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SUBMIT, struct drm_tegra_submit)
    147 #define DRM_IOCTL_TEGRA_GET_SYNCPT_BASE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT_BASE, struct drm_tegra_get_syncpt_base)
    148 
    149 #endif
    150