This fixes up a couple of problems I came across while working on uhci-hcd. There are a couple of places where shifts are used where they shouldn't be and others where should be.
This cleans up a couple of cases and tidys it up. The patch is relative to 2.4.19-pre8 and my other patches, but it's alright to wait for 2.4.20. It should also be applied to 2.5. Thanks! JE diff -ur -X dontdiff linux-2.4.19-pre8.orig/drivers/usb/uhci.c linux-2.4.19-pre8/drivers/usb/uhci.c --- linux-2.4.19-pre8.orig/drivers/usb/uhci.c Wed May 15 15:04:53 2002 +++ linux-2.4.19-pre8/drivers/usb/uhci.c Wed May 15 19:39:29 2002 @@ -133,7 +133,7 @@ unsigned long flags; spin_lock_irqsave(&uhci->frame_list_lock, flags); - uhci->skel_term_td->status |= TD_CTRL_IOC_BIT; + uhci->skel_term_td->status |= TD_CTRL_IOC; spin_unlock_irqrestore(&uhci->frame_list_lock, flags); } @@ -142,7 +142,7 @@ unsigned long flags; spin_lock_irqsave(&uhci->frame_list_lock, flags); - uhci->skel_term_td->status &= ~TD_CTRL_IOC_BIT; + uhci->skel_term_td->status &= ~TD_CTRL_IOC; spin_unlock_irqrestore(&uhci->frame_list_lock, flags); } @@ -870,7 +870,7 @@ return -ENOMEM; /* Alternate Data0/1 (start with Data1) */ - destination ^= 1 << TD_TOKEN_TOGGLE; + destination ^= TD_TOKEN_TOGGLE; uhci_add_td_to_urb(urb, td); uhci_fill_td(td, status, destination | ((pktsze - 1) << 21), @@ -897,7 +897,7 @@ else destination |= USB_PID_OUT; - destination |= 1 << TD_TOKEN_TOGGLE; /* End in Data1 */ + destination |= TD_TOKEN_TOGGLE; /* End in Data1 */ status &= ~TD_CTRL_SPD; @@ -1102,7 +1102,7 @@ if (!td) return -ENOMEM; - destination |= (usb_gettoggle(urb->dev, usb_pipeendpoint(urb->pipe), usb_pipeout(urb->pipe)) << TD_TOKEN_TOGGLE); + destination |= (usb_gettoggle(urb->dev, usb_pipeendpoint(urb->pipe), +usb_pipeout(urb->pipe)) << TD_TOKEN_TOGGLE_SHIFT); destination |= ((urb->transfer_buffer_length - 1) << 21); usb_dotoggle(urb->dev, usb_pipeendpoint(urb->pipe), usb_pipeout(urb->pipe)); @@ -1195,8 +1195,8 @@ td = list_entry(urbp->td_list.next, struct uhci_td, list); td->status = (td->status & 0x2F000000) | TD_CTRL_ACTIVE | TD_CTRL_IOC; - td->info &= ~(1 << TD_TOKEN_TOGGLE); - td->info |= (usb_gettoggle(urb->dev, usb_pipeendpoint(urb->pipe), usb_pipeout(urb->pipe)) << TD_TOKEN_TOGGLE); + td->info &= ~TD_TOKEN_TOGGLE; + td->info |= (usb_gettoggle(urb->dev, usb_pipeendpoint(urb->pipe), +usb_pipeout(urb->pipe)) << TD_TOKEN_TOGGLE_SHIFT); usb_dotoggle(urb->dev, usb_pipeendpoint(urb->pipe), usb_pipeout(urb->pipe)); out: @@ -1252,7 +1252,7 @@ uhci_fill_td(td, status, destination | (((pktsze - 1) & UHCI_NULL_DATA_SIZE) << 21) | (usb_gettoggle(urb->dev, usb_pipeendpoint(urb->pipe), - usb_pipeout(urb->pipe)) << TD_TOKEN_TOGGLE), + usb_pipeout(urb->pipe)) << TD_TOKEN_TOGGLE_SHIFT), data); data += pktsze; @@ -1280,7 +1280,7 @@ uhci_fill_td(td, status, destination | (UHCI_NULL_DATA_SIZE << 21) | (usb_gettoggle(urb->dev, usb_pipeendpoint(urb->pipe), - usb_pipeout(urb->pipe)) << TD_TOKEN_TOGGLE), + usb_pipeout(urb->pipe)) << TD_TOKEN_TOGGLE_SHIFT), data); usb_dotoggle(urb->dev, usb_pipeendpoint(urb->pipe), diff -ur -X dontdiff linux-2.4.19-pre8.orig/drivers/usb/uhci.h linux-2.4.19-pre8/drivers/usb/uhci.h --- linux-2.4.19-pre8.orig/drivers/usb/uhci.h Fri May 10 19:40:39 2002 +++ linux-2.4.19-pre8/drivers/usb/uhci.h Wed May 15 18:43:57 2002 @@ -100,7 +100,6 @@ #define TD_CTRL_C_ERR_SHIFT 27 #define TD_CTRL_LS (1 << 26) /* Low Speed Device */ #define TD_CTRL_IOS (1 << 25) /* Isochronous Select */ -#define TD_CTRL_IOC_BIT 24 #define TD_CTRL_IOC (1 << 24) /* Interrupt on Complete */ #define TD_CTRL_ACTIVE (1 << 23) /* TD Active */ #define TD_CTRL_STALLED (1 << 22) /* TD Stalled */ @@ -120,7 +119,8 @@ /* * for TD <info>: (a.k.a. Token) */ -#define TD_TOKEN_TOGGLE 19 +#define TD_TOKEN_TOGGLE_SHIFT 19 +#define TD_TOKEN_TOGGLE (1 << 19) #define TD_TOKEN_PID_MASK 0xFF #define TD_TOKEN_EXPLEN_MASK 0x7FF /* expected length, encoded as n - 1 */ _______________________________________________________________ Have big pipes? SourceForge.net is looking for download mirrors. We supply the hardware. You get the recognition. Email Us: [EMAIL PROTECTED] _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel