Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f4f461f authored by Andrew Morton's avatar Andrew Morton Committed by Len Brown
Browse files

sony_acpi: Avoid dimness on resume.



Doesn't work.

Cc: Stelian Pop <stelian@popies.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarMattia Dongili <malattia@linux.it>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 7f09c432
Loading
Loading
Loading
Loading
+34 −15
Original line number Diff line number Diff line
@@ -46,19 +46,6 @@ module_param(debug, int, 0);
MODULE_PARM_DESC(debug, "set this to 1 (and RTFM) if you want to help "
			"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 struct proc_dir_entry *sony_acpi_dir;

@@ -69,6 +56,8 @@ static struct sony_acpi_value {
	char			*acpiset;/* name of the ACPI get function */
	int 			min;	 /* minimum 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 ? */
} 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)
		return -EIO;

	item->value = value;
	item->valid = 1;
	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)
{
	printk(LOG_PFX "sony_acpi_notify\n");
@@ -344,7 +353,6 @@ static int sony_acpi_add(struct acpi_device *device)
	return result;
}


static int sony_acpi_remove(struct acpi_device *device, int type)
{
	acpi_status status;
@@ -367,6 +375,17 @@ static int sony_acpi_remove(struct acpi_device *device, int type)
	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)
{
	int result;