Felipe Balbi wrote: > > From: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> > > musb_platform_exit() is called twice from musb_init_controller() iff controller > initialization fails. Move the call (and the DevCtl register writes surrounding > it) from musb_free() to musb_remove(). > > Fix mispalced and now incorrect 'goto's in musb_init_controller(). > > Signed-off-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> > Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxx> This one doesn't apply for me. I'm on commit 01e7770 plus gregkh-07-usb-2.6.34-rc1.patch. The first 9 patches apply correctly, but this one fails on hunk 4 of 6. Felipe - are we on the same base here? Looking at gregkh-07-usb-2.6.34-rc1.patch, this hunk is already taken care of there. - Anand > --- > drivers/usb/musb/musb_core.c | 17 +++++++---------- > 1 files changed, 7 insertions(+), 10 deletions(-) > > diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c > index 8b68f21..508fd58 100644 > --- a/drivers/usb/musb/musb_core.c > +++ b/drivers/usb/musb/musb_core.c > @@ -1851,10 +1851,6 @@ static void musb_free(struct musb *musb) > put_device(musb->xceiv->dev); > #endif > > - musb_writeb(musb->mregs, MUSB_DEVCTL, 0); > - musb_platform_exit(musb); > - musb_writeb(musb->mregs, MUSB_DEVCTL, 0); > - > #ifdef CONFIG_USB_MUSB_HDRC_HCD > usb_put_hcd(musb_to_hcd(musb)); > #else > @@ -2032,8 +2028,6 @@ bad_config: > musb->xceiv->state = OTG_STATE_A_IDLE; > > status = usb_add_hcd(musb_to_hcd(musb), -1, 0); > - if (status) > - goto fail; > > DBG(1, "%s mode, status %d, devctl %02x %c\n", > "HOST", status, > @@ -2048,8 +2042,6 @@ bad_config: > musb->xceiv->state = OTG_STATE_B_IDLE; > > status = musb_gadget_setup(musb); > - if (status) > - goto fail; > > DBG(1, "%s mode, status %d, dev%02x\n", > is_otg_enabled(musb) ? "OTG" : "PERIPHERAL", > @@ -2057,12 +2049,14 @@ bad_config: > musb_readb(musb->mregs, MUSB_DEVCTL)); > > } > + if (status < 0) > + goto fail2; > > #ifdef CONFIG_SYSFS > status = sysfs_create_group(&musb->controller->kobj, &musb_attr_group); > -#endif > if (status) > goto fail2; > +#endif > > dev_info(dev, "USB %s mode controller at %p using %s, IRQ %d\n", > ({char *s; > @@ -2125,7 +2119,6 @@ static int __init musb_probe(struct platform_device *pdev) > /* clobbered by use_dma=n */ > orig_dma_mask = dev->dma_mask; > #endif > - > status = musb_init_controller(dev, irq, base); > if (status < 0) > iounmap(base); > @@ -2148,6 +2141,10 @@ static int __exit musb_remove(struct platform_device *pdev) > if (musb->board_mode == MUSB_HOST) > usb_remove_hcd(musb_to_hcd(musb)); > #endif > + musb_writeb(musb->mregs, MUSB_DEVCTL, 0); > + musb_platform_exit(musb); > + musb_writeb(musb->mregs, MUSB_DEVCTL, 0); > + > musb_free(musb); > iounmap(ctrl_base); > device_init_wakeup(&pdev->dev, 0); > -- > 1.7.0.rc0.33.g7c3932 > > -- > To unsubscribe from this list: send the line "unsubscribe > linux-usb" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html