On Thu, Oct 30, 2008 at 5:12 PM, Ajay Kumar Gupta <ajay.gupta@xxxxxx> wrote: > Currently qh list for control, bulkin and bulkout are > part of musb structure as musb->control, musb->in_bulk > and musb->out_bulk.This patch makes it generic across > hw_ep by removing them from musb and mapping them to > in_list and out_list of hw_ep structure. > > Signed-off-by: Ravi Babu <ravibabu@xxxxxx> > Signed-off-by: Swaminathan S <swami.iyer@xxxxxx> > Signed-off-by: Thomas Abraham <t-abraham@xxxxxx> > Signed-off-by: Ajay Kumar Gupta <ajay.gupta@xxxxxx> > --- > drivers/usb/musb/musb_core.c | 6 +++--- > drivers/usb/musb/musb_core.h | 7 ++++--- > drivers/usb/musb/musb_host.c | 36 ++++++++++++++++++------------------ > 3 files changed, 25 insertions(+), 24 deletions(-) > > diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c > index ebe0828..dbf8861 100644 > --- a/drivers/usb/musb/musb_core.c > +++ b/drivers/usb/musb/musb_core.c > @@ -1445,6 +1445,9 @@ static int __init musb_core_init(u16 musb_type, struct musb *musb) > > hw_ep->regs = MUSB_EP_OFFSET(i, 0) + mbase; > #ifdef CONFIG_USB_MUSB_HDRC_HCD > + /* init list of in and out qhs */ > + INIT_LIST_HEAD(&hw_ep->in_list); > + INIT_LIST_HEAD(&hw_ep->out_list); > hw_ep->target_regs = MUSB_BUSCTL_OFFSET(i, 0) + mbase; > hw_ep->rx_reinit = 1; > hw_ep->tx_reinit = 1; > @@ -1790,9 +1793,6 @@ allocate_instance(struct device *dev, > /* usbcore sets dev->driver_data to hcd, and sometimes uses that... */ > > musb = hcd_to_musb(hcd); > - INIT_LIST_HEAD(&musb->control); > - INIT_LIST_HEAD(&musb->in_bulk); > - INIT_LIST_HEAD(&musb->out_bulk); > > hcd->uses_new_polling = 1; > > diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h > index 4972a3b..27cd1e3 100644 > --- a/drivers/usb/musb/musb_core.h > +++ b/drivers/usb/musb/musb_core.h > @@ -271,6 +271,10 @@ struct musb_hw_ep { > struct musb_qh *in_qh; > struct musb_qh *out_qh; > > + /* list of rx and tx qhs */ > + struct list_head in_list; > + struct list_head out_list; > + > u8 rx_reinit; > u8 tx_reinit; > #endif > @@ -328,9 +332,6 @@ struct musb { > */ > struct musb_hw_ep *bulk_ep; > > - struct list_head control; /* of musb_qh */ > - struct list_head in_bulk; /* of musb_qh */ > - struct list_head out_bulk; /* of musb_qh */ > struct musb_qh *in[16]; > struct musb_qh *out[16]; > #endif > diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c > index b77ca0b..014401c 100644 > --- a/drivers/usb/musb/musb_host.c > +++ b/drivers/usb/musb/musb_host.c > @@ -1223,7 +1223,7 @@ void musb_host_tx(struct musb *musb, u8 epnum) > * transfer, if there's some other (nonperiodic) tx urb > * that could use this fifo. (dma complicates it...) > * > - * if (bulk && qh->ring.next != &musb->out_bulk), then > + * if (bulk && qh->ring.next != &hw_ep->out_list), then > * we have a candidate... NAKing is *NOT* an error > */ > musb_ep_select(mbase, epnum); > @@ -1449,13 +1449,13 @@ void musb_host_rx(struct musb *musb, u8 epnum) > * transfer, if there's some other (nonperiodic) rx urb > * that could use this fifo. (dma complicates it...) > * > - * if (bulk && qh->ring.next != &musb->in_bulk), then > + * if (bulk && qh->ring.next != &hw_wp->in_list), then > * we have a candidate... NAKing is *NOT* an error > */ > DBG(6, "RX end %d NAK timeout\n", epnum); > if (usb_pipebulk(urb->pipe) && qh->mux == 1 && > - (musb->in_bulk.next->next != &musb->in_bulk) && > - bulk_nak_timeout) { > + (hw_ep->in_list.next->next != &hw_ep->in_list) > + && bulk_nak_timeout) { > musb_bulk_nak_timeout(musb, hw_ep); > return; > } > @@ -1744,8 +1744,8 @@ static int musb_schedule( > > /* use fixed hardware for control and bulk */ > if (qh->type == USB_ENDPOINT_XFER_CONTROL) { > - head = &musb->control; > hw_ep = musb->control_ep; > + head = &hw_ep->in_list; So we only support control in transfer and no hope for control out here? Thanks -Bryan -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html