2006-01-29 18:14:55

by David Zeuthen

[permalink] [raw]
Subject: [PATCH] ibm-acpi brightness fix


Hi,

The ibm-acpi driver allows user space to set the brightness of the
display but the way it currently works is by fading from one of the
eight levels to the other. While this effect is visually pleasing it's
probably best taken care of by user space itself (and users of
gnome-power-manager will notice that this is exactly what it does).

This patch removes the fading. Patch is against ibm-acpi 0.11 but it
also applies to the drivers/acpi/ibm_acpi.c file in Linus' tree. I've
tested this on a IBM Thinkpad T41. Please apply.

(Please keep me in the Cc - I'm not subscribed to the LKML)

David

Signed-Off-By: David Zeuthen <[email protected]>

--- ibm-acpi-0.11.orig/ibm_acpi.c 2005-03-17 05:06:16.000000000 -0500
+++ ibm-acpi-0.11/ibm_acpi.c 2006-01-29 12:55:53.000000000 -0500
@@ -1351,7 +1351,7 @@ static int brightness_read(char *p)

static int brightness_write(char *buf)
{
- int cmos_cmd, inc, i;
+ int cmos_cmd;
u8 level;
int new_level;
char *cmd;
@@ -1372,13 +1372,11 @@ static int brightness_write(char *buf)
return -EINVAL;

cmos_cmd = new_level > level ? BRIGHTNESS_UP : BRIGHTNESS_DOWN;
- inc = new_level > level ? 1 : -1;
- for (i = level; i != new_level; i += inc) {
- if (!cmos_eval(cmos_cmd))
- return -EIO;
- if (!acpi_ec_write(brightness_offset, i + inc))
- return -EIO;
- }
+
+ if (!cmos_eval(cmos_cmd))
+ return -EIO;
+ if (!acpi_ec_write(brightness_offset, new_level))
+ return -EIO;
}

return 0;


2006-01-30 03:28:56

by Borislav Deianov

[permalink] [raw]
Subject: Re: [PATCH] ibm-acpi brightness fix

Hi David,

On Sun, Jan 29, 2006 at 01:14:31PM -0500, David Zeuthen wrote:
>
> The ibm-acpi driver allows user space to set the brightness of the
> display but the way it currently works is by fading from one of the
> eight levels to the other. While this effect is visually pleasing it's
> probably best taken care of by user space itself (and users of
> gnome-power-manager will notice that this is exactly what it does).

Thanks for the patch. Unfortunately, the fading is required on my X40 -
setting a random brightness value just doesn't work without it. The
EC probably expects it to happen that way since you can only go one
step up or down with the hot keys.

Wishes,
Boris



>
> This patch removes the fading. Patch is against ibm-acpi 0.11 but it
> also applies to the drivers/acpi/ibm_acpi.c file in Linus' tree. I've
> tested this on a IBM Thinkpad T41. Please apply.
>
> (Please keep me in the Cc - I'm not subscribed to the LKML)
>
> David
>
> Signed-Off-By: David Zeuthen <[email protected]>
>
> --- ibm-acpi-0.11.orig/ibm_acpi.c 2005-03-17 05:06:16.000000000 -0500
> +++ ibm-acpi-0.11/ibm_acpi.c 2006-01-29 12:55:53.000000000 -0500
> @@ -1351,7 +1351,7 @@ static int brightness_read(char *p)
>
> static int brightness_write(char *buf)
> {
> - int cmos_cmd, inc, i;
> + int cmos_cmd;
> u8 level;
> int new_level;
> char *cmd;
> @@ -1372,13 +1372,11 @@ static int brightness_write(char *buf)
> return -EINVAL;
>
> cmos_cmd = new_level > level ? BRIGHTNESS_UP : BRIGHTNESS_DOWN;
> - inc = new_level > level ? 1 : -1;
> - for (i = level; i != new_level; i += inc) {
> - if (!cmos_eval(cmos_cmd))
> - return -EIO;
> - if (!acpi_ec_write(brightness_offset, i + inc))
> - return -EIO;
> - }
> +
> + if (!cmos_eval(cmos_cmd))
> + return -EIO;
> + if (!acpi_ec_write(brightness_offset, new_level))
> + return -EIO;
> }
>
> return 0;