summaryrefslogtreecommitdiff
path: root/sys/dev/fdt/rkdrm.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/fdt/rkdrm.h')
-rw-r--r--sys/dev/fdt/rkdrm.h109
1 files changed, 109 insertions, 0 deletions
diff --git a/sys/dev/fdt/rkdrm.h b/sys/dev/fdt/rkdrm.h
new file mode 100644
index 00000000000..a84216b5013
--- /dev/null
+++ b/sys/dev/fdt/rkdrm.h
@@ -0,0 +1,109 @@
+/* $OpenBSD: rkdrm.h,v 1.1 2020/02/21 15:44:54 patrick Exp $ */
+/* $NetBSD: rk_drm.h,v 1.1 2019/11/09 23:30:14 jmcneill Exp $ */
+/*-
+ * Copyright (c) 2019 Jared D. McNeill <jmcneill@invisible.ca>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _ARM_RK_DRM_H
+#define _ARM_RK_DRM_H
+
+#include <dev/wscons/wsconsio.h>
+#include <dev/wscons/wsdisplayvar.h>
+#include <dev/rasops/rasops.h>
+
+#include <drm/drm_fb_helper.h>
+#include <drm/drm_gem_cma_helper.h>
+
+#define DRIVER_AUTHOR "Jared McNeill"
+
+#define DRIVER_NAME "rk"
+#define DRIVER_DESC "Rockchip Display Subsystem"
+#define DRIVER_DATE "20191109"
+
+#define DRIVER_MAJOR 1
+#define DRIVER_MINOR 0
+#define DRIVER_PATCHLEVEL 0
+
+struct rk_framebuffer;
+
+#define RK_DRM_MAX_CRTC 2
+
+struct rkdrm_vblank {
+ void *priv;
+ void (*enable_vblank)(void *);
+ void (*disable_vblank)(void *);
+ uint32_t (*get_vblank_counter)(void *);
+};
+
+struct rkdrm_softc {
+ struct device sc_dev;
+ struct drm_device sc_ddev;
+
+ bus_space_tag_t sc_iot;
+ bus_dma_tag_t sc_dmat;
+
+ int sc_node;
+
+ struct rkdrm_vblank sc_vbl[RK_DRM_MAX_CRTC];
+
+ void (*switchcb)(void *, int, int);
+ void *switchcbarg;
+ void *switchcookie;
+ struct task switchtask;
+ struct rasops_info ro;
+ int console;
+ int primary;
+
+ struct drm_fb_helper helper;
+};
+
+struct rkdrm_framebuffer {
+ struct drm_framebuffer base;
+ struct drm_gem_cma_object *obj;
+};
+
+struct rkdrm_ports {
+ int phandle;
+ struct drm_device *ddev;
+ TAILQ_ENTRY(rkdrm_ports) entries;
+};
+
+struct rkdrm_fbdev {
+ struct drm_fb_helper helper;
+};
+
+struct rkdrmfb_attach_args {
+ struct drm_device *sfa_drm_dev;
+ struct drm_fb_helper *sfa_fb_helper;
+ struct drm_fb_helper_surface_size sfa_fb_sizes;
+ bus_space_tag_t sfa_fb_iot;
+ bus_dma_tag_t sfa_fb_dmat;
+ uint32_t sfa_fb_linebytes;
+};
+
+#define rkdrm_private(ddev) (ddev)->dev_private
+#define to_rkdrm_framebuffer(x) container_of(x, struct rkdrm_framebuffer, base)
+
+#endif /* _ARM_RK_DRM_H */