thinkpad-acpi: fix BEEP ACPI handler warnings
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>
This commit is contained in:
parent
7d95a3d564
commit
60201732f0
|
@ -264,6 +264,7 @@ static struct {
|
||||||
u32 wan:1;
|
u32 wan:1;
|
||||||
u32 uwb:1;
|
u32 uwb:1;
|
||||||
u32 fan_ctrl_status_undef:1;
|
u32 fan_ctrl_status_undef:1;
|
||||||
|
u32 beep_needs_two_args:1;
|
||||||
u32 input_device_registered:1;
|
u32 input_device_registered:1;
|
||||||
u32 platform_drv_registered:1;
|
u32 platform_drv_registered:1;
|
||||||
u32 platform_drv_attrs_registered:1;
|
u32 platform_drv_attrs_registered:1;
|
||||||
|
@ -5142,8 +5143,17 @@ static struct ibm_struct led_driver_data = {
|
||||||
|
|
||||||
TPACPI_HANDLE(beep, ec, "BEEP"); /* all except R30, R31 */
|
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)
|
static int __init beep_init(struct ibm_init_struct *iibm)
|
||||||
{
|
{
|
||||||
|
unsigned long quirks;
|
||||||
|
|
||||||
vdbg_printk(TPACPI_DBG_INIT, "initializing beep subdriver\n");
|
vdbg_printk(TPACPI_DBG_INIT, "initializing beep subdriver\n");
|
||||||
|
|
||||||
TPACPI_ACPIHANDLE_INIT(beep);
|
TPACPI_ACPIHANDLE_INIT(beep);
|
||||||
|
@ -5151,6 +5161,11 @@ static int __init beep_init(struct ibm_init_struct *iibm)
|
||||||
vdbg_printk(TPACPI_DBG_INIT, "beep is %s\n",
|
vdbg_printk(TPACPI_DBG_INIT, "beep is %s\n",
|
||||||
str_supported(beep_handle != NULL));
|
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;
|
return (beep_handle)? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5182,8 +5197,15 @@ static int beep_write(char *buf)
|
||||||
/* beep_cmd set */
|
/* beep_cmd set */
|
||||||
} else
|
} else
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (!acpi_evalf(beep_handle, NULL, NULL, "vdd", beep_cmd, 0))
|
if (tp_features.beep_needs_two_args) {
|
||||||
return -EIO;
|
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;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue