CHROMIUM: drm/i915: Move the backlight accessor functions in dev_priv
authorStéphane Marchesin <marcheu@chromium.org>
Tue, 23 Oct 2012 20:02:22 +0000 (13:02 -0700)
committerGerrit <chrome-bot@google.com>
Fri, 2 Nov 2012 19:11:34 +0000 (12:11 -0700)
This abstracts those functions, so that we can plug-in
platform-specific alternatives.

BUG=chrome-os-partner:3276,chrome-os-partner:15248
TEST=by hand: compiles, works

Change-Id: I29dd15722ffed8f5813b34bf0ce4431ce0524cc2
Reviewed-on: https://gerrit.chromium.org/gerrit/36974
Reviewed-by: Daniel Erat <derat@chromium.org>
Commit-Ready: Stéphane Marchesin <marcheu@chromium.org>
Tested-by: Stéphane Marchesin <marcheu@chromium.org>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/intel_adaptive_backlight.c
drivers/gpu/drm/i915/intel_drv.h
drivers/gpu/drm/i915/intel_lvds.c
drivers/gpu/drm/i915/intel_opregion.c
drivers/gpu/drm/i915/intel_panel.c

index 457e093..14389ab 100644 (file)
@@ -402,6 +402,13 @@ typedef struct drm_i915_private {
        struct drm_display_mode *lfp_lvds_vbt_mode; /* if any */
        struct drm_display_mode *sdvo_lvds_vbt_mode; /* if any */
 
+       /* Backlight driver */
+       u32 (*get_backlight)(struct drm_device *dev);
+       u32 (*get_max_backlight)(struct drm_device *dev);
+       void (*set_backlight)(struct drm_device *dev, u32 level);
+       void (*disable_backlight)(struct drm_device *dev);
+       void (*enable_backlight)(struct drm_device *dev);
+
        /* Adaptive backlight */
        bool adaptive_backlight_enabled;
        int backlight_correction_level;
index 8395c14..dbe0b96 100644 (file)
@@ -226,7 +226,7 @@ adaptive_backlight_correct(struct drm_device *dev, int pipe)
        if (!adaptive_backlight_current_step(dev_priv, correction_level))
                return;
 
-       intel_panel_set_backlight(dev, dev_priv->backlight_level);
+       dev_priv->set_backlight(dev, dev_priv->backlight_level);
 
        /* We need to invert the gamma correction of the LCD values,
         * but not of the backlight which is linear.
@@ -312,7 +312,7 @@ void intel_adaptive_backlight_disable(struct drm_i915_private *dev_priv,
 
        dev_priv->backlight_correction_level = 256;
 
-       intel_panel_set_backlight(dev, dev_priv->backlight_level);
+       dev_priv->set_backlight(dev, dev_priv->backlight_level);
 
        /* Find the pipe */
        if (!connector->encoder)
index d47e6cd..bc6c87e 100644 (file)
@@ -335,12 +335,7 @@ extern void intel_pch_panel_fitting(struct drm_device *dev,
                                    int fitting_mode,
                                    struct drm_display_mode *mode,
                                    struct drm_display_mode *adjusted_mode);
-extern u32 intel_panel_get_max_backlight(struct drm_device *dev);
-extern u32 intel_panel_get_backlight(struct drm_device *dev);
-extern void intel_panel_set_backlight(struct drm_device *dev, u32 level);
 extern int intel_panel_setup_backlight(struct drm_device *dev);
-extern void intel_panel_enable_backlight(struct drm_device *dev);
-extern void intel_panel_disable_backlight(struct drm_device *dev);
 extern void intel_panel_destroy_backlight(struct drm_device *dev);
 extern enum drm_connector_status intel_panel_detect(struct drm_device *dev);
 
index 8d586a5..7b1b610 100644 (file)
@@ -107,7 +107,7 @@ static void intel_lvds_enable(struct intel_lvds *intel_lvds)
        if (wait_for((I915_READ(stat_reg) & PP_ON) != 0, 1000))
                DRM_ERROR("timed out waiting for panel to power on\n");
 
-       intel_panel_enable_backlight(dev);
+       dev_priv->enable_backlight(dev);
 }
 
 static void intel_lvds_disable(struct intel_lvds *intel_lvds)
@@ -126,7 +126,7 @@ static void intel_lvds_disable(struct intel_lvds *intel_lvds)
                stat_reg = PP_STATUS;
        }
 
-       intel_panel_disable_backlight(dev);
+       dev_priv->disable_backlight(dev);
 
        I915_WRITE(ctl_reg, I915_READ(ctl_reg) & ~POWER_TARGET_ON);
        if (wait_for((I915_READ(stat_reg) & PP_ON) == 0, 1000))
