backlight requires i915.enable_dpcd_backlight=0 module parameter to work
Lenovo Thinkpad X1 requires i915.enable_dpcd_backlight=0
module parameter to function. Auto detection thinks the panel supports VESA DPCD backlight control, but it does not work.
The module parameter should not be required.
There are three options I can think of:
-
The auto detection is overzealous, and we should hold back. Always use PWM backlight if that's possible. (Does this regress some machines that erroneously report PWM backlight while DPCD backlight should be used?)
-
Even if we think the panel supports DPCD backlight, we should check if it's enabled at probe time (
DP_EDP_BACKLIGHT_CONTROL_MODE_MASK
inDP_EDP_BACKLIGHT_CONTROL_MODE_DPCD
register) and not use it if it's not being used at probe. The downside is that this depends on what the GOP did with the panel. -
We could perhaps try harder at enabling the DPCD backlight at probe if it's not enabled. Currently we just read the state, and it takes a modeset to even set the control mode to DPCD backlight if it's not enabled at probe. However, currently even a modeset is not enough to make the VESA DPCD backlight work on the machine.
i915->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI
DPCD: 14 00 84 41 00 00 01 80 02 36 00 00 00 08 01
eDP DPCD: 05 ff bf
At probe DP_EDP_BACKLIGHT_MODE_SET_REGISTER (0x721): 00
After a modeset: 0a