lkml.org 
[lkml]   [2012]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [V2 PATCH 2/2] drivers-gpu-drm-i915-invert-backlight-brightness
    From
    Date
    Am Donnerstag, den 15.03.2012, 00:35 +0100 schrieb Carsten Emde:
    > Einfaches Textdokument-Anlage
    > (drivers-gpu-drm-i915-invert-backlight-brightness.patch)

    quilt also does not adapt the subject line of the message correctly to
    the one of the patch.

    > Following the documentation of the Legacy Backlight Brightness (LBB)
    > Register in the configuration space of some Intel PCI graphics adapters,
    > setting the LBB register with the value 0x0 causes the backlight to be
    > turned off, and 0xFF causes the backlight to be set to 100% intensity
    > (http://download.intel.com/embedded/processors/Whitepaper/324567.pdf).
    > At least one of our test systems, however, turns the backlight off at
    > 0xFF and sets it to maximum intensity at 0. In consequence, the screen
    > of this systems becomes dark at an early boot stage which makes it
    > unusable. The same inversion applies to the BLC_PWM_CTL I915 register.
    > This problem was introduced in kernel version 2.6.38 when the PCI device
    > of this system was first supported by the i915 KMS module.
    >
    > This patch adds a module parameter to invert the backlight brightness
    > value before writing and after reading which makes the affected notebook
    > usable again.
    >
    > Signed-off-by: Carsten Emde <C.Emde@osadl.org>
    >
    > ---
    > Documentation/kernel-parameters.txt | 9 +++++++++
    > drivers/gpu/drm/i915/intel_panel.c | 14 ++++++++++++++
    > 2 files changed, 23 insertions(+)
    >
    > Index: linux-3.3-rc6/Documentation/kernel-parameters.txt
    > ===================================================================
    > --- linux-3.3-rc6.orig/Documentation/kernel-parameters.txt
    > +++ linux-3.3-rc6/Documentation/kernel-parameters.txt
    > @@ -966,6 +966,15 @@ bytes respectively. Such letter suffixes
    >
    > i810= [HW,DRM]
    >
    > + i915.invert_brightness
    > + [DRM] Invert the sense of the variable that is used to
    > + set the brightness of the panel backlight. Normally a
    > + value of 0 indicates backlight switched off, and the
    > + maximum value sets the backlight to maximum brightness.
    > + If this parameter is specified, a value of 0 sets the
    > + backlight to maximum brightness, and the maximum value
    > + switches the backlight off.
    > +
    > i8k.ignore_dmi [HW] Continue probing hardware even if DMI data
    > indicates that the driver is running on unsupported
    > hardware.
    > Index: linux-3.3-rc6/drivers/gpu/drm/i915/intel_panel.c
    > ===================================================================
    > --- linux-3.3-rc6.orig/drivers/gpu/drm/i915/intel_panel.c
    > +++ linux-3.3-rc6/drivers/gpu/drm/i915/intel_panel.c
    > @@ -28,6 +28,7 @@
    > * Chris Wilson <chris@chris-wilson.co.uk>
    > */
    >
    > +#include <linux/moduleparam.h>
    > #include "intel_drv.h"
    >
    > #define PCI_LBPC 0xf4 /* legacy/combination backlight modes */
    > @@ -191,6 +192,10 @@ u32 intel_panel_get_max_backlight(struct
    > return max;
    > }
    >
    > +static bool brightness_inverted;
    > +MODULE_PARM_DESC(brightness_inverted, "Backlight brightness value is inverted "
    > + "(0 = max brightness, max value = dark)");

    Could you elaborate somewhere for example by giving an example what
    `dark` means? As a normal user it is not clear to me.

    > +module_param_named(brightness_inverted, brightness_inverted, bool, 0600);
    > u32 intel_panel_get_backlight(struct drm_device *dev)
    > {
    > struct drm_i915_private *dev_priv = dev->dev_private;
    > @@ -212,6 +217,10 @@ u32 intel_panel_get_backlight(struct drm
    > }
    >
    > DRM_DEBUG_DRIVER("get backlight PWM = %d\n", val);
    > + if (brightness_inverted) {
    > + u32 max = intel_panel_get_max_backlight(dev);
    > + val = max - val;
    > + }
    > return val;
    > }
    >
    > @@ -229,6 +238,11 @@ static void intel_panel_actually_set_bac
    >
    > DRM_DEBUG_DRIVER("set backlight PWM = %d\n", level);
    >
    > + if (brightness_inverted) {
    > + u32 max = intel_panel_get_max_backlight(dev);
    > + level = max - level;
    > + }
    > +
    > if (HAS_PCH_SPLIT(dev))
    > return intel_pch_panel_set_backlight(dev, level);


    Thanks,

    Paul
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2012-03-15 08:27    [W:0.027 / U:5.448 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site