diff options
author | Ilija Hadzic <ihadzic@research.bell-labs.com> | 2011-03-18 17:58:04 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-03-20 19:25:54 -0400 |
commit | 19b01b5fbf0b78930b3b06ee6080539c17b5d1fd (patch) | |
tree | b2cfeb6aeae49bc4061ce8923a63b6b8bd4d6e1d /include | |
parent | b74ad5ae14def5e81ad0be3dddb96e485b861b1b (diff) |
drm/kernel: vblank wait on crtc > 1
Below is a patch against drm-next branch of 2.6.38-rc8+ kernel that adds
the capability to wait on vblank events for CRTCs that are greater than 1
and thus cannot be represented with primary/secondary flags in the legacy
interface. It was discussed on the dri-devel list in these two threads:
http://lists.freedesktop.org/archives/dri-devel/2011-March/009009.html
http://lists.freedesktop.org/archives/dri-devel/2011-March/009025.html
This patch extends the interface to drm_wait_vblank ioctl so that crtc>1
can be represented. It also adds a new capability to drm_getcap ioctl so
that the user space can check whether the new interface to drm_wait_vblank
is supported (and fall back to the legacy interface if not)
Signed-off-by: Ilija Hadzic <ihadzic@research.bell-labs.com>
Reviewed-by: Mario Kleiner <mario.kleiner at tuebingen.mpg.de>
Acked-by: Mario Kleiner <mario.kleiner at tuebingen.mpg.de>
Reviewed-by: Alex Deucher <alexdeucher@gmail.com>
Tested-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/drm/drm.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/drm/drm.h b/include/drm/drm.h index 9ac431396176..99cd07433fab 100644 --- a/include/drm/drm.h +++ b/include/drm/drm.h | |||
@@ -469,6 +469,8 @@ enum drm_vblank_seq_type { | |||
469 | _DRM_VBLANK_SECONDARY = 0x20000000, /**< Secondary display controller */ | 469 | _DRM_VBLANK_SECONDARY = 0x20000000, /**< Secondary display controller */ |
470 | _DRM_VBLANK_SIGNAL = 0x40000000 /**< Send signal instead of blocking, unsupported */ | 470 | _DRM_VBLANK_SIGNAL = 0x40000000 /**< Send signal instead of blocking, unsupported */ |
471 | }; | 471 | }; |
472 | #define _DRM_VBLANK_HIGH_CRTC_SHIFT 16 | ||
473 | #define _DRM_VBLANK_HIGH_CRTC_MASK 0x001F0000 | ||
472 | 474 | ||
473 | #define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE) | 475 | #define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE) |
474 | #define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_EVENT | _DRM_VBLANK_SIGNAL | \ | 476 | #define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_EVENT | _DRM_VBLANK_SIGNAL | \ |
@@ -753,6 +755,7 @@ struct drm_event_vblank { | |||
753 | }; | 755 | }; |
754 | 756 | ||
755 | #define DRM_CAP_DUMB_BUFFER 0x1 | 757 | #define DRM_CAP_DUMB_BUFFER 0x1 |
758 | #define DRM_CAP_HIGH_CRTC 0x2 | ||
756 | 759 | ||
757 | /* typedef area */ | 760 | /* typedef area */ |
758 | #ifndef __KERNEL__ | 761 | #ifndef __KERNEL__ |