提交 57ede701 编写于 作者: M Mattia Dongili 提交者: Len Brown

sony_acpi: Allow multiple sony_acpi_values for the same .name

The acpi handles are kept _only_ if both the requested .acpiget and .acpiset
are available in the DSDT.
Currently only the SCDP/CDPW dualism is known.
Signed-off-by: NMattia Dongili <malattia@linux.it>
Signed-off-by: NLen Brown <len.brown@intel.com>
上级 4465857d
......@@ -68,7 +68,7 @@ static struct backlight_properties sony_backlight_properties = {
static struct sony_acpi_value {
char *name; /* name of the entry */
struct proc_dir_entry *proc; /* /proc entry */
struct proc_dir_entry *proc; /* /proc entry */
char *acpiget;/* name of the ACPI get function */
char *acpiset;/* name of the ACPI get function */
int min; /* minimum allowed value or -1 */
......@@ -78,6 +78,7 @@ static struct sony_acpi_value {
int debug; /* active only in debug mode ? */
} sony_acpi_values[] = {
{
/* for backward compatibility only */
.name = "brightness",
.acpiget = "GBRT",
.acpiset = "SBRT",
......@@ -106,6 +107,14 @@ static struct sony_acpi_value {
.max = 1,
.debug = 0,
},
{
.name = "cdpower",
.acpiget = "GCDP",
.acpiset = "CDPW",
.min = 0,
.max = 1,
.debug = 0,
},
{
.name = "audiopower",
.acpiget = "GAZP",
......@@ -356,27 +365,24 @@ static int sony_acpi_add(struct acpi_device *device)
if (!debug && item->debug)
continue;
if (item->acpiget &&
ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle,
item->acpiget, &handle)))
proc_file_mode = S_IRUSR;
else
printk(LOG_PFX "unable to get ACPI handle for %s (get)\n",
item->name);
if (item->acpiset &&
ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle,
item->acpiset, &handle)))
proc_file_mode |= S_IWUSR;
else
printk(LOG_PFX "unable to get ACPI handle for %s (set)\n",
item->name);
if (item->acpiget) {
if (ACPI_FAILURE(acpi_get_handle(sony_acpi_handle,
item->acpiget, &handle)))
continue;
if (proc_file_mode == 0)
continue;
proc_file_mode |= S_IRUSR;
}
if (item->acpiset) {
if (ACPI_FAILURE(acpi_get_handle(sony_acpi_handle,
item->acpiset, &handle)))
continue;
proc_file_mode |= S_IWUSR;
}
item->proc = create_proc_entry(item->name, proc_file_mode,
acpi_device_dir(device));
acpi_device_dir(device));
if (!item->proc) {
printk(LOG_PFX "unable to create proc entry\n");
result = -EIO;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册