summaryrefslogtreecommitdiff
path: root/shared-core
diff options
context:
space:
mode:
authorJakob Bornecrantz <jakob@tungstengraphics.com>2008-01-28 03:12:29 +0100
committerJakob Bornecrantz <jakob@tungstengraphics.com>2008-01-28 03:14:56 +0100
commita2254c5a9670a3e865f0eb5acd46e905c9b146ce (patch)
tree080e144b12585dc3dd4c7e3cae63bb3dbe004486 /shared-core
parent98361cf28c62530e34758b27aa1eea805269e0e5 (diff)
Added cursor support
Diffstat (limited to 'shared-core')
-rw-r--r--shared-core/drm.h28
-rw-r--r--shared-core/i915_drv.h1
-rw-r--r--shared-core/i915_init.c5
3 files changed, 34 insertions, 0 deletions
diff --git a/shared-core/drm.h b/shared-core/drm.h
index 7aea3033..209a8db0 100644
--- a/shared-core/drm.h
+++ b/shared-core/drm.h
@@ -1084,6 +1084,33 @@ struct drm_mode_mode_cmd {
struct drm_mode_modeinfo mode;
};
+#define DRM_MODE_CURSOR_BO 0x01
+#define DRM_MODE_CURSOR_MOVE 0x02
+
+/*
+ * depending on the value in flags diffrent members are used.
+ *
+ * CURSOR_BO uses
+ * crtc
+ * width
+ * height
+ * handle - if 0 turns the cursor of
+ *
+ * CURSOR_MOVE uses
+ * crtc
+ * x
+ * y
+ */
+struct drm_mode_cursor {
+ unsigned int flags;
+ unsigned int crtc;
+ int x;
+ int y;
+ uint32_t width;
+ uint32_t height;
+ unsigned int handle;
+};
+
/**
* \name Ioctls Definitions
*/
@@ -1190,6 +1217,7 @@ struct drm_mode_mode_cmd {
#define DRM_IOCTL_MODE_DETACHMODE DRM_IOWR(0xAA, struct drm_mode_mode_cmd)
#define DRM_IOCTL_MODE_GETPROPERTY DRM_IOWR(0xAB, struct drm_mode_get_property)
+#define DRM_IOCTL_MODE_CURSOR DRM_IOWR(0xAC, struct drm_mode_cursor)
/*@}*/
diff --git a/shared-core/i915_drv.h b/shared-core/i915_drv.h
index 49e23ac3..ea89bc4c 100644
--- a/shared-core/i915_drv.h
+++ b/shared-core/i915_drv.h
@@ -147,6 +147,7 @@ struct drm_i915_private {
void *agp_iomap;
unsigned int max_validate_buffers;
struct mutex cmdbuf_mutex;
+ size_t stolen_base;
#endif
DRM_SPINTYPE swaps_lock;
diff --git a/shared-core/i915_init.c b/shared-core/i915_init.c
index 3b271b17..792c40bb 100644
--- a/shared-core/i915_init.c
+++ b/shared-core/i915_init.c
@@ -132,6 +132,11 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
dev->types[9] = _DRM_STAT_DMA;
if (IS_I9XX(dev)) {
+ pci_read_config_dword(dev->pdev, 0x5C, &dev_priv->stolen_base);
+ DRM_DEBUG("stolen base %p\n", (void*)dev_priv->stolen_base);
+ }
+
+ if (IS_I9XX(dev)) {
dev_priv->mmiobase = drm_get_resource_start(dev, 0);
dev_priv->mmiolen = drm_get_resource_len(dev, 0);
dev->mode_config.fb_base =