Strange effect with i915 backlight controller

Daniel Mack zonque at gmail.com
Mon Nov 14 04:03:46 PST 2011


On 11/14/2011 11:39 AM, Takashi Iwai wrote:
> [Added Chris to Cc]
> 
> At Sun, 13 Nov 2011 17:24:09 +0100,
> Daniel Mack wrote:
>>
>> Hi Takashi,
>>
>> On 11/10/2011 04:39 PM, Takashi Iwai wrote:
>>> At Thu, 10 Nov 2011 16:11:29 +0100,
>>> Daniel Mack wrote:
>>>>
>>>> On 11/08/2011 01:57 AM, Daniel Mack wrote:
>>>>> Didn't get any response yet, hence copying LKML for a broader audience.
>>>>
>>>> Nobody, really?
>>>>
>>>> This is a rather annoying regression, as touching the brightness keys
>>>> appearantly switches off the whole machine. I'm sure this is trivial to
>>>> fix, I just don't have the insight of this driver and the chipset.
>>>
>>> I vaguely remember that the bit 0 is invalid on some old chips.
>>> Maybe 915GM is one of them, as it's gen3?  If so, the patch like below
>>> may work.
>>
>> Thank you for looking into this.
>>
>>> ---
>>> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
>>> index 499d4c0..be952d1 100644
>>> --- a/drivers/gpu/drm/i915/intel_panel.c
>>> +++ b/drivers/gpu/drm/i915/intel_panel.c
>>> @@ -249,8 +249,11 @@ static void intel_panel_actually_set_backlight(struct drm_device *dev, u32 level
>>>  	if (IS_PINEVIEW(dev)) {
>>>  		tmp &= ~(BACKLIGHT_DUTY_CYCLE_MASK - 1);
>>>  		level <<= 1;
>>> -	} else
>>> +	} else {
>>>  		tmp &= ~BACKLIGHT_DUTY_CYCLE_MASK;
>>> +		if (INTEL_INFO(dev)->gen < 4)
>>> +			tmp &= ~1;
>>> +	}
>>>  	I915_WRITE(BLC_PWM_CTL, tmp | level);
>>>  }
>>>  
>>
>> This seems to be the right intention, but the value you want to modify
>> under this condition is 'level', not 'tmp'.
> 
> Ah, of course.  Sorry for that.
> 
>> With this amendment of your
>> patch, things work perfectly fine here.
> 
> OK, then perhaps a better fix is to change the check to be equivalent
> with pineview, as you mentioned in the original post.  The handling of
> bit 0 for old chips was lost during the refactoring of backlight code
> since 2.6.37.
> 
> Does the patch below work for you?

Will test, but I only have occasional access to the machine, so this
will have to wait for some days.

> The only concern by this fix is that it changes the max value.  If
> apps expect some certain (e.g. recorded) value, it may screw up.  But
> I don't expect this would happen with sane apps.

I don't think so either.


Thanks,
Daniel


More information about the dri-devel mailing list