aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/ec.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 2dadb7f63269..1ac5731d45e5 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -76,13 +76,14 @@ static int acpi_ec_remove (struct acpi_device *device, int type);
76static int acpi_ec_start (struct acpi_device *device); 76static int acpi_ec_start (struct acpi_device *device);
77static int acpi_ec_stop (struct acpi_device *device, int type); 77static int acpi_ec_stop (struct acpi_device *device, int type);
78static int acpi_ec_burst_add ( struct acpi_device *device); 78static int acpi_ec_burst_add ( struct acpi_device *device);
79static int acpi_ec_polling_add ( struct acpi_device *device);
79 80
80static struct acpi_driver acpi_ec_driver = { 81static struct acpi_driver acpi_ec_driver = {
81 .name = ACPI_EC_DRIVER_NAME, 82 .name = ACPI_EC_DRIVER_NAME,
82 .class = ACPI_EC_CLASS, 83 .class = ACPI_EC_CLASS,
83 .ids = ACPI_EC_HID, 84 .ids = ACPI_EC_HID,
84 .ops = { 85 .ops = {
85 .add = acpi_ec_burst_add, 86 .add = acpi_ec_polling_add,
86 .remove = acpi_ec_remove, 87 .remove = acpi_ec_remove,
87 .start = acpi_ec_start, 88 .start = acpi_ec_start,
88 .stop = acpi_ec_stop, 89 .stop = acpi_ec_stop,
@@ -164,7 +165,7 @@ static union acpi_ec *ec_ecdt;
164 165
165/* External interfaces use first EC only, so remember */ 166/* External interfaces use first EC only, so remember */
166static struct acpi_device *first_ec; 167static struct acpi_device *first_ec;
167static int acpi_ec_polling_mode; 168static int acpi_ec_polling_mode = EC_POLLING;
168 169
169/* -------------------------------------------------------------------------- 170/* --------------------------------------------------------------------------
170 Transaction Management 171 Transaction Management
@@ -1710,11 +1711,24 @@ static int __init acpi_fake_ecdt_setup(char *str)
1710 acpi_fake_ecdt_enabled = 1; 1711 acpi_fake_ecdt_enabled = 1;
1711 return 0; 1712 return 0;
1712} 1713}
1714
1713__setup("acpi_fake_ecdt", acpi_fake_ecdt_setup); 1715__setup("acpi_fake_ecdt", acpi_fake_ecdt_setup);
1714static int __init acpi_ec_set_polling_mode(char *str) 1716static int __init acpi_ec_set_polling_mode(char *str)
1715{ 1717{
1716 acpi_ec_polling_mode = EC_POLLING; 1718 int burst;
1717 acpi_ec_driver.ops.add = acpi_ec_polling_add; 1719
1720 if (!get_option(&str, &burst))
1721 return 0;
1722
1723 if (burst) {
1724 acpi_ec_polling_mode = EC_BURST;
1725 acpi_ec_driver.ops.add = acpi_ec_burst_add;
1726 } else {
1727 acpi_ec_polling_mode = EC_POLLING;
1728 acpi_ec_driver.ops.add = acpi_ec_polling_add;
1729 }
1730 printk(KERN_INFO PREFIX "EC %s mode.\n",
1731 burst ? "burst": "polling");
1718 return 0; 1732 return 0;
1719} 1733}
1720__setup("ec_polling", acpi_ec_set_polling_mode); 1734__setup("ec_burst=", acpi_ec_set_polling_mode);