LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH] acpi: add backlight support to the sony_acpi driver (v2)
@ 2006-11-27 16:43 Alessandro Guido
2006-12-01 13:35 ` Pavel Machek
0 siblings, 1 reply; 7+ messages in thread
From: Alessandro Guido @ 2006-11-27 16:43 UTC (permalink / raw)
To: linux-kernel; +Cc: akpm, linux-acpi, len.brown
Enable the sony_acpi driver to use the backlight subsysyem for
adjusting the monitor brightness. Old way of changing the brightness will be
still available for compatibility with existing tools.
Signed-off-by: Alessandro Guido <alessandro.guido@gmail.com>
---
Kconfig | 1 +
sony_acpi.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++-----
2 files changed, 49 insertions(+), 5 deletions(-)
Index: linux-2.6.18/drivers/acpi/Kconfig
===================================================================
--- linux-2.6.18.orig/drivers/acpi/Kconfig
+++ linux-2.6.18/drivers/acpi/Kconfig
@@ -251,6 +251,7 @@ config ACPI_TOSHIBA
config ACPI_SONY
tristate "Sony Laptop Extras"
depends on X86 && ACPI
+ select BACKLIGHT_CLASS_DEVICE
default m
---help---
This mini-driver drives the ACPI SNC device present in the
Index: linux-2.6.18/drivers/acpi/sony_acpi.c
===================================================================
--- linux-2.6.18.orig/drivers/acpi/sony_acpi.c
+++ linux-2.6.18/drivers/acpi/sony_acpi.c
@@ -27,13 +27,19 @@
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/types.h>
+#include <linux/backlight.h>
+#include <linux/err.h>
#include <acpi/acpi_drivers.h>
#include <acpi/acpi_bus.h>
#include <asm/uaccess.h>
#define ACPI_SNC_CLASS "sony"
#define ACPI_SNC_HID "SNY5001"
-#define ACPI_SNC_DRIVER_NAME "ACPI Sony Notebook Control Driver v0.2"
+#define ACPI_SNC_DRIVER_NAME "ACPI Sony Notebook Control Driver v0.3"
+
+/* the device uses 1-based values, while the backlight subsystem uses
+ 0-based values */
+#define SONY_MAX_BRIGHTNESS 8
#define LOG_PFX KERN_WARNING "sony_acpi: "
@@ -49,6 +55,16 @@ MODULE_PARM_DESC(debug, "set this to 1 (
static acpi_handle sony_acpi_handle;
static struct proc_dir_entry *sony_acpi_dir;
+static int sony_backlight_update_status(struct backlight_device *bd);
+static int sony_backlight_get_brightness(struct backlight_device *bd);
+static struct backlight_device *sony_backlight_device;
+static struct backlight_properties sony_backlight_properties = {
+ .owner = THIS_MODULE,
+ .update_status = sony_backlight_update_status,
+ .get_brightness = sony_backlight_get_brightness,
+ .max_brightness = SONY_MAX_BRIGHTNESS - 1,
+};
+
static struct sony_acpi_value {
char *name; /* name of the entry */
struct proc_dir_entry *proc; /* /proc entry */
@@ -65,7 +81,7 @@ static struct sony_acpi_value {
.acpiget = "GBRT",
.acpiset = "SBRT",
.min = 1,
- .max = 8,
+ .max = SONY_MAX_BRIGHTNESS,
.debug = 0,
},
{
@@ -73,7 +89,7 @@ static struct sony_acpi_value {
.acpiget = "GPBR",
.acpiset = "SPBR",
.min = 1,
- .max = 8,
+ .max = SONY_MAX_BRIGHTNESS,
.debug = 0,
},
{
@@ -276,6 +292,7 @@ static int sony_acpi_add(struct acpi_dev
{
acpi_status status;
int result;
+ acpi_handle handle;
struct sony_acpi_value *item;
sony_acpi_handle = device->handle;
@@ -303,9 +320,15 @@ static int sony_acpi_add(struct acpi_dev
}
}
- for (item = sony_acpi_values; item->name; ++item) {
- acpi_handle handle;
+ if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, "GBRT", &handle))) {
+ sony_backlight_device = backlight_device_register("sony", NULL,
+ &sony_backlight_properties);
+ if (IS_ERR(sony_backlight_device)) {
+ printk(LOG_PFX "unable to register backlight device\n");
+ }
+ }
+ for (item = sony_acpi_values; item->name; ++item) {
if (!debug && item->debug)
continue;
@@ -358,6 +381,9 @@ static int sony_acpi_remove(struct acpi_
acpi_status status;
struct sony_acpi_value *item;
+ if (sony_backlight_device)
+ backlight_device_unregister(sony_backlight_device);
+
if (debug) {
status = acpi_remove_notify_handler(sony_acpi_handle,
ACPI_DEVICE_NOTIFY,
@@ -375,6 +401,23 @@ static int sony_acpi_remove(struct acpi_
return 0;
}
+static int sony_backlight_update_status(struct backlight_device *bd)
+{
+ return acpi_callsetfunc(sony_acpi_handle, "SBRT",
+ bd->props->brightness + 1,
+ NULL);
+}
+
+static int sony_backlight_get_brightness(struct backlight_device *bd)
+{
+ int value;
+
+ if (acpi_callgetfunc(sony_acpi_handle, "GBRT", &value))
+ return 0;
+ /* brightness levels are 1-based, while backlight ones are 0-based */
+ return value - 1;
+}
+
static struct acpi_driver sony_acpi_driver = {
.name = ACPI_SNC_DRIVER_NAME,
.class = ACPI_SNC_CLASS,
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] acpi: add backlight support to the sony_acpi driver (v2)
2006-11-27 16:43 [PATCH] acpi: add backlight support to the sony_acpi driver (v2) Alessandro Guido
@ 2006-12-01 13:35 ` Pavel Machek
2006-12-01 19:43 ` Henrique de Moraes Holschuh
0 siblings, 1 reply; 7+ messages in thread
From: Pavel Machek @ 2006-12-01 13:35 UTC (permalink / raw)
To: Alessandro Guido; +Cc: linux-kernel, akpm, linux-acpi, len.brown
Hi!
> Enable the sony_acpi driver to use the backlight subsysyem for
> adjusting the monitor brightness. Old way of changing the brightness will be
> still available for compatibility with existing tools.
>
> Signed-off-by: Alessandro Guido <alessandro.guido@gmail.com>
Looks okay to me. We really want unified interface for backlight.
Pavel
--
Thanks for all the (sleeping) penguins.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] acpi: add backlight support to the sony_acpi driver (v2)
2006-12-01 13:35 ` Pavel Machek
@ 2006-12-01 19:43 ` Henrique de Moraes Holschuh
2006-12-02 16:23 ` Pavel Machek
0 siblings, 1 reply; 7+ messages in thread
From: Henrique de Moraes Holschuh @ 2006-12-01 19:43 UTC (permalink / raw)
To: Pavel Machek; +Cc: Alessandro Guido, linux-kernel, akpm, linux-acpi, len.brown
On Fri, 01 Dec 2006, Pavel Machek wrote:
> Looks okay to me. We really want unified interface for backlight.
Then I request some help to get
http://article.gmane.org/gmane.linux.acpi.devel/19792
merged.
Without it, the backlight interface becomes annoying on laptops. Your
screen will be powered off when you remove the modules providing the
backlight interface. This is not consistent with the needs of laptop
backlight devices, or with the behaviour the drivers had before the
backlight sysfs support was added.
--
"One disk to rule them all, One disk to find them. One disk to bring
them all and in the darkness grind them. In the Land of Redmond
where the shadows lie." -- The Silicon Valley Tarot
Henrique Holschuh
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] acpi: add backlight support to the sony_acpi driver (v2)
2006-12-01 19:43 ` Henrique de Moraes Holschuh
@ 2006-12-02 16:23 ` Pavel Machek
2006-12-06 15:25 ` James Simmons
0 siblings, 1 reply; 7+ messages in thread
From: Pavel Machek @ 2006-12-02 16:23 UTC (permalink / raw)
To: Henrique de Moraes Holschuh
Cc: Alessandro Guido, linux-kernel, akpm, linux-acpi, len.brown
Hi!
> > Looks okay to me. We really want unified interface for backlight.
>
> Then I request some help to get
> http://article.gmane.org/gmane.linux.acpi.devel/19792
> merged.
>
> Without it, the backlight interface becomes annoying on laptops. Your
> screen will be powered off when you remove the modules providing the
> backlight interface. This is not consistent with the needs of laptop
> backlight devices, or with the behaviour the drivers had before the
> backlight sysfs support was added.
Just retransmit it to akpm and list, and add acked-by headers with
people who said patch is okay... that included me IIRC.
--
Thanks for all the (sleeping) penguins.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] acpi: add backlight support to the sony_acpi driver (v2)
2006-12-02 16:23 ` Pavel Machek
@ 2006-12-06 15:25 ` James Simmons
2006-12-06 18:54 ` Pavel Machek
0 siblings, 1 reply; 7+ messages in thread
From: James Simmons @ 2006-12-06 15:25 UTC (permalink / raw)
To: Pavel Machek
Cc: Henrique de Moraes Holschuh, Alessandro Guido, linux-kernel,
akpm, linux-acpi, len.brown
Its nice to see acpi moving to the backlight api. Will acpi also move to
hwmon and led class support ?
On Sat, 2 Dec 2006, Pavel Machek wrote:
> Hi!
>
> > > Looks okay to me. We really want unified interface for backlight.
> >
> > Then I request some help to get
> > http://article.gmane.org/gmane.linux.acpi.devel/19792
> > merged.
> >
> > Without it, the backlight interface becomes annoying on laptops. Your
> > screen will be powered off when you remove the modules providing the
> > backlight interface. This is not consistent with the needs of laptop
> > backlight devices, or with the behaviour the drivers had before the
> > backlight sysfs support was added.
>
> Just retransmit it to akpm and list, and add acked-by headers with
> people who said patch is okay... that included me IIRC.
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] acpi: add backlight support to the sony_acpi driver (v2)
2006-12-06 15:25 ` James Simmons
@ 2006-12-06 18:54 ` Pavel Machek
2006-12-07 9:57 ` Stefan Schmidt
0 siblings, 1 reply; 7+ messages in thread
From: Pavel Machek @ 2006-12-06 18:54 UTC (permalink / raw)
To: James Simmons
Cc: Henrique de Moraes Holschuh, Alessandro Guido, linux-kernel,
akpm, linux-acpi, len.brown
Please don't top-post...
> Its nice to see acpi moving to the backlight api. Will acpi also move to
> hwmon and led class support ?
It would be nice... ACPI does not drive many leds ... usually ... but
creating battery API based on hwmon and moving ACPI battery support to
that API would certainly be nice... and I believe it is ongoing work.
Pavel
> > Hi!
> >
> > > > Looks okay to me. We really want unified interface for backlight.
> > >
> > > Then I request some help to get
> > > http://article.gmane.org/gmane.linux.acpi.devel/19792
> > > merged.
> > >
> > > Without it, the backlight interface becomes annoying on laptops. Your
> > > screen will be powered off when you remove the modules providing the
> > > backlight interface. This is not consistent with the needs of laptop
> > > backlight devices, or with the behaviour the drivers had before the
> > > backlight sysfs support was added.
> >
> > Just retransmit it to akpm and list, and add acked-by headers with
> > people who said patch is okay... that included me IIRC.
> >
> >
--
Thanks, Sharp!
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] acpi: add backlight support to the sony_acpi driver (v2)
2006-12-06 18:54 ` Pavel Machek
@ 2006-12-07 9:57 ` Stefan Schmidt
0 siblings, 0 replies; 7+ messages in thread
From: Stefan Schmidt @ 2006-12-07 9:57 UTC (permalink / raw)
To: Pavel Machek
Cc: James Simmons, Henrique de Moraes Holschuh, Alessandro Guido,
linux-kernel, akpm, len.brown
[-- Attachment #1: Type: text/plain, Size: 371 bytes --]
Hello.
On Wed, 2006-12-06 at 19:54, Pavel Machek wrote:
>
> Please don't top-post...
>
> > Its nice to see acpi moving to the backlight api. Will acpi also move to
> > hwmon and led class support ?
>
> It would be nice... ACPI does not drive many leds ... usually ...
I work on led class support for ibm-acpi. It's on is way.
regards
Stefan Schmidt
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 241 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2006-12-07 9:56 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-11-27 16:43 [PATCH] acpi: add backlight support to the sony_acpi driver (v2) Alessandro Guido
2006-12-01 13:35 ` Pavel Machek
2006-12-01 19:43 ` Henrique de Moraes Holschuh
2006-12-02 16:23 ` Pavel Machek
2006-12-06 15:25 ` James Simmons
2006-12-06 18:54 ` Pavel Machek
2006-12-07 9:57 ` Stefan Schmidt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).