public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
* [patch 2.6.23-omap] misc musb tweaks
@ 2007-10-12 21:26 David Brownell
  2007-10-14 17:16 ` Tony Lindgren
  0 siblings, 1 reply; 5+ messages in thread
From: David Brownell @ 2007-10-12 21:26 UTC (permalink / raw)
  To: linux-omap-open-source; +Cc: Alan Stern

From: Alan Stern <stern@rowland.harvard.edu>

The patch below fixes a few minor infelicities.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
---
 drivers/usb/musb/musb_host.c    |    6 +++---
 drivers/usb/musb/musb_host.h    |    9 ++++-----
 drivers/usb/musb/musb_virthub.c |   14 +++++++++-----
 3 files changed, 16 insertions(+), 13 deletions(-)

--- o26.orig/drivers/usb/musb/musb_host.c	2007-08-27 17:24:01.000000000 -0700
+++ o26/drivers/usb/musb/musb_host.c	2007-08-28 14:54:08.000000000 -0700
@@ -1513,9 +1513,9 @@ void musb_host_rx(struct musb *musb, u8 
 
 #ifdef CONFIG_USB_INVENTRA_DMA
 		/* done if urb buffer is full or short packet is recd */
-		done = ((urb->actual_length + xfer_len) >=
-				urb->transfer_buffer_length)
-			|| (dma->actual_len & (qh->maxpacket - 1));
+		done = (urb->actual_length + xfer_len >=
+				urb->transfer_buffer_length
+			|| dma->actual_len < qh->maxpacket);
 
 		/* send IN token for next packet, without AUTOREQ */
 		if (!done) {
--- o26.orig/drivers/usb/musb/musb_virthub.c	2007-08-27 17:24:01.000000000 -0700
+++ o26/drivers/usb/musb/musb_virthub.c	2007-08-28 14:54:08.000000000 -0700
@@ -202,6 +202,7 @@ void musb_root_disconnect(struct musb *m
 
 /*---------------------------------------------------------------------*/
 
+/* Caller may or may not hold musb->lock */
 int musb_hub_status_data(struct usb_hcd *hcd, char *buf)
 {
 	struct musb	*musb = hcd_to_musb(hcd);
@@ -228,14 +229,17 @@ int musb_hub_control(
 	int		retval = 0;
 	unsigned long	flags;
 
-	if (unlikely(!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)))
+	spin_lock_irqsave(&musb->lock, flags);
+
+	if (unlikely(!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags))) {
+		spin_unlock_irqrestore(&musb->lock, flags);
 		return -ESHUTDOWN;
+	}
 
 	/* hub features:  always zero, setting is a NOP
 	 * port features: reported, sometimes updated when host is active
 	 * no indicators
 	 */
-	spin_lock_irqsave(&musb->lock, flags);
 	switch (typeReq) {
 	case ClearHubFeature:
 	case SetHubFeature:
@@ -248,7 +252,7 @@ int musb_hub_control(
 		}
 		break;
 	case ClearPortFeature:
-		if (wIndex != 1)
+		if ((wIndex & 0xff) != 1)
 			goto error;
 
 		switch (wValue) {
@@ -302,12 +306,12 @@ int musb_hub_control(
 
 		/* finish RESET signaling? */
 		if ((musb->port1_status & USB_PORT_STAT_RESET)
-				&& time_after(jiffies, musb->rh_timer))
+				&& time_after_eq(jiffies, musb->rh_timer))
 			musb_port_reset(musb, false);
 
 		/* finish RESUME signaling? */
 		if ((musb->port1_status & MUSB_PORT_STAT_RESUME)
-				&& time_after(jiffies, musb->rh_timer)) {
+				&& time_after_eq(jiffies, musb->rh_timer)) {
 			u8		power;
 
 			power = musb_readb(musb->mregs, MUSB_POWER);
--- o26.orig/drivers/usb/musb/musb_host.h	2007-08-27 17:24:01.000000000 -0700
+++ o26/drivers/usb/musb/musb_host.h	2007-08-28 14:54:08.000000000 -0700
@@ -37,13 +37,12 @@
 
 static inline struct usb_hcd *musb_to_hcd(struct musb *musb)
 {
-	return (struct usb_hcd *) (((void *)musb)
-			- offsetof(struct usb_hcd, hcd_priv));
+	return container_of((void *) musb, struct usb_hcd, hcd_priv);
 }
 
 static inline struct musb *hcd_to_musb(struct usb_hcd *hcd)
 {
-	return (void *) hcd->hcd_priv;
+	return (struct musb *) (hcd->hcd_priv);
 }
 
 /* stored in "usb_host_endpoint.hcpriv" for scheduled endpoints */
@@ -77,7 +76,7 @@ static inline struct musb_qh *first_qh(s
 {
 	if (list_empty(q))
 		return NULL;
-	return container_of(q->next, struct musb_qh, ring);
+	return list_entry(q->next, struct musb_qh, ring);
 }
 
 
@@ -102,7 +101,7 @@ static inline struct urb *next_urb(struc
 	queue = &qh->hep->urb_list;
 	if (list_empty(queue))
 		return NULL;
-	return container_of(queue->next, struct urb, urb_list);
+	return list_entry(queue->next, struct urb, urb_list);
 #else
 	return NULL;
 #endif

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-10-15 14:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <Pine.LNX.4.44L0.0710142127330.32416-100000@netrider.rowland.org>
2007-10-15  1:44 ` [patch 2.6.23-omap] misc musb tweaks David Brownell
2007-10-15 14:46   ` Tony Lindgren
2007-10-12 21:26 David Brownell
2007-10-14 17:16 ` Tony Lindgren
2007-10-15  1:10   ` David Brownell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox