aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2013-04-02 08:48:09 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-04-02 09:49:00 -0400
commit31ad8ec6a6145f9ac978a112801dbde33d44b9d1 (patch)
tree8e9c3608d424440d962a5e2cf25aedcff2d65068 /drivers/gpu
parent8a5c2ae753c588bcb2a4e38d1c6a39865dbf1ff3 (diff)
drm/i915: group backlight related stuff into a struct
No functional changes. Signed-off-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h11
-rw-r--r--drivers/gpu/drm/i915/intel_panel.c44
2 files changed, 29 insertions, 26 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 2962a9ab44d5..5e38a2cf95f4 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -939,9 +939,14 @@ typedef struct drm_i915_private {
939 struct intel_overlay *overlay; 939 struct intel_overlay *overlay;
940 unsigned int sprite_scaling_enabled; 940 unsigned int sprite_scaling_enabled;
941 941
942 /* backlight */
943 struct {
944 int level;
945 bool enabled;
946 struct backlight_device *device;
947 } backlight;
948
942 /* LVDS info */ 949 /* LVDS info */
943 int backlight_level; /* restore backlight to this value */
944 bool backlight_enabled;
945 struct drm_display_mode *lfp_lvds_vbt_mode; /* if any */ 950 struct drm_display_mode *lfp_lvds_vbt_mode; /* if any */
946 struct drm_display_mode *sdvo_lvds_vbt_mode; /* if any */ 951 struct drm_display_mode *sdvo_lvds_vbt_mode; /* if any */
947 952
@@ -1043,8 +1048,6 @@ typedef struct drm_i915_private {
1043 */ 1048 */
1044 struct work_struct console_resume_work; 1049 struct work_struct console_resume_work;
1045 1050
1046 struct backlight_device *backlight;
1047
1048 struct drm_property *broadcast_rgb_property; 1051 struct drm_property *broadcast_rgb_property;
1049 struct drm_property *force_audio_property; 1052 struct drm_property *force_audio_property;
1050 1053
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 21f415ad80a3..0e7e873b06f5 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -286,11 +286,11 @@ void intel_panel_set_backlight(struct drm_device *dev, u32 level)
286{ 286{
287 struct drm_i915_private *dev_priv = dev->dev_private; 287 struct drm_i915_private *dev_priv = dev->dev_private;
288 288
289 dev_priv->backlight_level = level; 289 dev_priv->backlight.level = level;
290 if (dev_priv->backlight) 290 if (dev_priv->backlight.device)
291 dev_priv->backlight->props.brightness = level; 291 dev_priv->backlight.device->props.brightness = level;
292 292
293 if (dev_priv->backlight_enabled) 293 if (dev_priv->backlight.enabled)
294 intel_panel_actually_set_backlight(dev, level); 294 intel_panel_actually_set_backlight(dev, level);
295} 295}
296 296
@@ -298,7 +298,7 @@ void intel_panel_disable_backlight(struct drm_device *dev)
298{ 298{
299 struct drm_i915_private *dev_priv = dev->dev_private; 299 struct drm_i915_private *dev_priv = dev->dev_private;
300 300
301 dev_priv->backlight_enabled = false; 301 dev_priv->backlight.enabled = false;
302 intel_panel_actually_set_backlight(dev, 0); 302 intel_panel_actually_set_backlight(dev, 0);
303 303
304 if (INTEL_INFO(dev)->gen >= 4) { 304 if (INTEL_INFO(dev)->gen >= 4) {
@@ -321,15 +321,15 @@ void intel_panel_enable_backlight(struct drm_device *dev,
321{ 321{
322 struct drm_i915_private *dev_priv = dev->dev_private; 322 struct drm_i915_private *dev_priv = dev->dev_private;
323 323
324 if (dev_priv->backlight_level == 0) { 324 if (dev_priv->backlight.level == 0) {
325 dev_priv->backlight_level = intel_panel_get_max_backlight(dev); 325 dev_priv->backlight.level = intel_panel_get_max_backlight(dev);
326 if (dev_priv->backlight) 326 if (dev_priv->backlight.device)
327 dev_priv->backlight->props.brightness = 327 dev_priv->backlight.device->props.brightness =
328 dev_priv->backlight_level; 328 dev_priv->backlight.level;
329 } 329 }
330 330
331 dev_priv->backlight_enabled = true; 331 dev_priv->backlight.enabled = true;
332 intel_panel_actually_set_backlight(dev, dev_priv->backlight_level); 332 intel_panel_actually_set_backlight(dev, dev_priv->backlight.level);
333 333
334 if (INTEL_INFO(dev)->gen >= 4) { 334 if (INTEL_INFO(dev)->gen >= 4) {
335 uint32_t reg, tmp; 335 uint32_t reg, tmp;
@@ -371,15 +371,15 @@ set_level:
371 * when BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1 are written. 371 * when BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1 are written.
372 */ 372 */
373 if (!intel_panel_get_backlight(dev)) 373 if (!intel_panel_get_backlight(dev))
374 intel_panel_actually_set_backlight(dev, dev_priv->backlight_level); 374 intel_panel_actually_set_backlight(dev, dev_priv->backlight.level);
375} 375}
376 376
377static void intel_panel_init_backlight(struct drm_device *dev) 377static void intel_panel_init_backlight(struct drm_device *dev)
378{ 378{
379 struct drm_i915_private *dev_priv = dev->dev_private; 379 struct drm_i915_private *dev_priv = dev->dev_private;
380 380
381 dev_priv->backlight_level = intel_panel_get_backlight(dev); 381 dev_priv->backlight.level = intel_panel_get_backlight(dev);
382 dev_priv->backlight_enabled = dev_priv->backlight_level != 0; 382 dev_priv->backlight.enabled = dev_priv->backlight.level != 0;
383} 383}
384 384
385enum drm_connector_status 385enum drm_connector_status
@@ -433,21 +433,21 @@ int intel_panel_setup_backlight(struct drm_connector *connector)
433 433
434 memset(&props, 0, sizeof(props)); 434 memset(&props, 0, sizeof(props));
435 props.type = BACKLIGHT_RAW; 435 props.type = BACKLIGHT_RAW;
436 props.brightness = dev_priv->backlight_level; 436 props.brightness = dev_priv->backlight.level;
437 props.max_brightness = _intel_panel_get_max_backlight(dev); 437 props.max_brightness = _intel_panel_get_max_backlight(dev);
438 if (props.max_brightness == 0) { 438 if (props.max_brightness == 0) {
439 DRM_DEBUG_DRIVER("Failed to get maximum backlight value\n"); 439 DRM_DEBUG_DRIVER("Failed to get maximum backlight value\n");
440 return -ENODEV; 440 return -ENODEV;
441 } 441 }
442 dev_priv->backlight = 442 dev_priv->backlight.device =
443 backlight_device_register("intel_backlight", 443 backlight_device_register("intel_backlight",
444 &connector->kdev, dev, 444 &connector->kdev, dev,
445 &intel_panel_bl_ops, &props); 445 &intel_panel_bl_ops, &props);
446 446
447 if (IS_ERR(dev_priv->backlight)) { 447 if (IS_ERR(dev_priv->backlight.device)) {
448 DRM_ERROR("Failed to register backlight: %ld\n", 448 DRM_ERROR("Failed to register backlight: %ld\n",
449 PTR_ERR(dev_priv->backlight)); 449 PTR_ERR(dev_priv->backlight.device));
450 dev_priv->backlight = NULL; 450 dev_priv->backlight.device = NULL;
451 return -ENODEV; 451 return -ENODEV;
452 } 452 }
453 return 0; 453 return 0;
@@ -456,8 +456,8 @@ int intel_panel_setup_backlight(struct drm_connector *connector)
456void intel_panel_destroy_backlight(struct drm_device *dev) 456void intel_panel_destroy_backlight(struct drm_device *dev)
457{ 457{
458 struct drm_i915_private *dev_priv = dev->dev_private; 458 struct drm_i915_private *dev_priv = dev->dev_private;
459 if (dev_priv->backlight) 459 if (dev_priv->backlight.device)
460 backlight_device_unregister(dev_priv->backlight); 460 backlight_device_unregister(dev_priv->backlight.device);
461} 461}
462#else 462#else
463int intel_panel_setup_backlight(struct drm_connector *connector) 463int intel_panel_setup_backlight(struct drm_connector *connector)