RE: [patch-2.6.34-rc2+ 10/11] musb_core: don't call musb_platform_exit() twice

Gadiyar, Anand
2010-03-25T12:34:38Z

Felipe Balbi wrote:
>
> From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
>
> 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@ru.mvista.com>
> Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>

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@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>