diff options
author | Dave Airlie <airlied@redhat.com> | 2018-11-28 19:21:23 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-11-28 19:28:49 -0500 |
commit | 61647c77cb15354a329cbb36fe7a2253b36b51b1 (patch) | |
tree | 59d887f99bc4a2bdddc7cfc1d81794c2a4cdc759 /drivers/gpu/drm/virtio/virtgpu_display.c | |
parent | 1a31c26ed7b495f152e3103dc7c68e3307a39541 (diff) | |
parent | 08f73d668048ffa3ba6b1426b6ba0a89b16aefd7 (diff) |
Merge tag 'drm-misc-next-2018-11-28' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
drm-misc-next for v4.21:
Core Changes:
- Merge drm_info.c into drm_debugfs.c
- Complete the fake drm_crtc_commit's hw_done/flip_done sooner.
- Remove deprecated drm_obj_ref/unref functions. All drivers use get/put now.
- Decrease stack use of drm_gem_prime_mmap.
- Improve documentation for dumb callbacks.
Driver Changes:
- Add edid support to virtio.
- Wait on implicit fence in meson and sun4i.
- Add support for BGRX8888 to sun4i.
- Preparation patches for sun4i driver to start supporting linear and tiled YUV formats.
- Add support for HDMI 1.4 4k modes to meson, and support for VIC alternate timings.
- Drop custom dumb_map in vkms.
- Small fixes and cleanups to v3d.
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/151a3270-b1be-ed75-bd58-6b29d741f592@linux.intel.com
Diffstat (limited to 'drivers/gpu/drm/virtio/virtgpu_display.c')
-rw-r--r-- | drivers/gpu/drm/virtio/virtgpu_display.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c index 8f8fed471e34..b5580b11a063 100644 --- a/drivers/gpu/drm/virtio/virtgpu_display.c +++ b/drivers/gpu/drm/virtio/virtgpu_display.c | |||
@@ -169,6 +169,12 @@ static int virtio_gpu_conn_get_modes(struct drm_connector *connector) | |||
169 | struct drm_display_mode *mode = NULL; | 169 | struct drm_display_mode *mode = NULL; |
170 | int count, width, height; | 170 | int count, width, height; |
171 | 171 | ||
172 | if (output->edid) { | ||
173 | count = drm_add_edid_modes(connector, output->edid); | ||
174 | if (count) | ||
175 | return count; | ||
176 | } | ||
177 | |||
172 | width = le32_to_cpu(output->info.r.width); | 178 | width = le32_to_cpu(output->info.r.width); |
173 | height = le32_to_cpu(output->info.r.height); | 179 | height = le32_to_cpu(output->info.r.height); |
174 | count = drm_add_modes_noedid(connector, XRES_MAX, YRES_MAX); | 180 | count = drm_add_modes_noedid(connector, XRES_MAX, YRES_MAX); |
@@ -287,6 +293,8 @@ static int vgdev_output_init(struct virtio_gpu_device *vgdev, int index) | |||
287 | drm_connector_init(dev, connector, &virtio_gpu_connector_funcs, | 293 | drm_connector_init(dev, connector, &virtio_gpu_connector_funcs, |
288 | DRM_MODE_CONNECTOR_VIRTUAL); | 294 | DRM_MODE_CONNECTOR_VIRTUAL); |
289 | drm_connector_helper_add(connector, &virtio_gpu_conn_helper_funcs); | 295 | drm_connector_helper_add(connector, &virtio_gpu_conn_helper_funcs); |
296 | if (vgdev->has_edid) | ||
297 | drm_connector_attach_edid_property(connector); | ||
290 | 298 | ||
291 | drm_encoder_init(dev, encoder, &virtio_gpu_enc_funcs, | 299 | drm_encoder_init(dev, encoder, &virtio_gpu_enc_funcs, |
292 | DRM_MODE_ENCODER_VIRTUAL, NULL); | 300 | DRM_MODE_ENCODER_VIRTUAL, NULL); |
@@ -378,6 +386,10 @@ int virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev) | |||
378 | 386 | ||
379 | void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev) | 387 | void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev) |
380 | { | 388 | { |
389 | int i; | ||
390 | |||
391 | for (i = 0 ; i < vgdev->num_scanouts; ++i) | ||
392 | kfree(vgdev->outputs[i].edid); | ||
381 | virtio_gpu_fbdev_fini(vgdev); | 393 | virtio_gpu_fbdev_fini(vgdev); |
382 | drm_mode_config_cleanup(vgdev->ddev); | 394 | drm_mode_config_cleanup(vgdev->ddev); |
383 | } | 395 | } |