Input: iforce - wait for command completion when closing the device
Dmitry Torokhov [Wed, 30 Dec 2009 20:18:24 +0000 (12:18 -0800)]
We need to wait for the command to disable FF effects to complete before
continuing with closing the device.

Tested-by: Johannes Ebke <johannes.ebke@physik.uni-muenchen.de>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>

drivers/input/joystick/iforce/iforce-main.c
drivers/input/joystick/iforce/iforce-usb.c

index acc3a9e..b1edd77 100644 (file)
@@ -228,6 +228,9 @@ static void iforce_close(struct input_dev *dev)
 
                /* Disable force feedback playback */
                iforce_send_packet(iforce, FF_CMD_ENABLE, "\001");
+               /* Wait for the command to complete */
+               wait_event_interruptible(iforce->wait,
+                       !test_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags));
        }
 
        switch (iforce->bus) {
index c0ad883..b41303d 100644 (file)
@@ -109,6 +109,7 @@ static void iforce_usb_out(struct urb *urb)
        struct iforce *iforce = urb->context;
 
        if (urb->status) {
+               clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
                dbg("urb->status %d, exiting", urb->status);
                return;
        }