diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/acpi/ec.c | 24 |
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); | |||
76 | static int acpi_ec_start (struct acpi_device *device); | 76 | static int acpi_ec_start (struct acpi_device *device); |
77 | static int acpi_ec_stop (struct acpi_device *device, int type); | 77 | static int acpi_ec_stop (struct acpi_device *device, int type); |
78 | static int acpi_ec_burst_add ( struct acpi_device *device); | 78 | static int acpi_ec_burst_add ( struct acpi_device *device); |
79 | static int acpi_ec_polling_add ( struct acpi_device *device); | ||
79 | 80 | ||
80 | static struct acpi_driver acpi_ec_driver = { | 81 | static 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 */ |
166 | static struct acpi_device *first_ec; | 167 | static struct acpi_device *first_ec; |
167 | static int acpi_ec_polling_mode; | 168 | static 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); |
1714 | static int __init acpi_ec_set_polling_mode(char *str) | 1716 | static 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); |