From 2850a2ddaa202ffe1fbf421a2f007453773e6e29 Mon Sep 17 00:00:00 2001
From: Mark Yao <mark.yao@rock-chips.com>
Date: Wed, 8 Oct 2014 14:38:23 +0800
Subject: [PATCH] CHROMIUM: libdrm: Add header for Rockchip DRM userspace
 interface

Add the header defining the interface exposed by Rockchip DRM.

Old-BUG=chrome-os-partner:32762
Old-BUG=b:26575005
Old-TEST=emerge-veyron libdrm; boot and display.

Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
(rebased from chromeos-2.4.70)
(stripped down to header alone)

BUG=b:112720782
Signed-off-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: Ic3b128a2a22833e5af6b6188c20890fdd9cd564a
---
 Makefile.sources           |  1 +
 include/drm/rockchip_drm.h | 73 ++++++++++++++++++++++++++++++++++++++
 meson.build                |  2 +-
 3 files changed, 75 insertions(+), 1 deletion(-)
 create mode 100644 include/drm/rockchip_drm.h

diff --git a/Makefile.sources b/Makefile.sources
index 55290fe9..9fa2e7db 100644
--- a/Makefile.sources
+++ b/Makefile.sources
@@ -30,6 +30,7 @@ LIBDRM_INCLUDE_H_FILES := \
 	include/drm/qxl_drm.h \
 	include/drm/r128_drm.h \
 	include/drm/radeon_drm.h \
+	include/drm/rockchip_drm.h \
 	include/drm/amdgpu_drm.h \
 	include/drm/savage_drm.h \
 	include/drm/sis_drm.h \
diff --git a/include/drm/rockchip_drm.h b/include/drm/rockchip_drm.h
new file mode 100644
index 00000000..13977d59
--- /dev/null
+++ b/include/drm/rockchip_drm.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) Fuzhou Rockchip Electronics Co.Ltd
+ * Authors:
+ *       Mark Yao <yzq@rock-chips.com>
+ *
+ * based on exynos_drm.h
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+#ifndef _ROCKCHIP_DRM_H_
+#define _ROCKCHIP_DRM_H_
+
+#include <stdint.h>
+#include "drm.h"
+
+/**
+ * User-desired buffer creation information structure.
+ *
+ * @size: user-desired memory allocation size.
+ *	- this size value would be page-aligned internally.
+ * @flags: user request for setting memory type or cache attributes.
+ * @handle: returned a handle to created gem object.
+ *	- this handle will be set by gem module of kernel side.
+ */
+struct drm_rockchip_gem_create {
+	uint64_t size;
+	uint32_t flags;
+	uint32_t handle;
+};
+
+/**
+ * A structure for getting buffer offset.
+ *
+ * @handle: a pointer to gem object created.
+ * @pad: just padding to be 64-bit aligned.
+ * @offset: relatived offset value of the memory region allocated.
+ *	- this value should be set by user.
+ */
+struct drm_rockchip_gem_map_off {
+	uint32_t handle;
+	uint32_t pad;
+	uint64_t offset;
+};
+
+#define DRM_ROCKCHIP_GEM_CREATE	0x00
+#define DRM_ROCKCHIP_GEM_MAP_OFFSET	0x01
+
+#define DRM_IOCTL_ROCKCHIP_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + \
+		DRM_ROCKCHIP_GEM_CREATE, struct drm_rockchip_gem_create)
+
+#define DRM_IOCTL_ROCKCHIP_GEM_MAP_OFFSET DRM_IOWR(DRM_COMMAND_BASE + \
+		DRM_ROCKCHIP_GEM_MAP_OFFSET, struct drm_rockchip_gem_map_off)
+
+#endif
diff --git a/meson.build b/meson.build
index fc02f552..e5734b27 100644
--- a/meson.build
+++ b/meson.build
@@ -313,7 +313,7 @@ install_headers(
   'include/drm/mach64_drm.h', 'include/drm/mga_drm.h',
   'include/drm/msm_drm.h', 'include/drm/nouveau_drm.h',
   'include/drm/qxl_drm.h', 'include/drm/r128_drm.h',
-  'include/drm/radeon_drm.h', 'include/drm/amdgpu_drm.h',
+  'include/drm/radeon_drm.h', 'include/drm/rockchip_drm.h', 'include/drm/amdgpu_drm.h',
   'include/drm/savage_drm.h', 'include/drm/sis_drm.h',
   'include/drm/tegra_drm.h', 'include/drm/vc4_drm.h',
   'include/drm/via_drm.h', 'include/drm/virtgpu_drm.h',
-- 
2.30.0.365.g02bc693789-goog

