diff options
| -rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_ioctl.c | 3 | ||||
| -rw-r--r-- | include/drm/drm_crtc.h | 3 | ||||
| -rw-r--r-- | include/uapi/drm/drm.h | 1 |
4 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 4f35be732b83..452591b67996 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
| @@ -3508,6 +3508,9 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, | |||
| 3508 | page_flip->reserved != 0) | 3508 | page_flip->reserved != 0) |
| 3509 | return -EINVAL; | 3509 | return -EINVAL; |
| 3510 | 3510 | ||
| 3511 | if ((page_flip->flags & DRM_MODE_PAGE_FLIP_ASYNC) && !dev->mode_config.async_page_flip) | ||
| 3512 | return -EINVAL; | ||
| 3513 | |||
| 3511 | obj = drm_mode_object_find(dev, page_flip->crtc_id, DRM_MODE_OBJECT_CRTC); | 3514 | obj = drm_mode_object_find(dev, page_flip->crtc_id, DRM_MODE_OBJECT_CRTC); |
| 3512 | if (!obj) | 3515 | if (!obj) |
| 3513 | return -EINVAL; | 3516 | return -EINVAL; |
diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index cffc7c0e1171..07247e2855a2 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c | |||
| @@ -293,6 +293,9 @@ int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_priv) | |||
| 293 | case DRM_CAP_TIMESTAMP_MONOTONIC: | 293 | case DRM_CAP_TIMESTAMP_MONOTONIC: |
| 294 | req->value = drm_timestamp_monotonic; | 294 | req->value = drm_timestamp_monotonic; |
| 295 | break; | 295 | break; |
| 296 | case DRM_CAP_ASYNC_PAGE_FLIP: | ||
| 297 | req->value = dev->mode_config.async_page_flip; | ||
| 298 | break; | ||
| 296 | default: | 299 | default: |
| 297 | return -EINVAL; | 300 | return -EINVAL; |
| 298 | } | 301 | } |
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 0c7fec5b8fef..78ca1512c73f 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
| @@ -842,6 +842,9 @@ struct drm_mode_config { | |||
| 842 | 842 | ||
| 843 | /* dumb ioctl parameters */ | 843 | /* dumb ioctl parameters */ |
| 844 | uint32_t preferred_depth, prefer_shadow; | 844 | uint32_t preferred_depth, prefer_shadow; |
| 845 | |||
| 846 | /* whether async page flip is supported or not */ | ||
| 847 | bool async_page_flip; | ||
| 845 | }; | 848 | }; |
| 846 | 849 | ||
| 847 | #define obj_to_crtc(x) container_of(x, struct drm_crtc, base) | 850 | #define obj_to_crtc(x) container_of(x, struct drm_crtc, base) |
diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h index 272580ca320f..ece867889cc7 100644 --- a/include/uapi/drm/drm.h +++ b/include/uapi/drm/drm.h | |||
| @@ -780,6 +780,7 @@ struct drm_event_vblank { | |||
| 780 | #define DRM_CAP_DUMB_PREFER_SHADOW 0x4 | 780 | #define DRM_CAP_DUMB_PREFER_SHADOW 0x4 |
| 781 | #define DRM_CAP_PRIME 0x5 | 781 | #define DRM_CAP_PRIME 0x5 |
| 782 | #define DRM_CAP_TIMESTAMP_MONOTONIC 0x6 | 782 | #define DRM_CAP_TIMESTAMP_MONOTONIC 0x6 |
| 783 | #define DRM_CAP_ASYNC_PAGE_FLIP 0x7 | ||
| 783 | 784 | ||
| 784 | #define DRM_PRIME_CAP_IMPORT 0x1 | 785 | #define DRM_PRIME_CAP_IMPORT 0x1 |
| 785 | #define DRM_PRIME_CAP_EXPORT 0x2 | 786 | #define DRM_PRIME_CAP_EXPORT 0x2 |
