diff options
| -rw-r--r-- | drivers/gpu/drm/qxl/qxl_display.c | 18 | ||||
| -rw-r--r-- | drivers/gpu/drm/qxl/qxl_drv.h | 2 |
2 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c index 61974cb9d205..5e827c29d194 100644 --- a/drivers/gpu/drm/qxl/qxl_display.c +++ b/drivers/gpu/drm/qxl/qxl_display.c | |||
| @@ -848,8 +848,21 @@ static const struct drm_encoder_funcs qxl_enc_funcs = { | |||
| 848 | .destroy = qxl_enc_destroy, | 848 | .destroy = qxl_enc_destroy, |
| 849 | }; | 849 | }; |
| 850 | 850 | ||
| 851 | static int qxl_mode_create_hotplug_mode_update_property(struct qxl_device *qdev) | ||
| 852 | { | ||
| 853 | if (qdev->hotplug_mode_update_property) | ||
| 854 | return 0; | ||
| 855 | |||
| 856 | qdev->hotplug_mode_update_property = | ||
| 857 | drm_property_create_range(qdev->ddev, DRM_MODE_PROP_IMMUTABLE, | ||
| 858 | "hotplug_mode_update", 0, 1); | ||
| 859 | |||
| 860 | return 0; | ||
| 861 | } | ||
| 862 | |||
| 851 | static int qdev_output_init(struct drm_device *dev, int num_output) | 863 | static int qdev_output_init(struct drm_device *dev, int num_output) |
| 852 | { | 864 | { |
| 865 | struct qxl_device *qdev = dev->dev_private; | ||
| 853 | struct qxl_output *qxl_output; | 866 | struct qxl_output *qxl_output; |
| 854 | struct drm_connector *connector; | 867 | struct drm_connector *connector; |
| 855 | struct drm_encoder *encoder; | 868 | struct drm_encoder *encoder; |
| @@ -876,6 +889,8 @@ static int qdev_output_init(struct drm_device *dev, int num_output) | |||
| 876 | drm_encoder_helper_add(encoder, &qxl_enc_helper_funcs); | 889 | drm_encoder_helper_add(encoder, &qxl_enc_helper_funcs); |
| 877 | drm_connector_helper_add(connector, &qxl_connector_helper_funcs); | 890 | drm_connector_helper_add(connector, &qxl_connector_helper_funcs); |
| 878 | 891 | ||
| 892 | drm_object_attach_property(&connector->base, | ||
| 893 | qdev->hotplug_mode_update_property, 0); | ||
| 879 | drm_sysfs_connector_add(connector); | 894 | drm_sysfs_connector_add(connector); |
| 880 | return 0; | 895 | return 0; |
| 881 | } | 896 | } |
| @@ -988,6 +1003,9 @@ int qxl_modeset_init(struct qxl_device *qdev) | |||
| 988 | qdev->ddev->mode_config.max_height = 8192; | 1003 | qdev->ddev->mode_config.max_height = 8192; |
| 989 | 1004 | ||
| 990 | qdev->ddev->mode_config.fb_base = qdev->vram_base; | 1005 | qdev->ddev->mode_config.fb_base = qdev->vram_base; |
| 1006 | |||
| 1007 | qxl_mode_create_hotplug_mode_update_property(qdev); | ||
| 1008 | |||
| 991 | for (i = 0 ; i < qxl_num_crtc; ++i) { | 1009 | for (i = 0 ; i < qxl_num_crtc; ++i) { |
| 992 | qdev_crtc_init(qdev->ddev, i); | 1010 | qdev_crtc_init(qdev->ddev, i); |
| 993 | qdev_output_init(qdev->ddev, i); | 1011 | qdev_output_init(qdev->ddev, i); |
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h index 41d22ed26060..7bda32f68d3b 100644 --- a/drivers/gpu/drm/qxl/qxl_drv.h +++ b/drivers/gpu/drm/qxl/qxl_drv.h | |||
| @@ -323,6 +323,8 @@ struct qxl_device { | |||
| 323 | struct work_struct gc_work; | 323 | struct work_struct gc_work; |
| 324 | 324 | ||
| 325 | struct work_struct fb_work; | 325 | struct work_struct fb_work; |
| 326 | |||
| 327 | struct drm_property *hotplug_mode_update_property; | ||
| 326 | }; | 328 | }; |
| 327 | 329 | ||
| 328 | /* forward declaration for QXL_INFO_IO */ | 330 | /* forward declaration for QXL_INFO_IO */ |
