diff options
Diffstat (limited to 'dove_ioctl.h')
-rw-r--r-- | dove_ioctl.h | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/dove_ioctl.h b/dove_ioctl.h new file mode 100644 index 0000000..51997c2 --- /dev/null +++ b/dove_ioctl.h @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2012 Russell King + * With inspiration from the i915 driver + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +#ifndef DRM_DOVE_IOCTL_H +#define DRM_DOVE_IOCTL_H + +#define DRM_DOVE_GEM_CREATE 0x00 +#define DRM_DOVE_GEM_CREATE_PHYS 0x01 +#define DRM_DOVE_GEM_MMAP 0x02 +#define DRM_DOVE_GEM_PWRITE 0x03 +#define DRM_DOVE_GEM_PROP 0x04 +#define DRM_DOVE_GEM_CACHE 0x05 +#define DRM_DOVE_OVERLAY_PUT_IMAGE 0x06 +#define DRM_DOVE_OVERLAY_ATTRS 0x07 + +#define DOVE_IOCTL(dir,name,str) \ + DRM_##dir(DRM_COMMAND_BASE + DRM_DOVE_##name, struct drm_dove_##str) + +struct drm_dove_gem_create { + uint32_t height; + uint32_t width; + uint32_t bpp; + uint32_t handle; + uint32_t pitch; + uint32_t size; +}; +#define DRM_IOCTL_DOVE_GEM_CREATE \ + DOVE_IOCTL(IOWR, GEM_CREATE, gem_create) + +struct drm_dove_gem_create_phys { + uint32_t size; + uint32_t handle; + uint64_t phys; +}; +#define DRM_IOCTL_DOVE_GEM_CREATE_PHYS \ + DOVE_IOCTL(IOWR, GEM_CREATE_PHYS, gem_create_phys) + +struct drm_dove_gem_mmap { + uint32_t handle; + uint32_t pad; + uint64_t offset; + uint64_t size; + uint64_t addr; +}; +#define DRM_IOCTL_DOVE_GEM_MMAP \ + DOVE_IOCTL(IOWR, GEM_MMAP, gem_mmap) + +struct drm_dove_gem_pwrite { + uint32_t handle; + uint32_t offset; + uint32_t size; + uint64_t ptr; +}; +#define DRM_IOCTL_DOVE_GEM_PWRITE \ + DOVE_IOCTL(IOW, GEM_PWRITE, gem_pwrite) + +struct drm_dove_gem_prop { + uint64_t phys; + uint32_t handle; +}; +#define DRM_IOCTL_DOVE_GEM_PROP \ + DOVE_IOCTL(IOWR, GEM_PROP, gem_prop) + +struct drm_dove_gem_cache { + uint64_t ptr; + uint32_t handle; + uint32_t size; + uint32_t op; +}; +#define DRM_IOCTL_DOVE_GEM_CACHE \ + DOVE_IOCTL(IOW, GEM_CACHE, gem_cache) + +/* Same as Intel I915 */ +struct drm_dove_overlay_put_image { + uint32_t flags; +#define DOVE_OVERLAY_TYPE_MASK 0x000000ff +#define DOVE_OVERLAY_YUV_PLANAR 0x00000001 +#define DOVE_OVERLAY_YUV_PACKED 0x00000002 +#define DOVE_OVERLAY_RGB 0x00000003 +#define DOVE_OVERLAY_DEPTH_MASK 0x0000ff00 +#define DOVE_OVERLAY_RGB24 0x00001000 +#define DOVE_OVERLAY_RGB16 0x00002000 +#define DOVE_OVERLAY_RGB15 0x00003000 +#define DOVE_OVERLAY_YUV422 0x00000100 +#define DOVE_OVERLAY_YUV411 0x00000200 +#define DOVE_OVERLAY_YUV420 0x00000300 +#define DOVE_OVERLAY_YUV410 0x00000400 +#define DOVE_OVERLAY_SWAP_MASK 0x00ff0000 +#define DOVE_OVERLAY_NO_SWAP 0x00000000 +#define DOVE_OVERLAY_UV_SWAP 0x00010000 +#define DOVE_OVERLAY_Y_SWAP 0x00020000 +#define DOVE_OVERLAY_Y_AND_UV_SWAP 0x00030000 +#define DOVE_OVERLAY_FLAGS_MASK 0xff000000 +#define DOVE_OVERLAY_ENABLE 0x01000000 + uint32_t bo_handle; + uint16_t stride_Y; + uint16_t stride_UV; + uint32_t offset_Y; + uint32_t offset_U; + uint32_t offset_V; + uint16_t src_width; + uint16_t src_height; + uint16_t src_scan_width; + uint16_t src_scan_height; + uint32_t crtc_id; + uint16_t dst_x; + uint16_t dst_y; + uint16_t dst_width; + uint16_t dst_height; +}; +#define DRM_IOCTL_DOVE_OVERLAY_PUT_IMAGE \ + DOVE_IOCTL(IOW, OVERLAY_PUT_IMAGE, overlay_put_image) + +/* Same as Intel I915 */ +struct drm_dove_overlay_attrs { + uint32_t flags; +#define DOVE_OVERLAY_UPDATE_ATTRS (1<<0) +#define DOVE_OVERLAY_UPDATE_GAMMA (1<<1) + uint32_t color_key; + int32_t brightness; + uint32_t contrast; + uint32_t saturation; + uint32_t gamma0; + uint32_t gamma1; + uint32_t gamma2; + uint32_t gamma3; + uint32_t gamma4; + uint32_t gamma5; +}; +#define DRM_IOCTL_DOVE_OVERLAY_ATTRS \ + DOVE_IOCTL(IOWR, OVERLAY_ATTRS, overlay_attrs) + +#endif |