asus-laptop: use acpi_evaluate_integer instead of read_acpi_int
Use acpi_evaluate_integer() instead of read_acpi_int() Signed-off-by: Corentin Chary <corentincj@iksaif.net> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
be521466fe
commit
9a81685006
1 changed files with 34 additions and 34 deletions
|
@ -245,32 +245,19 @@ static int write_acpi_int(acpi_handle handle, const char *method, int val,
|
|||
return (status == AE_OK);
|
||||
}
|
||||
|
||||
static int read_acpi_int(acpi_handle handle, const char *method, int *val,
|
||||
struct acpi_object_list *params)
|
||||
{
|
||||
struct acpi_buffer output;
|
||||
union acpi_object out_obj;
|
||||
acpi_status status;
|
||||
|
||||
output.length = sizeof(out_obj);
|
||||
output.pointer = &out_obj;
|
||||
|
||||
status = acpi_evaluate_object(handle, (char *)method, params, &output);
|
||||
*val = out_obj.integer.value;
|
||||
return (status == AE_OK) && (out_obj.type == ACPI_TYPE_INTEGER);
|
||||
}
|
||||
|
||||
static int read_wireless_status(int mask)
|
||||
{
|
||||
int status;
|
||||
ulong status;
|
||||
acpi_status rv = AE_OK;
|
||||
|
||||
if (!wireless_status_handle)
|
||||
return (hotk->status & mask) ? 1 : 0;
|
||||
|
||||
if (read_acpi_int(wireless_status_handle, NULL, &status, NULL)) {
|
||||
return (status & mask) ? 1 : 0;
|
||||
} else
|
||||
rv = acpi_evaluate_integer(wireless_status_handle, NULL, NULL, &status);
|
||||
if (ACPI_FAILURE(rv))
|
||||
printk(ASUS_WARNING "Error reading Wireless status\n");
|
||||
else
|
||||
return (status & mask) ? 1 : 0;
|
||||
|
||||
return (hotk->status & mask) ? 1 : 0;
|
||||
}
|
||||
|
@ -354,9 +341,11 @@ static void lcd_blank(int blank)
|
|||
|
||||
static int read_brightness(struct backlight_device *bd)
|
||||
{
|
||||
int value;
|
||||
ulong value;
|
||||
acpi_status rv = AE_OK;
|
||||
|
||||
if (!read_acpi_int(brightness_get_handle, NULL, &value, NULL))
|
||||
rv = acpi_evaluate_integer(brightness_get_handle, NULL, NULL, &value);
|
||||
if (ACPI_FAILURE(rv))
|
||||
printk(ASUS_WARNING "Error reading brightness\n");
|
||||
|
||||
return value;
|
||||
|
@ -403,8 +392,10 @@ static ssize_t show_infos(struct device *dev,
|
|||
struct device_attribute *attr, char *page)
|
||||
{
|
||||
int len = 0;
|
||||
int temp;
|
||||
ulong temp;
|
||||
char buf[16]; //enough for all info
|
||||
acpi_status rv = AE_OK;
|
||||
|
||||
/*
|
||||
* We use the easy way, we don't care of off and count, so we don't set eof
|
||||
* to 1
|
||||
|
@ -418,9 +409,10 @@ static ssize_t show_infos(struct device *dev,
|
|||
* bit signifies that the laptop is equipped with a Wi-Fi MiniPCI card.
|
||||
* The significance of others is yet to be found.
|
||||
*/
|
||||
if (read_acpi_int(hotk->handle, "SFUN", &temp, NULL))
|
||||
len +=
|
||||
sprintf(page + len, "SFUN value : 0x%04x\n", temp);
|
||||
rv = acpi_evaluate_integer(hotk->handle, "SFUN", NULL, &temp);
|
||||
if (!ACPI_FAILURE(rv))
|
||||
len += sprintf(page + len, "SFUN value : 0x%04x\n",
|
||||
(uint) temp);
|
||||
/*
|
||||
* Another value for userspace: the ASYM method returns 0x02 for
|
||||
* battery low and 0x04 for battery critical, its readings tend to be
|
||||
|
@ -428,9 +420,10 @@ static ssize_t show_infos(struct device *dev,
|
|||
* Note: since not all the laptops provide this method, errors are
|
||||
* silently ignored.
|
||||
*/
|
||||
if (read_acpi_int(hotk->handle, "ASYM", &temp, NULL))
|
||||
len +=
|
||||
sprintf(page + len, "ASYM value : 0x%04x\n", temp);
|
||||
rv = acpi_evaluate_integer(hotk->handle, "ASYM", NULL, &temp);
|
||||
if (!ACPI_FAILURE(rv))
|
||||
len += sprintf(page + len, "ASYM value : 0x%04x\n",
|
||||
(uint) temp);
|
||||
if (asus_info) {
|
||||
snprintf(buf, 16, "%d", asus_info->length);
|
||||
len += sprintf(page + len, "DSDT length : %s\n", buf);
|
||||
|
@ -547,12 +540,15 @@ static void set_display(int value)
|
|||
|
||||
static int read_display(void)
|
||||
{
|
||||
int value = 0;
|
||||
ulong value = 0;
|
||||
acpi_status rv = AE_OK;
|
||||
|
||||
/* In most of the case, we know how to set the display, but sometime
|
||||
we can't read it */
|
||||
if (display_get_handle) {
|
||||
if (!read_acpi_int(display_get_handle, NULL, &value, NULL))
|
||||
rv = acpi_evaluate_integer(display_get_handle, NULL,
|
||||
NULL, &value);
|
||||
if (ACPI_FAILURE(rv))
|
||||
printk(ASUS_WARNING "Error reading display status\n");
|
||||
}
|
||||
|
||||
|
@ -771,7 +767,7 @@ static int asus_hotk_get_info(void)
|
|||
{
|
||||
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
union acpi_object *model = NULL;
|
||||
int bsts_result, hwrs_result;
|
||||
ulong bsts_result, hwrs_result;
|
||||
char *string = NULL;
|
||||
acpi_status status;
|
||||
|
||||
|
@ -794,11 +790,13 @@ static int asus_hotk_get_info(void)
|
|||
}
|
||||
|
||||
/* This needs to be called for some laptops to init properly */
|
||||
if (!read_acpi_int(hotk->handle, "BSTS", &bsts_result, NULL))
|
||||
status =
|
||||
acpi_evaluate_integer(hotk->handle, "BSTS", NULL, &bsts_result);
|
||||
if (ACPI_FAILURE(status))
|
||||
printk(ASUS_WARNING "Error calling BSTS\n");
|
||||
else if (bsts_result)
|
||||
printk(ASUS_NOTICE "BSTS called, 0x%02x returned\n",
|
||||
bsts_result);
|
||||
(uint) bsts_result);
|
||||
|
||||
/*
|
||||
* Try to match the object returned by INIT to the specific model.
|
||||
|
@ -840,7 +838,9 @@ static int asus_hotk_get_info(void)
|
|||
* The significance of others is yet to be found.
|
||||
* If we don't find the method, we assume the device are present.
|
||||
*/
|
||||
if (!read_acpi_int(hotk->handle, "HRWS", &hwrs_result, NULL))
|
||||
status =
|
||||
acpi_evaluate_integer(hotk->handle, "HRWS", NULL, &hwrs_result);
|
||||
if (ACPI_FAILURE(status))
|
||||
hwrs_result = WL_HWRS | BT_HWRS;
|
||||
|
||||
if (hwrs_result & WL_HWRS)
|
||||
|
|
Loading…
Reference in a new issue