]> Devoid-pointer.net GitWeb - omnibook.git/commitdiff
* Add support for 2.6.20+ new workqueue API
authorMathieu Bérard <mathieu.berard@crans.org>
Sun, 17 Dec 2006 15:40:20 +0000 (15:40 +0000)
committerMathieu Bérard <mathieu.berard@crans.org>
Sun, 17 Dec 2006 15:40:20 +0000 (15:40 +0000)
nbsmi.c
polling.c

diff --git a/nbsmi.c b/nbsmi.c
index 996050cc4a97c9a8c77a42854fa487c425b5a428..bef719c19122bf5a582cca95e1c430e832b78382 100644 (file)
--- a/nbsmi.c
+++ b/nbsmi.c
@@ -427,7 +427,11 @@ static const struct {
        { 0,0},
 };
 
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19))
+static void omnibook_handle_fnkey(struct work_struct *work);
+#else
 static void omnibook_handle_fnkey(void* data);
+#endif
 
 /*
  * Register the input handler and the input device in the input subsystem
@@ -460,8 +464,13 @@ static int register_input_subsystem(struct nbsmi_backend_data *priv_data)
 
        priv_data->nbsmi_input_dev = nbsmi_input_dev;
 
-       INIT_WORK(&priv_data->fnkey_work, *omnibook_handle_fnkey, priv_data);
-       
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19))
+       INIT_WORK(&priv_data->fnkey_work, *omnibook_handle_fnkey);
+#else
+       INIT_WORK(&priv_data->fnkey_work, *omnibook_handle_fnkey, NULL);
+#endif
+
+
        hook_handler.private = priv_data;
 
 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18))
@@ -684,7 +693,11 @@ static const struct omnibook_operation last_scan_op = SIMPLE_BYTE(SMI,SMI_GET_FN
 /*
  * Workqueue handler for Fn hotkeys
  */
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19))
+static void omnibook_handle_fnkey(struct work_struct *work)
+#else
 static void omnibook_handle_fnkey(void* data)
+#endif
 {
        int i;
        u8 gen_scan;
@@ -706,7 +719,11 @@ static void omnibook_handle_fnkey(void* data)
        for(i = 0 ; i < ARRAY_SIZE(nbsmi_scan_table); i++) {
                if( gen_scan == nbsmi_scan_table[i].scancode) {
                        dprintk("generating keycode %i.\n", nbsmi_scan_table[i].keycode);
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19))
+                       input_dev = container_of(work, struct nbsmi_backend_data, fnkey_work)->nbsmi_input_dev;
+#else
                        input_dev = ((struct nbsmi_backend_data *) data)->nbsmi_input_dev;
+#endif
                        omnibook_report_key(input_dev, nbsmi_scan_table[i].keycode);
                        break;
                }
index 3265bb9f8c2cecb47f32103fc5fb6e51d99597bc..b67f1a108933c25eda8b5ad90533cad28b86b303 100644 (file)
--- a/polling.c
+++ b/polling.c
@@ -34,24 +34,30 @@ static struct workqueue_struct *omnibook_wq;
 static int key_polling_enabled;
 static DEFINE_MUTEX(poll_mutex);
 
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19))
+static void omnibook_key_poller(struct work_struct *work);
+DECLARE_DELAYED_WORK(omnibook_poll_work, *omnibook_key_poller);
+#else
 static void omnibook_key_poller(void *data);
-static struct omnibook_feature key_polling_driver;
-static DECLARE_WORK(omnibook_poll_work, *omnibook_key_poller, &key_polling_driver.io_op);
+DECLARE_WORK(omnibook_poll_work, *omnibook_key_poller, NULL);
+#endif
 
+static struct omnibook_feature key_polling_driver;
 static struct input_dev *poll_input_dev;
 
-static void omnibook_key_poller(void *data)
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19))
+       static void omnibook_key_poller(struct work_struct *work)
+#else
+       static void omnibook_key_poller(void *data)
+#endif
 {
        u8 q0a;
        int retval;
-       struct omnibook_operation *io_op;
-
-       io_op = *( (struct omnibook_operation **) data);
 
-       mutex_lock(&io_op->backend->mutex);
-       __backend_byte_read(io_op, &q0a);
-       __backend_byte_write(io_op, 0);
-       mutex_unlock(&io_op->backend->mutex);
+       mutex_lock(&key_polling_driver.io_op->backend->mutex);
+       __backend_byte_read(key_polling_driver.io_op, &q0a);
+       __backend_byte_write(key_polling_driver.io_op, 0);
+       mutex_unlock(&key_polling_driver.io_op->backend->mutex);
 
 #ifdef OMNIBOOK_DEBUG
        if (unlikely(q0a & XE3GC_SLPB_MASK))