Skip to content

Commit

Permalink
thinkpad-acpi: fix BEEP ACPI handler warnings
Browse files Browse the repository at this point in the history
Some ThinkPads want two arguments for BEEP, while others want just
one, causing ACPICA to log warnings like this:

ACPI Warning (nseval-0177): Excess arguments - method [BEEP] needs 1,
found 2 [20080926]

Deal with it.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Henrique de Moraes Holschuh authored and Len Brown committed Jun 18, 2009
1 parent 7d95a3d commit 6020173
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions drivers/platform/x86/thinkpad_acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ static struct {
u32 wan:1;
u32 uwb:1;
u32 fan_ctrl_status_undef:1;
u32 beep_needs_two_args:1;
u32 input_device_registered:1;
u32 platform_drv_registered:1;
u32 platform_drv_attrs_registered:1;
Expand Down Expand Up @@ -5142,15 +5143,29 @@ static struct ibm_struct led_driver_data = {

TPACPI_HANDLE(beep, ec, "BEEP"); /* all except R30, R31 */

#define TPACPI_BEEP_Q1 0x0001

static const struct tpacpi_quirk beep_quirk_table[] __initconst = {
TPACPI_Q_IBM('I', 'M', TPACPI_BEEP_Q1), /* 570 */
TPACPI_Q_IBM('I', 'U', TPACPI_BEEP_Q1), /* 570E - unverified */
};

static int __init beep_init(struct ibm_init_struct *iibm)
{
unsigned long quirks;

vdbg_printk(TPACPI_DBG_INIT, "initializing beep subdriver\n");

TPACPI_ACPIHANDLE_INIT(beep);

vdbg_printk(TPACPI_DBG_INIT, "beep is %s\n",
str_supported(beep_handle != NULL));

quirks = tpacpi_check_quirks(beep_quirk_table,
ARRAY_SIZE(beep_quirk_table));

tp_features.beep_needs_two_args = !!(quirks & TPACPI_BEEP_Q1);

return (beep_handle)? 0 : 1;
}

Expand Down Expand Up @@ -5182,8 +5197,15 @@ static int beep_write(char *buf)
/* beep_cmd set */
} else
return -EINVAL;
if (!acpi_evalf(beep_handle, NULL, NULL, "vdd", beep_cmd, 0))
return -EIO;
if (tp_features.beep_needs_two_args) {
if (!acpi_evalf(beep_handle, NULL, NULL, "vdd",
beep_cmd, 0))
return -EIO;
} else {
if (!acpi_evalf(beep_handle, NULL, NULL, "vd",
beep_cmd))
return -EIO;
}
}

return 0;
Expand Down

0 comments on commit 6020173

Please sign in to comment.