On Wed, Jun 26, 2013 at 10:37:39AM +0200, B, Ravi wrote: > Felipe > > > > > On Wed, May 29, 2013 at 06:37:03PM +0530, Ravi Babu wrote: > > > Adding babble_recovery operation as part of musb->ops, used to recover > > > from babble condition during babble interrupt. > > > > > > Signed-off-by: Ravi Babu <ravibabu@xxxxxx> > > > --- > > > drivers/usb/musb/musb_core.c | 6 ++++++ > > > drivers/usb/musb/musb_core.h | 7 +++++++ > > > 2 files changed, 13 insertions(+), 0 deletions(-) > > > > > > diff --git a/drivers/usb/musb/musb_core.c > > > b/drivers/usb/musb/musb_core.c index ab6fa39..411c29d 100644 > > > --- a/drivers/usb/musb/musb_core.c > > > +++ b/drivers/usb/musb/musb_core.c > > > @@ -857,6 +857,12 @@ b_host: > > > } > > > } > > > > > > + /* handle babble condition */ > > > + if (int_usb & MUSB_INTR_BABBLE) { > > > + pr_info("babble: restarting the musb controller.."); > > > + musb_babble_recovery(musb); > > > + } > > > + > > > #if 0 > > > /* REVISIT ... this would be for multiplexing periodic endpoints, or > > > * supporting transfer phasing to prevent exceeding ISO bandwidth > > > diff --git a/drivers/usb/musb/musb_core.h > > > b/drivers/usb/musb/musb_core.h index f96e899..bf37dc9 100644 > > > --- a/drivers/usb/musb/musb_core.h > > > +++ b/drivers/usb/musb/musb_core.h > > > @@ -213,6 +213,8 @@ struct musb_platform_ops { > > > int (*adjust_channel_params)(struct dma_channel *channel, > > > u16 packet_sz, u8 *mode, > > > dma_addr_t *dma_addr, u32 *len); > > > + > > > + void (*babble_recovery)(struct musb *musb); > > > > I don't get why can't 'babble_recovery' be generic. Why do we need each glue > > layer to implement it ? > > > > Babble is generic, but recovery mechanism is nothing but "reset of > usbss" which is SoC dependent and followed by generic restart of the > musb controller. and that's what I don't get. Why do you need to reset usbss ? -- balbi
Attachment:
signature.asc
Description: Digital signature