Bug fix: Force feedback stopped working in 2.7.18.

   Use an interrupt bulk URB to send force-feedback data to the device
   instead of a bulk URB.

   Signed-off-by: Johann Deneux <[EMAIL PROTECTED]>

diff --git a/drivers/input/joystick/iforce/iforce-usb.c
b/drivers/input/joystick/iforce/iforce-usb.c
index 750099d..1457b73 100644
--- a/drivers/input/joystick/iforce/iforce-usb.c
+++ b/drivers/input/joystick/iforce/iforce-usb.c
@@ -65,6 +65,7 @@ void iforce_usb_xmit(struct iforce *iforce)
        XMIT_INC(iforce->xmit.tail, n);

        if ( (n=usb_submit_urb(iforce->out, GFP_ATOMIC)) ) {
+               clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
                warn("usb_submit_urb failed %d\n", n);
        }

@@ -163,8 +164,8 @@ static int iforce_usb_probe(struct usb_interface *intf,
        usb_fill_int_urb(iforce->irq, dev, usb_rcvintpipe(dev,
epirq->bEndpointAddress),
                        iforce->data, 16, iforce_usb_irq, iforce, 
epirq->bInterval);

-       usb_fill_bulk_urb(iforce->out, dev, usb_sndbulkpipe(dev,
epout->bEndpointAddress),
-                       iforce + 1, 32, iforce_usb_out, iforce);
+       usb_fill_int_urb(iforce->out, dev, usb_sndintpipe(dev,
epout->bEndpointAddress),
+                       iforce + 1, 32, iforce_usb_out, iforce, 
epout->bInterval);

        usb_fill_control_urb(iforce->ctrl, dev, usb_rcvctrlpipe(dev, 0),
                        (void*) &iforce->cr, iforce->edata, 16, 
iforce_usb_ctrl, iforce);
commit 8fdabb780f4e59faa928a8040d4d7da4ce5e9bb7
Author: Johann Deneux <[EMAIL PROTECTED]>
Date:   Sat May 12 16:01:46 2007 +0200

    Bug fix: Force feedback stopped working in 2.7.18.
    
    Use an interrupt bulk URB to send force-feedback data to the device
    instead of a bulk URB.
    
    Signed-off-by: Johann Deneux <[EMAIL PROTECTED]>

diff --git a/drivers/input/joystick/iforce/iforce-usb.c 
b/drivers/input/joystick/iforce/iforce-usb.c
index 750099d..1457b73 100644
--- a/drivers/input/joystick/iforce/iforce-usb.c
+++ b/drivers/input/joystick/iforce/iforce-usb.c
@@ -65,6 +65,7 @@ void iforce_usb_xmit(struct iforce *iforce)
        XMIT_INC(iforce->xmit.tail, n);
 
        if ( (n=usb_submit_urb(iforce->out, GFP_ATOMIC)) ) {
+               clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
                warn("usb_submit_urb failed %d\n", n);
        }
 
@@ -163,8 +164,8 @@ static int iforce_usb_probe(struct usb_interface *intf,
        usb_fill_int_urb(iforce->irq, dev, usb_rcvintpipe(dev, 
epirq->bEndpointAddress),
                        iforce->data, 16, iforce_usb_irq, iforce, 
epirq->bInterval);
 
-       usb_fill_bulk_urb(iforce->out, dev, usb_sndbulkpipe(dev, 
epout->bEndpointAddress),
-                       iforce + 1, 32, iforce_usb_out, iforce);
+       usb_fill_int_urb(iforce->out, dev, usb_sndintpipe(dev, 
epout->bEndpointAddress),
+                       iforce + 1, 32, iforce_usb_out, iforce, 
epout->bInterval);
 
        usb_fill_control_urb(iforce->ctrl, dev, usb_rcvctrlpipe(dev, 0),
                        (void*) &iforce->cr, iforce->edata, 16, 
iforce_usb_ctrl, iforce);

Reply via email to