diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2009-12-30 21:18:24 +0100 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2009-12-30 21:19:38 +0100 |
commit | c2b27ef672992a206e5b221b8676972dd840ffa5 (patch) | |
tree | db7123379c12cda9659929b4c6e4897e088e9545 /drivers/input/joystick | |
parent | Input: twl4030-pwrbutton - switch to using threaded IRQ (diff) | |
download | linux-c2b27ef672992a206e5b221b8676972dd840ffa5.tar.xz linux-c2b27ef672992a206e5b221b8676972dd840ffa5.zip |
Input: iforce - wait for command completion when closing the device
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>
Diffstat (limited to 'drivers/input/joystick')
-rw-r--r-- | drivers/input/joystick/iforce/iforce-main.c | 3 | ||||
-rw-r--r-- | drivers/input/joystick/iforce/iforce-usb.c | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/input/joystick/iforce/iforce-main.c b/drivers/input/joystick/iforce/iforce-main.c index acc3a9efb00f..b1edd778639c 100644 --- a/drivers/input/joystick/iforce/iforce-main.c +++ b/drivers/input/joystick/iforce/iforce-main.c @@ -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) { diff --git a/drivers/input/joystick/iforce/iforce-usb.c b/drivers/input/joystick/iforce/iforce-usb.c index c0ad88369442..b41303d3ec54 100644 --- a/drivers/input/joystick/iforce/iforce-usb.c +++ b/drivers/input/joystick/iforce/iforce-usb.c @@ -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; } |