sony_acpi: Avoid dimness on resume.

Doesn't work.

Cc: Stelian Pop <stelian@popies.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Mattia Dongili <malattia@linux.it>
Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Andrew Morton 2007-01-13 23:04:32 +01:00 committed by Len Brown
parent 7f09c432be
commit 3f4f461fa8
1 changed files with 34 additions and 15 deletions

View File

@ -46,19 +46,6 @@ module_param(debug, int, 0);
MODULE_PARM_DESC(debug, "set this to 1 (and RTFM) if you want to help " MODULE_PARM_DESC(debug, "set this to 1 (and RTFM) if you want to help "
"the development of this driver"); "the development of this driver");
static int sony_acpi_add (struct acpi_device *device);
static int sony_acpi_remove (struct acpi_device *device, int type);
static struct acpi_driver sony_acpi_driver = {
.name = ACPI_SNC_DRIVER_NAME,
.class = ACPI_SNC_CLASS,
.ids = ACPI_SNC_HID,
.ops = {
.add = sony_acpi_add,
.remove = sony_acpi_remove,
},
};
static acpi_handle sony_acpi_handle; static acpi_handle sony_acpi_handle;
static struct proc_dir_entry *sony_acpi_dir; static struct proc_dir_entry *sony_acpi_dir;
@ -69,6 +56,8 @@ static struct sony_acpi_value {
char *acpiset;/* name of the ACPI get function */ char *acpiset;/* name of the ACPI get function */
int min; /* minimum allowed value or -1 */ int min; /* minimum allowed value or -1 */
int max; /* maximum allowed value or -1 */ int max; /* maximum allowed value or -1 */
int value; /* current setting */
int valid; /* Has ever been set */
int debug; /* active only in debug mode ? */ int debug; /* active only in debug mode ? */
} sony_acpi_values[] = { } sony_acpi_values[] = {
{ {
@ -239,10 +228,30 @@ static int sony_acpi_write(struct file *file, const char __user *buffer,
if (acpi_callsetfunc(sony_acpi_handle, item->acpiset, value, NULL) < 0) if (acpi_callsetfunc(sony_acpi_handle, item->acpiset, value, NULL) < 0)
return -EIO; return -EIO;
item->value = value;
item->valid = 1;
return count; return count;
} }
static int sony_acpi_resume(struct acpi_device *device, int state)
{
struct sony_acpi_value *item;
for (item = sony_acpi_values; item->name; item++) {
int ret;
if (!item->valid)
continue;
ret = acpi_callsetfunc(sony_acpi_handle, item->acpiset,
item->value, NULL);
if (ret < 0) {
printk("%s: %d\n", __FUNCTION__, ret);
break;
}
}
return 0;
}
static void sony_acpi_notify(acpi_handle handle, u32 event, void *data) static void sony_acpi_notify(acpi_handle handle, u32 event, void *data)
{ {
printk(LOG_PFX "sony_acpi_notify\n"); printk(LOG_PFX "sony_acpi_notify\n");
@ -344,7 +353,6 @@ static int sony_acpi_add(struct acpi_device *device)
return result; return result;
} }
static int sony_acpi_remove(struct acpi_device *device, int type) static int sony_acpi_remove(struct acpi_device *device, int type)
{ {
acpi_status status; acpi_status status;
@ -367,6 +375,17 @@ static int sony_acpi_remove(struct acpi_device *device, int type)
return 0; return 0;
} }
static struct acpi_driver sony_acpi_driver = {
.name = ACPI_SNC_DRIVER_NAME,
.class = ACPI_SNC_CLASS,
.ids = ACPI_SNC_HID,
.ops = {
.add = sony_acpi_add,
.remove = sony_acpi_remove,
.resume = sony_acpi_resume,
},
};
static int __init sony_acpi_init(void) static int __init sony_acpi_init(void)
{ {
int result; int result;