HID: wiimote: Add extension initializer stubs
authorDavid Herrmann <dh.herrmann@googlemail.com>
Thu, 17 Nov 2011 13:12:02 +0000 (14:12 +0100)
committerJiri Kosina <jkosina@suse.cz>
Tue, 22 Nov 2011 22:08:40 +0000 (23:08 +0100)
Add stub functions to read and identify extensions and then initialize all
connected extensions.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-wiimote-ext.c

index fa9c67722acaf13c22bb0a5eb3a72ff2439fbe94..3e3e1fc8d838750272b41edfcaa25aaa28d82cdf 100644 (file)
@@ -33,10 +33,48 @@ enum wiiext_type {
        WIIEXT_NUNCHUCK,        /* Nintendo nunchuck controller */
 };
 
+/* diable all extensions */
+static void ext_disable(struct wiimote_ext *ext)
+{
+       unsigned long flags;
+
+       spin_lock_irqsave(&ext->wdata->state.lock, flags);
+       ext->motionp = false;
+       ext->ext_type = WIIEXT_NONE;
+       spin_unlock_irqrestore(&ext->wdata->state.lock, flags);
+}
+
+static bool motionp_read(struct wiimote_ext *ext)
+{
+       return false;
+}
+
+static __u8 ext_read(struct wiimote_ext *ext)
+{
+       return WIIEXT_NONE;
+}
+
+static void ext_enable(struct wiimote_ext *ext, bool motionp, __u8 ext_type)
+{
+       unsigned long flags;
+
+       spin_lock_irqsave(&ext->wdata->state.lock, flags);
+       ext->motionp = motionp;
+       ext->ext_type = ext_type;
+       spin_unlock_irqrestore(&ext->wdata->state.lock, flags);
+}
+
 static void wiiext_worker(struct work_struct *work)
 {
        struct wiimote_ext *ext = container_of(work, struct wiimote_ext,
                                                                        worker);
+       bool motionp;
+       __u8 ext_type;
+
+       ext_disable(ext);
+       motionp = motionp_read(ext);
+       ext_type = ext_read(ext);
+       ext_enable(ext, motionp, ext_type);
 }
 
 /* schedule work only once, otherwise mark for reschedule */