Since v3.17-rc1, it contains ============================ commit 6dda730e55f412a6dfb181cae6784822ba463847 Author: Jani Nikula <jani.nikula at intel.com> Date: Tue Jun 24 18:27:40 2014 +0300 drm/i915: respect the VBT minimum backlight brightness The backlight class 0 brightness means the PWM min and it does not turn off the backlight. However there is a little problem that some values of backlight class brightness are mapped to the same PWM value. Taking VBT min 10 and PWD max 937 as an example. The corresponding PWM min will be 37 because of round(10 * 937 / 255). But sysfs : PWM ----------- 0 -> 37 1 -> 38 ... 12 -> 49 13 -> 49 ... 924 -> 925 925 -> 925 You can see there are some duplicates due to the backlight class brighness range is larger than the valid PWM brightness range. I prepare a python script to calculate the complete list. https://gist.github.com/fourdollars/e99c4e03c7dab0110ae7 Since v3.18-rc1, it contains ============================ commit e6755fb78e8f20ecadf2a4080084121336624ad9 Author: Jani Nikula <jani.nikula at intel.com> Date: Tue Aug 12 17:11:42 2014 +0300 drm/i915: switch off backlight for backlight class 0 brightness The status becomes worse because it uses the backlight class 0 brightness to turn off the backlight and the corresponding PWM min is gone. sysfs : PWM ----------- 0 -> 0 1 -> 38 ... 12 -> 49 13 -> 49 ... 924 -> 925 925 -> 925 Since v3.18-rc5, it contains ============================ commit e1c412e75754ab7b7002f3e18a2652d999c40d4b Author: Jani Nikula <jani.nikula at intel.com> Date: Wed Nov 5 14:46:31 2014 +0200 drm/i915: safeguard against too high minimum brightness It is for the corner case https://bugzilla.kernel.org/show_bug.cgi?id=86551. But what if it is on purpose, maybe the hardware vendor just wants to on and off the backlight and there is no intermediate stage. Taking VBT min 255 and PWD max 937 as an example. Currenly 255 will be forcely changed to 64 so the corresponding PWM min will be 235 because of round(64 * 937 / 255), and it becomes sysfs : PWM ----------- 0 -> 0 (off) 1 -> 236 (probably off) ... 934 -> 935 (probably off) 935 -> 936 (probably off) 936 -> 936 (probably off) 937 -> 937 (on) But it doesn't make sense if 0~936 are all used to disable the backlight and only 937 is used to turn on the backlight. This patch can solve all problems above. ======================================== Taking VBT min 10 and PWD max 937 as an example. The corresponding PWM min will be 37 because of round(10 * 937 / 255). sysfs : PWM ----------- 0 -> 0 (off) 1 -> 37 ... 900 -> 936 901 -> 937 There is no duplicate and 37 matched the corresponding PWM min by VBT min. Taking VBT min 255 and PWD max 937 as an example. The corresponding PWM min will be 937 because of round(255 * 937 / 255). sysfs : PWM ----------- 0 -> 0 (off) 1 -> 937 Even for the corner case, it still works well. Shih-Yuan Lee (FourDollars) (1): drm/i915: A better backlight class brightness range. drivers/gpu/drm/i915/intel_panel.c | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx