aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-wiimote-ext.c
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@googlemail.com>2011-11-17 08:12:02 -0500
committerJiri Kosina <jkosina@suse.cz>2011-11-22 17:08:40 -0500
commit82fb1b39581e7cdd71a6ce3cf12996711a583df2 (patch)
treefa2da049edd46c8ed1866c220581c4e2f2b68f42 /drivers/hid/hid-wiimote-ext.c
parentcb99221ba74bb16576a9c3b7e49357b6b12ff3ea (diff)
HID: wiimote: Add extension initializer stubs
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>
Diffstat (limited to 'drivers/hid/hid-wiimote-ext.c')
-rw-r--r--drivers/hid/hid-wiimote-ext.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/drivers/hid/hid-wiimote-ext.c b/drivers/hid/hid-wiimote-ext.c
index fa9c67722ac..3e3e1fc8d83 100644
--- a/drivers/hid/hid-wiimote-ext.c
+++ b/drivers/hid/hid-wiimote-ext.c
@@ -33,10 +33,48 @@ enum wiiext_type {
33 WIIEXT_NUNCHUCK, /* Nintendo nunchuck controller */ 33 WIIEXT_NUNCHUCK, /* Nintendo nunchuck controller */
34}; 34};
35 35
36/* diable all extensions */
37static void ext_disable(struct wiimote_ext *ext)
38{
39 unsigned long flags;
40
41 spin_lock_irqsave(&ext->wdata->state.lock, flags);
42 ext->motionp = false;
43 ext->ext_type = WIIEXT_NONE;
44 spin_unlock_irqrestore(&ext->wdata->state.lock, flags);
45}
46
47static bool motionp_read(struct wiimote_ext *ext)
48{
49 return false;
50}
51
52static __u8 ext_read(struct wiimote_ext *ext)
53{
54 return WIIEXT_NONE;
55}
56
57static void ext_enable(struct wiimote_ext *ext, bool motionp, __u8 ext_type)
58{
59 unsigned long flags;
60
61 spin_lock_irqsave(&ext->wdata->state.lock, flags);
62 ext->motionp = motionp;
63 ext->ext_type = ext_type;
64 spin_unlock_irqrestore(&ext->wdata->state.lock, flags);
65}
66
36static void wiiext_worker(struct work_struct *work) 67static void wiiext_worker(struct work_struct *work)
37{ 68{
38 struct wiimote_ext *ext = container_of(work, struct wiimote_ext, 69 struct wiimote_ext *ext = container_of(work, struct wiimote_ext,
39 worker); 70 worker);
71 bool motionp;
72 __u8 ext_type;
73
74 ext_disable(ext);
75 motionp = motionp_read(ext);
76 ext_type = ext_read(ext);
77 ext_enable(ext, motionp, ext_type);
40} 78}
41 79
42/* schedule work only once, otherwise mark for reschedule */ 80/* schedule work only once, otherwise mark for reschedule */