index 289140b..e26c418 100644 (file)
@@ -159,8 +159,8 @@ static u32 asle_set_backlight(struct drm_device *dev, u32 bclp)
        if (bclp > 255)
                return ASLE_BACKLIGHT_FAILED;
 
-       max = intel_panel_get_max_backlight(dev);
-       intel_panel_set_backlight(dev, bclp * max / 255);
+       max = dev_priv->get_max_backlight(dev);
+       dev_priv->set_backlight(dev, bclp * max / 255);
        asle->cblv = (bclp*0x64)/0xff | ASLE_CBLV_VALID;
 
        return 0;
index c2e5e43..69a56e3 100644 (file)
@@ -185,7 +185,7 @@ static u32 i915_read_blc_pwm_ctl(struct drm_i915_private *dev_priv)
        return val;
 }
 
-u32 intel_panel_get_max_backlight(struct drm_device *dev)
+static u32 intel_panel_get_max_backlight(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
        u32 max;
@@ -215,7 +215,7 @@ u32 intel_panel_get_max_backlight(struct drm_device *dev)
        return max;
 }
 
-u32 intel_panel_get_backlight(struct drm_device *dev)
+static u32 intel_panel_get_backlight(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
        u32 val;
@@ -260,7 +260,7 @@ static void intel_panel_actually_set_backlight(struct drm_device *dev, u32 level
                return intel_pch_panel_set_backlight(dev, level);
 
        if (is_backlight_combination_mode(dev)) {
-               u32 max = intel_panel_get_max_backlight(dev);
+               u32 max = dev_priv->get_max_backlight(dev);
                u8 lbpc;
 
                lbpc = level * 0xfe / max + 1;
@@ -275,7 +275,7 @@ static void intel_panel_actually_set_backlight(struct drm_device *dev, u32 level
        I915_WRITE(BLC_PWM_CTL, tmp | level);
 }
 
-void intel_panel_set_backlight(struct drm_device *dev, u32 level)
+static void intel_panel_set_backlight(struct drm_device *dev, u32 level)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
 
@@ -286,7 +286,7 @@ void intel_panel_set_backlight(struct drm_device *dev, u32 level)
                intel_panel_actually_set_backlight(dev, level);
 }
 
-void intel_panel_disable_backlight(struct drm_device *dev)
+static void intel_panel_disable_backlight(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
 
@@ -294,7 +294,7 @@ void intel_panel_disable_backlight(struct drm_device *dev)
        intel_panel_actually_set_backlight(dev, 0);
 }
 
-void intel_panel_enable_backlight(struct drm_device *dev)
+static void intel_panel_enable_backlight(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
 
@@ -303,7 +303,7 @@ void intel_panel_enable_backlight(struct drm_device *dev)
         * they know what they're doing and will raise the level themselves. */
        if (dev_priv->backlight_level == 0 &&
            !dev_priv->backlight_level_has_been_set)
-               dev_priv->backlight_level = intel_panel_get_max_backlight(dev);
+               dev_priv->backlight_level = dev_priv->get_max_backlight(dev);
 
        dev_priv->backlight_enabled = true;
        intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
@@ -313,7 +313,13 @@ static void intel_panel_init_backlight(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
 
-       dev_priv->backlight_level = intel_panel_get_backlight(dev);
+       dev_priv->get_backlight = intel_panel_get_backlight;
+       dev_priv->get_max_backlight = intel_panel_get_max_backlight;
+       dev_priv->set_backlight = intel_panel_set_backlight;
+       dev_priv->disable_backlight = intel_panel_disable_backlight;
+       dev_priv->enable_backlight = intel_panel_enable_backlight;
+
+       dev_priv->backlight_level = dev_priv->get_backlight(dev);
        dev_priv->backlight_level_has_been_set = false;
        dev_priv->backlight_enabled = dev_priv->backlight_level != 0;
 }
@@ -347,7 +353,9 @@ intel_panel_detect(struct drm_device *dev)
 static int intel_panel_update_status(struct backlight_device *bd)
 {
        struct drm_device *dev = bl_get_data(bd);
-       intel_panel_set_backlight(dev, bd->props.brightness);
+       struct drm_i915_private *dev_priv = dev->dev_private;
+
+       dev_priv->set_backlight(dev, bd->props.brightness);
        return 0;
 }
 
@@ -379,7 +387,7 @@ int intel_panel_setup_backlight(struct drm_device *dev)
                return -ENODEV;
 
        props.type = BACKLIGHT_RAW;
-       props.max_brightness = intel_panel_get_max_backlight(dev);
+       props.max_brightness = dev_priv->get_max_backlight(dev);
        dev_priv->backlight =
                backlight_device_register("intel_backlight",
                                          &connector->kdev, dev,