summaryrefslogtreecommitdiffstats
path: root/src/armada_drm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/armada_drm.h')
-rw-r--r--src/armada_drm.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/armada_drm.h b/src/armada_drm.h
new file mode 100644
index 0000000..c207564
--- /dev/null
+++ b/src/armada_drm.h
@@ -0,0 +1,73 @@
+/*
+ * Marvell Armada DRM-based driver
+ *
+ * Written by Russell King, 2012, derived in part from the
+ * Intel xorg X server driver.
+ */
+#ifndef DOVEFB_DRM_H
+#define DOVEFB_DRM_H
+
+#include "xf86.h"
+#include <xf86drm.h>
+#include <xf86drmMode.h>
+
+struct drm_armada_bo;
+
+struct armada_crtc_info {
+ struct armada_drm_info *drm;
+
+ drmModeModeInfo kmode;
+ drmModeCrtcPtr mode_crtc;
+
+ struct drm_armada_bo *cursor_bo;
+
+ uint32_t rotate_fb_id;
+};
+
+struct armada_drm_info {
+ int fd;
+ struct drm_armada_bufmgr *bufmgr;
+ drmEventContext event_context;
+
+ unsigned cpp;
+
+ struct drm_armada_bo *front_bo;
+ uint32_t fb_id;
+ drmModeResPtr mode_res;
+
+ Bool hw_cursor;
+ Bool accel;
+
+#ifdef HAVE_UDEV
+ struct udev_monitor *udev_monitor;
+ pointer *udev_handler;
+ dev_t drm_dev;
+#endif
+
+ CloseScreenProcPtr CloseScreen;
+ CreateScreenResourcesProcPtr CreateScreenResources;
+ OptionInfoPtr Options;
+};
+
+enum {
+ OPTION_HW_CURSOR,
+ OPTION_XV_ACCEL,
+ OPTION_USE_GPU,
+ OPTION_HOTPLUG,
+};
+
+#define GET_DRM_INFO(pScrn) ((struct armada_drm_info *)(pScrn)->driverPrivate)
+#define SET_DRM_INFO(pScrn, ptr) ((pScrn)->driverPrivate = (ptr))
+
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+
+#define mint(x,y) ({(void)(&x == &y); x < y ? x : y; })
+#define maxt(x,y) ({(void)(&x == &y); x < y ? y : x; })
+
+/* DRM core support */
+Bool armada_drm_init_screen(ScrnInfoPtr pScrn);
+
+/* DRM Xv support */
+Bool armada_drm_XvInit(ScrnInfoPtr pScrn);
+
+#endif