aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2016-06-24 09:00:15 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2016-06-24 09:43:14 -0400
commit1ebaa0b9c2d47ddc832a74254beaa518f64b9cb4 (patch)
treec338f0cbaffe0cc0e98aa1c5a99ab44f23143b37
parent7a418e3448f8c47fb44cc995d7983e735b9774c7 (diff)
drm/i915: Move backlight registration to connector registration
Currently the backlight is being registered in the load phase (before the display and its objects are registered). Move the backlight registration into the analogous phase by performing it from the connector registration, just after its creation. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Jani Nikula <jani.nikula@linux.intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1466773227-7994-3-git-send-email-chris@chris-wilson.co.uk
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/intel_crt.c1
-rw-r--r--drivers/gpu/drm/i915/intel_display.c15
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c5
-rw-r--r--drivers/gpu/drm/i915/intel_dp_mst.c1
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h6
-rw-r--r--drivers/gpu/drm/i915/intel_dsi.c1
-rw-r--r--drivers/gpu/drm/i915/intel_dvo.c1
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c1
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c1
-rw-r--r--drivers/gpu/drm/i915/intel_panel.c15
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c5
-rw-r--r--drivers/gpu/drm/i915/intel_tv.c1
13 files changed, 38 insertions, 16 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 6d96b14b53c8..42298a87db7e 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3734,6 +3734,7 @@ extern void intel_modeset_init_hw(struct drm_device *dev);
3734extern void intel_modeset_init(struct drm_device *dev); 3734extern void intel_modeset_init(struct drm_device *dev);
3735extern void intel_modeset_gem_init(struct drm_device *dev); 3735extern void intel_modeset_gem_init(struct drm_device *dev);
3736extern void intel_modeset_cleanup(struct drm_device *dev); 3736extern void intel_modeset_cleanup(struct drm_device *dev);
3737extern int intel_connector_register(struct drm_connector *);
3737extern void intel_connector_unregister(struct drm_connector *); 3738extern void intel_connector_unregister(struct drm_connector *);
3738extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state); 3739extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state);
3739extern void intel_display_resume(struct drm_device *dev); 3740extern void intel_display_resume(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index e115bcc6766f..8d7d48c74751 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -743,6 +743,7 @@ static const struct drm_connector_funcs intel_crt_connector_funcs = {
743 .dpms = drm_atomic_helper_connector_dpms, 743 .dpms = drm_atomic_helper_connector_dpms,
744 .detect = intel_crt_detect, 744 .detect = intel_crt_detect,
745 .fill_modes = drm_helper_probe_single_connector_modes, 745 .fill_modes = drm_helper_probe_single_connector_modes,
746 .late_register = intel_connector_register,
746 .early_unregister = intel_connector_unregister, 747 .early_unregister = intel_connector_unregister,
747 .destroy = intel_crt_destroy, 748 .destroy = intel_crt_destroy,
748 .set_property = intel_crt_set_property, 749 .set_property = intel_crt_set_property,
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 1141b8699dbe..12897d11df60 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -16314,8 +16314,21 @@ void intel_modeset_gem_init(struct drm_device *dev)
16314 c->state->plane_mask &= ~(1 << drm_plane_index(c->primary)); 16314 c->state->plane_mask &= ~(1 << drm_plane_index(c->primary));
16315 } 16315 }
16316 } 16316 }
16317}
16318
16319int intel_connector_register(struct drm_connector *connector)
16320{
16321 struct intel_connector *intel_connector = to_intel_connector(connector);
16322 int ret;
16323
16324 ret = intel_backlight_device_register(intel_connector);
16325 if (ret)
16326 goto err;
16327
16328 return 0;
16317 16329
16318 intel_backlight_register(dev); 16330err:
16331 return ret;
16319} 16332}
16320 16333
16321void intel_connector_unregister(struct drm_connector *connector) 16334void intel_connector_unregister(struct drm_connector *connector)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index d4e037e20fa1..30d410173816 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4507,6 +4507,11 @@ static int
4507intel_dp_connector_register(struct drm_connector *connector) 4507intel_dp_connector_register(struct drm_connector *connector)
4508{ 4508{
4509 struct intel_dp *intel_dp = intel_attached_dp(connector); 4509 struct intel_dp *intel_dp = intel_attached_dp(connector);
4510 int ret;
4511
4512 ret = intel_connector_register(connector);
4513 if (ret)
4514 return ret;
4510 4515
4511 i915_debugfs_connector_add(connector); 4516 i915_debugfs_connector_add(connector);
4512 4517
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index 89e7c98f5693..5f88e12575ac 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -336,6 +336,7 @@ static const struct drm_connector_funcs intel_dp_mst_connector_funcs = {
336 .fill_modes = drm_helper_probe_single_connector_modes, 336 .fill_modes = drm_helper_probe_single_connector_modes,
337 .set_property = intel_dp_mst_set_property, 337 .set_property = intel_dp_mst_set_property,
338 .atomic_get_property = intel_connector_atomic_get_property, 338 .atomic_get_property = intel_connector_atomic_get_property,
339 .late_register = intel_connector_register,
339 .early_unregister = intel_connector_unregister, 340 .early_unregister = intel_connector_unregister,
340 .destroy = intel_dp_mst_connector_destroy, 341 .destroy = intel_dp_mst_connector_destroy,
341 .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, 342 .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index ca2de043b9ce..3156d8df7921 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1506,11 +1506,15 @@ extern struct drm_display_mode *intel_find_panel_downclock(
1506 struct drm_device *dev, 1506 struct drm_device *dev,
1507 struct drm_display_mode *fixed_mode, 1507 struct drm_display_mode *fixed_mode,
1508 struct drm_connector *connector); 1508 struct drm_connector *connector);
1509void intel_backlight_register(struct drm_device *dev);
1510 1509
1511#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE) 1510#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE)
1511int intel_backlight_device_register(struct intel_connector *connector);
1512void intel_backlight_device_unregister(struct intel_connector *connector); 1512void intel_backlight_device_unregister(struct intel_connector *connector);
1513#else /* CONFIG_BACKLIGHT_CLASS_DEVICE */ 1513#else /* CONFIG_BACKLIGHT_CLASS_DEVICE */
1514static int intel_backlight_device_register(struct intel_connector *connector)
1515{
1516 return 0;
1517}
1514static inline void intel_backlight_device_unregister(struct intel_connector *connector) 1518static inline void intel_backlight_device_unregister(struct intel_connector *connector)
1515{ 1519{
1516} 1520}
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index ae2dcaf1b52e..80cc0f9de6c9 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -1390,6 +1390,7 @@ static const struct drm_connector_helper_funcs intel_dsi_connector_helper_funcs
1390static const struct drm_connector_funcs intel_dsi_connector_funcs = { 1390static const struct drm_connector_funcs intel_dsi_connector_funcs = {
1391 .dpms = drm_atomic_helper_connector_dpms, 1391 .dpms = drm_atomic_helper_connector_dpms,
1392 .detect = intel_dsi_detect, 1392 .detect = intel_dsi_detect,
1393 .late_register = intel_connector_register,
1393 .early_unregister = intel_connector_unregister, 1394 .early_unregister = intel_connector_unregister,
1394 .destroy = intel_dsi_connector_destroy, 1395 .destroy = intel_dsi_connector_destroy,
1395 .fill_modes = drm_helper_probe_single_connector_modes, 1396 .fill_modes = drm_helper_probe_single_connector_modes,
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index 60e4ddf2ec6d..669eae46ffa9 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -341,6 +341,7 @@ static void intel_dvo_destroy(struct drm_connector *connector)
341static const struct drm_connector_funcs intel_dvo_connector_funcs = { 341static const struct drm_connector_funcs intel_dvo_connector_funcs = {
342 .dpms = drm_atomic_helper_connector_dpms, 342 .dpms = drm_atomic_helper_connector_dpms,
343 .detect = intel_dvo_detect, 343 .detect = intel_dvo_detect,
344 .late_register = intel_connector_register,
344 .early_unregister = intel_connector_unregister, 345 .early_unregister = intel_connector_unregister,
345 .destroy = intel_dvo_destroy, 346 .destroy = intel_dvo_destroy,
346 .fill_modes = drm_helper_probe_single_connector_modes, 347 .fill_modes = drm_helper_probe_single_connector_modes,
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index fb21626ada64..48ca48c9faff 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1774,6 +1774,7 @@ static const struct drm_connector_funcs intel_hdmi_connector_funcs = {
1774 .fill_modes = drm_helper_probe_single_connector_modes, 1774 .fill_modes = drm_helper_probe_single_connector_modes,
1775 .set_property = intel_hdmi_set_property, 1775 .set_property = intel_hdmi_set_property,
1776 .atomic_get_property = intel_connector_atomic_get_property, 1776 .atomic_get_property = intel_connector_atomic_get_property,
1777 .late_register = intel_connector_register,
1777 .early_unregister = intel_connector_unregister, 1778 .early_unregister = intel_connector_unregister,
1778 .destroy = intel_hdmi_destroy, 1779 .destroy = intel_hdmi_destroy,
1779 .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, 1780 .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 6306c5499587..d4d06fb8de2e 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -555,6 +555,7 @@ static const struct drm_connector_funcs intel_lvds_connector_funcs = {
555 .fill_modes = drm_helper_probe_single_connector_modes, 555 .fill_modes = drm_helper_probe_single_connector_modes,
556 .set_property = intel_lvds_set_property, 556 .set_property = intel_lvds_set_property,
557 .atomic_get_property = intel_connector_atomic_get_property, 557 .atomic_get_property = intel_connector_atomic_get_property,
558 .late_register = intel_connector_register,
558 .early_unregister = intel_connector_unregister, 559 .early_unregister = intel_connector_unregister,
559 .destroy = intel_lvds_destroy, 560 .destroy = intel_lvds_destroy,
560 .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, 561 .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index bf721781c259..3c0b97f0bfae 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -1163,7 +1163,7 @@ static const struct backlight_ops intel_backlight_device_ops = {
1163 .get_brightness = intel_backlight_device_get_brightness, 1163 .get_brightness = intel_backlight_device_get_brightness,
1164}; 1164};
1165 1165
1166static int intel_backlight_device_register(struct intel_connector *connector) 1166int intel_backlight_device_register(struct intel_connector *connector)
1167{ 1167{
1168 struct intel_panel *panel = &connector->panel; 1168 struct intel_panel *panel = &connector->panel;
1169 struct backlight_properties props; 1169 struct backlight_properties props;
@@ -1225,11 +1225,6 @@ void intel_backlight_device_unregister(struct intel_connector *connector)
1225 panel->backlight.device = NULL; 1225 panel->backlight.device = NULL;
1226 } 1226 }
1227} 1227}
1228#else /* CONFIG_BACKLIGHT_CLASS_DEVICE */
1229static int intel_backlight_device_register(struct intel_connector *connector)
1230{
1231 return 0;
1232}
1233#endif /* CONFIG_BACKLIGHT_CLASS_DEVICE */ 1228#endif /* CONFIG_BACKLIGHT_CLASS_DEVICE */
1234 1229
1235/* 1230/*
@@ -1809,11 +1804,3 @@ void intel_panel_fini(struct intel_panel *panel)
1809 drm_mode_destroy(intel_connector->base.dev, 1804 drm_mode_destroy(intel_connector->base.dev,
1810 panel->downclock_mode); 1805 panel->downclock_mode);
1811} 1806}
1812
1813void intel_backlight_register(struct drm_device *dev)
1814{
1815 struct intel_connector *connector;
1816
1817 for_each_intel_connector(dev, connector)
1818 intel_backlight_device_register(connector);
1819}
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 580cc876a90f..c0c0a65fabf3 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -2181,6 +2181,11 @@ static int
2181intel_sdvo_connector_register(struct drm_connector *connector) 2181intel_sdvo_connector_register(struct drm_connector *connector)
2182{ 2182{
2183 struct intel_sdvo *sdvo = intel_attached_sdvo(connector); 2183 struct intel_sdvo *sdvo = intel_attached_sdvo(connector);
2184 int ret;
2185
2186 ret = intel_connector_register(connector);
2187 if (ret)
2188 return ret;
2184 2189
2185 return sysfs_create_link(&connector->kdev->kobj, 2190 return sysfs_create_link(&connector->kdev->kobj,
2186 &sdvo->ddc.dev.kobj, 2191 &sdvo->ddc.dev.kobj,
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index 4ce70a9f9df2..83fe6706a188 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -1501,6 +1501,7 @@ out:
1501static const struct drm_connector_funcs intel_tv_connector_funcs = { 1501static const struct drm_connector_funcs intel_tv_connector_funcs = {
1502 .dpms = drm_atomic_helper_connector_dpms, 1502 .dpms = drm_atomic_helper_connector_dpms,
1503 .detect = intel_tv_detect, 1503 .detect = intel_tv_detect,
1504 .late_register = intel_connector_register,
1504 .early_unregister = intel_connector_unregister, 1505 .early_unregister = intel_connector_unregister,
1505 .destroy = intel_tv_destroy, 1506 .destroy = intel_tv_destroy,
1506 .set_property = intel_tv_set_property, 1507 .set_property = intel_tv_set_property,