Message ID | 1447644767-356-1-git-send-email-coproscefalo@gmail.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
On Sun, Nov 15, 2015 at 08:32:47PM -0700, Azael Avalos wrote: > If transflective backlight is supported and the brightness is zero > (lowest brightness level), the set_lcd_brightness function will activate > the transflective backlight, making the LCD appear to be turned off. > > This patch fixes the issue by incrementing the brightness level, and > by doing so, avoiding the activation of the tranflective backlight. So... I'm not sure this is a bug or even wrong behavior. The lowest setting on my Thinkpad Yoga 12 is also "off" in Linux. Same is true for my Mac Book Pro (in Mac OS X). From what I can tell, what this patch does is merely disable the lowest setting. What is it about this behavior that is considered to be wrong? > > Cc: <stable@vger.kernel.org> # 4.3+ > Reported-and-tested-by: Fabian Koester <fabian.koester@bringnow.com> > Signed-off-by: Azael Avalos <coproscefalo@gmail.com> > --- > drivers/platform/x86/toshiba_acpi.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c > index 2ca3f91..b6a7dc9 100644 > --- a/drivers/platform/x86/toshiba_acpi.c > +++ b/drivers/platform/x86/toshiba_acpi.c > @@ -2634,6 +2634,14 @@ static int toshiba_acpi_setup_backlight(struct toshiba_acpi_dev *dev) > brightness = __get_lcd_brightness(dev); > if (brightness < 0) > return 0; > + /* > + * If transflective backlight is supported and the brightness is zero > + * (lowest brightness level), the set_lcd_brightness function will > + * activate the transflective backlight, making the LCD appear to be > + * turned off, simply increment the brightness level to avoid that. > + */ > + if (dev->tr_backlight_supported && brightness == 0) > + brightness++; > ret = set_lcd_brightness(dev, brightness); > if (ret) { > pr_debug("Backlight method is read-only, disabling backlight support\n"); > -- > 2.6.2 > >
Hi Darren, 2015-11-20 16:16 GMT-07:00 Darren Hart <dvhart@infradead.org>: > On Sun, Nov 15, 2015 at 08:32:47PM -0700, Azael Avalos wrote: >> If transflective backlight is supported and the brightness is zero >> (lowest brightness level), the set_lcd_brightness function will activate >> the transflective backlight, making the LCD appear to be turned off. >> >> This patch fixes the issue by incrementing the brightness level, and >> by doing so, avoiding the activation of the tranflective backlight. > > So... I'm not sure this is a bug or even wrong behavior. The lowest setting on > my Thinkpad Yoga 12 is also "off" in Linux. Same is true for my Mac Book Pro (in > Mac OS X). Yeah, and even on "regular" (with non transflective backlight) Toshibas zero is also "off" and no problem is observed. > > From what I can tell, what this patch does is merely disable the lowest setting. Nope, we are just not letting the driver enable transflective backlight and continue using the "normal" brightness range. > > What is it about this behavior that is considered to be wrong? > The problem is with laptops with transflective backlight support. The code for transflective backlight is fused with the LCD backlight code (go figure...), so if a Toshiba laptop with transflective support is detected, the max brightness levels are raised by one. A regular laptop's brightness levels are 0-7, but on a laptop with transflective support, the brightness levels are 0-8, zero being "activate transflective backlight" and 1-8 the regular brightness levels. So, when a laptop with transflective support AND an initial brightness level of zero gets probed for backlight support, the set_lcd_brightness function activates the transfective backlight, as the brightness levels are still not incremented, and thus, the screen goes dark. I hope this clarifies a bit the situation here. Cheers Azael
On Fri, Nov 20, 2015 at 04:46:07PM -0700, Azael Avalos wrote: > Hi Darren, > > 2015-11-20 16:16 GMT-07:00 Darren Hart <dvhart@infradead.org>: > > On Sun, Nov 15, 2015 at 08:32:47PM -0700, Azael Avalos wrote: > >> If transflective backlight is supported and the brightness is zero > >> (lowest brightness level), the set_lcd_brightness function will activate > >> the transflective backlight, making the LCD appear to be turned off. > >> > >> This patch fixes the issue by incrementing the brightness level, and > >> by doing so, avoiding the activation of the tranflective backlight. > > > > So... I'm not sure this is a bug or even wrong behavior. The lowest setting on > > my Thinkpad Yoga 12 is also "off" in Linux. Same is true for my Mac Book Pro (in > > Mac OS X). > > Yeah, and even on "regular" (with non transflective backlight) Toshibas > zero is also "off" and no problem is observed. > > > > > From what I can tell, what this patch does is merely disable the lowest setting. > > Nope, we are just not letting the driver enable transflective backlight > and continue using the "normal" brightness range. > > > > > What is it about this behavior that is considered to be wrong? > > > > The problem is with laptops with transflective backlight support. > > The code for transflective backlight is fused with the LCD backlight > code (go figure...), so if a Toshiba laptop with transflective support > is detected, the max brightness levels are raised by one. > > A regular laptop's brightness levels are 0-7, but on a laptop with > transflective support, the brightness levels are 0-8, zero being > "activate transflective backlight" and 1-8 the regular brightness > levels. > > So, when a laptop with transflective support AND an initial > brightness level of zero gets probed for backlight support, > the set_lcd_brightness function activates the transfective > backlight, as the brightness levels are still not incremented, > and thus, the screen goes dark. > > > I hope this clarifies a bit the situation here. Thanks, queued to testing.
diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index 2ca3f91..b6a7dc9 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -2634,6 +2634,14 @@ static int toshiba_acpi_setup_backlight(struct toshiba_acpi_dev *dev) brightness = __get_lcd_brightness(dev); if (brightness < 0) return 0; + /* + * If transflective backlight is supported and the brightness is zero + * (lowest brightness level), the set_lcd_brightness function will + * activate the transflective backlight, making the LCD appear to be + * turned off, simply increment the brightness level to avoid that. + */ + if (dev->tr_backlight_supported && brightness == 0) + brightness++; ret = set_lcd_brightness(dev, brightness); if (ret) { pr_debug("Backlight method is read-only, disabling backlight support\n");
If transflective backlight is supported and the brightness is zero (lowest brightness level), the set_lcd_brightness function will activate the transflective backlight, making the LCD appear to be turned off. This patch fixes the issue by incrementing the brightness level, and by doing so, avoiding the activation of the tranflective backlight. Cc: <stable@vger.kernel.org> # 4.3+ Reported-and-tested-by: Fabian Koester <fabian.koester@bringnow.com> Signed-off-by: Azael Avalos <coproscefalo@gmail.com> --- drivers/platform/x86/toshiba_acpi.c | 8 ++++++++ 1 file changed, 8 insertions(+)