Subject: [PATCH] [acpi ec] Add setup option to choose interrupt/polling mode - Create drivers/acpi/drivers/ec/setup.c - Add ec_intr= setup option - Add ec_poll_mode variable and EC_MODE_INTR and EC_MODE_POLL values for it. Signed-off-by: Patrick Mochel --- drivers/acpi/drivers/ec/driver.c | 3 +++ drivers/acpi/drivers/ec/ec.h | 10 ++++++++++ drivers/acpi/drivers/ec/setup.c | 22 ++++++++++++++++++++++ 3 files changed, 35 insertions(+), 0 deletions(-) create mode 100644 drivers/acpi/drivers/ec/setup.c applies-to: 4dccc3371236d46be2873c6058f7e4ef2a35a283 e660c434ce03bb192c088927b588a7c384800e1b diff --git a/drivers/acpi/drivers/ec/driver.c b/drivers/acpi/drivers/ec/driver.c index 4e48e1e..ad53ace 100644 --- a/drivers/acpi/drivers/ec/driver.c +++ b/drivers/acpi/drivers/ec/driver.c @@ -15,6 +15,9 @@ #include #include "ec.h" +int ec_poll_mode = EC_MODE_INTR; + + static int ec_add(struct acpi_dev * ad) { struct acpi_ec * ae; diff --git a/drivers/acpi/drivers/ec/ec.h b/drivers/acpi/drivers/ec/ec.h index a6f2bda..e46990a 100644 --- a/drivers/acpi/drivers/ec/ec.h +++ b/drivers/acpi/drivers/ec/ec.h @@ -14,6 +14,10 @@ ACPI_MODULE_NAME("acpi_ec"); #define ACPI_EC_HID "PNP0C09" +enum { + EC_MODE_POLL = 0, + EC_MODE_INTR = 0, +}; struct acpi_ec { struct acpi_dev * e_ad; @@ -27,6 +31,12 @@ struct acpi_ec { struct acpi_generic_address e_data; }; + +/* + * driver.c + */ +extern int ec_poll_mode; + /* * device.c */ diff --git a/drivers/acpi/drivers/ec/setup.c b/drivers/acpi/drivers/ec/setup.c new file mode 100644 index 0000000..b951dbe --- /dev/null +++ b/drivers/acpi/drivers/ec/setup.c @@ -0,0 +1,22 @@ + +#include "ec.h" + + +static int __init setup_ec_mode(char *str) +{ + int intr; + + if (!get_option(&str, &intr)) + return 0; + + if (intr) + ec_poll_mode = EC_MODE_INTR; + else + ec_poll_mode = EC_MODE_POLL; + + printk(KERN_INFO PREFIX "EC %s mode.\n", + intr ? "interrupt" : "polling"); + return 0; +} + +__setup("ec_intr=", setup_ec_mode); --- 0.99.9.GIT