diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 14 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dsi.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dvo.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_hdmi.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_tv.c | 1 |
11 files changed, 29 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 49889003feb2..d33199452c11 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -2546,6 +2546,7 @@ extern void intel_modeset_suspend_hw(struct drm_device *dev); | |||
2546 | extern void intel_modeset_init(struct drm_device *dev); | 2546 | extern void intel_modeset_init(struct drm_device *dev); |
2547 | extern void intel_modeset_gem_init(struct drm_device *dev); | 2547 | extern void intel_modeset_gem_init(struct drm_device *dev); |
2548 | extern void intel_modeset_cleanup(struct drm_device *dev); | 2548 | extern void intel_modeset_cleanup(struct drm_device *dev); |
2549 | extern void intel_connector_unregister(struct intel_connector *); | ||
2549 | extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state); | 2550 | extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state); |
2550 | extern void intel_modeset_setup_hw_state(struct drm_device *dev, | 2551 | extern void intel_modeset_setup_hw_state(struct drm_device *dev, |
2551 | bool force_restore); | 2552 | bool force_restore); |
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index 5b444a4b625c..9864aa1ccbe8 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c | |||
@@ -833,6 +833,7 @@ void intel_crt_init(struct drm_device *dev) | |||
833 | crt->base.get_hw_state = intel_crt_get_hw_state; | 833 | crt->base.get_hw_state = intel_crt_get_hw_state; |
834 | } | 834 | } |
835 | intel_connector->get_hw_state = intel_connector_get_hw_state; | 835 | intel_connector->get_hw_state = intel_connector_get_hw_state; |
836 | intel_connector->unregister = intel_connector_unregister; | ||
836 | 837 | ||
837 | drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); | 838 | drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); |
838 | 839 | ||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index abdeda1098ae..fd860077d0fe 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -11409,6 +11409,14 @@ void intel_modeset_gem_init(struct drm_device *dev) | |||
11409 | intel_setup_overlay(dev); | 11409 | intel_setup_overlay(dev); |
11410 | } | 11410 | } |
11411 | 11411 | ||
11412 | void intel_connector_unregister(struct intel_connector *intel_connector) | ||
11413 | { | ||
11414 | struct drm_connector *connector = &intel_connector->base; | ||
11415 | |||
11416 | intel_panel_destroy_backlight(connector); | ||
11417 | drm_sysfs_connector_remove(connector); | ||
11418 | } | ||
11419 | |||
11412 | void intel_modeset_cleanup(struct drm_device *dev) | 11420 | void intel_modeset_cleanup(struct drm_device *dev) |
11413 | { | 11421 | { |
11414 | struct drm_i915_private *dev_priv = dev->dev_private; | 11422 | struct drm_i915_private *dev_priv = dev->dev_private; |
@@ -11453,8 +11461,10 @@ void intel_modeset_cleanup(struct drm_device *dev) | |||
11453 | 11461 | ||
11454 | /* destroy the backlight and sysfs files before encoders/connectors */ | 11462 | /* destroy the backlight and sysfs files before encoders/connectors */ |
11455 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { | 11463 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { |
11456 | intel_panel_destroy_backlight(connector); | 11464 | struct intel_connector *intel_connector; |
11457 | drm_sysfs_connector_remove(connector); | 11465 | |
11466 | intel_connector = to_intel_connector(connector); | ||
11467 | intel_connector->unregister(intel_connector); | ||
11458 | } | 11468 | } |
11459 | 11469 | ||
11460 | drm_mode_config_cleanup(dev); | 11470 | drm_mode_config_cleanup(dev); |
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index e5aaae3f8e19..eeb8e7b42f8a 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -3799,6 +3799,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port, | |||
3799 | intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; | 3799 | intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; |
3800 | else | 3800 | else |
3801 | intel_connector->get_hw_state = intel_connector_get_hw_state; | 3801 | intel_connector->get_hw_state = intel_connector_get_hw_state; |
3802 | intel_connector->unregister = intel_connector_unregister; | ||
3802 | 3803 | ||
3803 | intel_dp->aux_ch_ctl_reg = intel_dp->output_reg + 0x10; | 3804 | intel_dp->aux_ch_ctl_reg = intel_dp->output_reg + 0x10; |
3804 | if (HAS_DDI(dev)) { | 3805 | if (HAS_DDI(dev)) { |
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index bff5d0a3f584..a4ffc021c317 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
@@ -187,6 +187,14 @@ struct intel_connector { | |||
187 | * and active (i.e. dpms ON state). */ | 187 | * and active (i.e. dpms ON state). */ |
188 | bool (*get_hw_state)(struct intel_connector *); | 188 | bool (*get_hw_state)(struct intel_connector *); |
189 | 189 | ||
190 | /* | ||
191 | * Removes all interfaces through which the connector is accessible | ||
192 | * - like sysfs, debugfs entries -, so that no new operations can be | ||
193 | * started on the connector. Also makes sure all currently pending | ||
194 | * operations finish before returing. | ||
195 | */ | ||
196 | void (*unregister)(struct intel_connector *); | ||
197 | |||
190 | /* Panel info for eDP and LVDS */ | 198 | /* Panel info for eDP and LVDS */ |
191 | struct intel_panel panel; | 199 | struct intel_panel panel; |
192 | 200 | ||
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c index 6bffbdf149a8..3ee1db1407b0 100644 --- a/drivers/gpu/drm/i915/intel_dsi.c +++ b/drivers/gpu/drm/i915/intel_dsi.c | |||
@@ -586,6 +586,7 @@ bool intel_dsi_init(struct drm_device *dev) | |||
586 | intel_encoder->get_config = intel_dsi_get_config; | 586 | intel_encoder->get_config = intel_dsi_get_config; |
587 | 587 | ||
588 | intel_connector->get_hw_state = intel_connector_get_hw_state; | 588 | intel_connector->get_hw_state = intel_connector_get_hw_state; |
589 | intel_connector->unregister = intel_connector_unregister; | ||
589 | 590 | ||
590 | for (i = 0; i < ARRAY_SIZE(intel_dsi_devices); i++) { | 591 | for (i = 0; i < ARRAY_SIZE(intel_dsi_devices); i++) { |
591 | dsi = &intel_dsi_devices[i]; | 592 | dsi = &intel_dsi_devices[i]; |
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c index eeff998e52ef..86eeb8b7d435 100644 --- a/drivers/gpu/drm/i915/intel_dvo.c +++ b/drivers/gpu/drm/i915/intel_dvo.c | |||
@@ -477,6 +477,7 @@ void intel_dvo_init(struct drm_device *dev) | |||
477 | intel_encoder->compute_config = intel_dvo_compute_config; | 477 | intel_encoder->compute_config = intel_dvo_compute_config; |
478 | intel_encoder->mode_set = intel_dvo_mode_set; | 478 | intel_encoder->mode_set = intel_dvo_mode_set; |
479 | intel_connector->get_hw_state = intel_dvo_connector_get_hw_state; | 479 | intel_connector->get_hw_state = intel_dvo_connector_get_hw_state; |
480 | intel_connector->unregister = intel_connector_unregister; | ||
480 | 481 | ||
481 | /* Now, try to find a controller */ | 482 | /* Now, try to find a controller */ |
482 | for (i = 0; i < ARRAY_SIZE(intel_dvo_devices); i++) { | 483 | for (i = 0; i < ARRAY_SIZE(intel_dvo_devices); i++) { |
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index c1cbe7f0437f..98d68ab04de4 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c | |||
@@ -1236,6 +1236,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, | |||
1236 | intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; | 1236 | intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; |
1237 | else | 1237 | else |
1238 | intel_connector->get_hw_state = intel_connector_get_hw_state; | 1238 | intel_connector->get_hw_state = intel_connector_get_hw_state; |
1239 | intel_connector->unregister = intel_connector_unregister; | ||
1239 | 1240 | ||
1240 | intel_hdmi_add_properties(intel_hdmi, connector); | 1241 | intel_hdmi_add_properties(intel_hdmi, connector); |
1241 | 1242 | ||
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 398460862be6..fecff3c2b9e1 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
@@ -958,6 +958,7 @@ void intel_lvds_init(struct drm_device *dev) | |||
958 | intel_encoder->get_hw_state = intel_lvds_get_hw_state; | 958 | intel_encoder->get_hw_state = intel_lvds_get_hw_state; |
959 | intel_encoder->get_config = intel_lvds_get_config; | 959 | intel_encoder->get_config = intel_lvds_get_config; |
960 | intel_connector->get_hw_state = intel_connector_get_hw_state; | 960 | intel_connector->get_hw_state = intel_connector_get_hw_state; |
961 | intel_connector->unregister = intel_connector_unregister; | ||
961 | 962 | ||
962 | intel_connector_attach_encoder(intel_connector, intel_encoder); | 963 | intel_connector_attach_encoder(intel_connector, intel_encoder); |
963 | intel_encoder->type = INTEL_OUTPUT_LVDS; | 964 | intel_encoder->type = INTEL_OUTPUT_LVDS; |
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 95bdfb3c431c..cbc2feeda59d 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c | |||
@@ -2397,6 +2397,7 @@ intel_sdvo_connector_init(struct intel_sdvo_connector *connector, | |||
2397 | connector->base.base.doublescan_allowed = 0; | 2397 | connector->base.base.doublescan_allowed = 0; |
2398 | connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB; | 2398 | connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB; |
2399 | connector->base.get_hw_state = intel_sdvo_connector_get_hw_state; | 2399 | connector->base.get_hw_state = intel_sdvo_connector_get_hw_state; |
2400 | connector->base.unregister = intel_connector_unregister; | ||
2400 | 2401 | ||
2401 | intel_connector_attach_encoder(&connector->base, &encoder->base); | 2402 | intel_connector_attach_encoder(&connector->base, &encoder->base); |
2402 | drm_sysfs_connector_add(&connector->base.base); | 2403 | drm_sysfs_connector_add(&connector->base.base); |
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c index ccd02eca35f0..b64fc1c6ff3f 100644 --- a/drivers/gpu/drm/i915/intel_tv.c +++ b/drivers/gpu/drm/i915/intel_tv.c | |||
@@ -1634,6 +1634,7 @@ intel_tv_init(struct drm_device *dev) | |||
1634 | intel_encoder->disable = intel_disable_tv; | 1634 | intel_encoder->disable = intel_disable_tv; |
1635 | intel_encoder->get_hw_state = intel_tv_get_hw_state; | 1635 | intel_encoder->get_hw_state = intel_tv_get_hw_state; |
1636 | intel_connector->get_hw_state = intel_connector_get_hw_state; | 1636 | intel_connector->get_hw_state = intel_connector_get_hw_state; |
1637 | intel_connector->unregister = intel_connector_unregister; | ||
1637 | 1638 | ||
1638 | intel_connector_attach_encoder(intel_connector, intel_encoder); | 1639 | intel_connector_attach_encoder(intel_connector, intel_encoder); |
1639 | intel_encoder->type = INTEL_OUTPUT_TVOUT; | 1640 | intel_encoder->type = INTEL_OUTPUT_TVOUT; |