[U-Boot] [PATCH] sunxi: musb: Properly put the musb controller back in reset on exit
Paul Kocialkowski
contact at paulk.fr
Sun May 24 11:36:09 CEST 2015
Le jeudi 21 mai 2015 à 15:13 +0200, Hans de Goede a écrit :
> Hi,
>
> On 21-05-15 14:45, Chen-Yu Tsai wrote:
> > On Wed, May 20, 2015 at 10:40 PM, Hans de Goede <hdegoede at redhat.com> wrote:
> >> Assert reset and disable the clock to properly put the musb controller
> >> back in reset on exit.
> >
> > Last I checked the exit functions are not called except for error handling
> > in the probe sequence. Has this been fixed?
>
> It seems not, I made this patch because Paul (added to the Cc) was having
> some troubles when changing the gadget role. It looks like you're right and
> unfortunately this function never gets called though ...
>
> Worse it seems that in gadget mode even all calls to musb_stop() are commented
> out of the musb-new code...
It seems to be the problem here. I added an explicit call to musb_stop
in usb_gadget_unregister_driver and it seems to solve the problem: I can
run fastboot multiple times and the host always enumerates it correctly.
I'll submit some patches implementing this correctly, probably next
week-end.
However, it doesn't work as well with the USB mass storage function.
I'll have to take a closer look at it later.
> Note all this does not mean that this patch is incorrect though, just that it
> is not really useful atm.
>
> Regards,
>
> Hans
>
>
> >
> > ChenYu
> >
> >> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> >> ---
> >> drivers/usb/musb-new/sunxi.c | 7 +++++++
> >> 1 file changed, 7 insertions(+)
> >>
> >> diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c
> >> index e8a3a23..e2c9d5a 100644
> >> --- a/drivers/usb/musb-new/sunxi.c
> >> +++ b/drivers/usb/musb-new/sunxi.c
> >> @@ -284,6 +284,8 @@ static int sunxi_musb_init(struct musb *musb)
> >>
> >> static int sunxi_musb_exit(struct musb *musb)
> >> {
> >> + struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
> >> +
> >> pr_debug("%s():\n", __func__);
> >>
> >> USBC_DisableDpDmPullUp(musb->mregs);
> >> @@ -291,6 +293,11 @@ static int sunxi_musb_exit(struct musb *musb)
> >> sunxi_usb_phy_power_off(0);
> >> sunxi_usb_phy_exit(0);
> >>
> >> +#ifdef CONFIG_SUNXI_GEN_SUN6I
> >> + clrbits_le32(&ccm->ahb_reset0_cfg, 1 << AHB_GATE_OFFSET_USB0);
> >> +#endif
> >> + clrbits_le32(&ccm->ahb_gate0, 1 << AHB_GATE_OFFSET_USB0);
> >> +
> >> return 0;
> >> }
> >>
> >> --
> >> 2.4.1
> >>
> >> _______________________________________________
> >> U-Boot mailing list
> >> U-Boot at lists.denx.de
> >> http://lists.denx.de/mailman/listinfo/u-boot
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150524/2d6d70a3/attachment.sig>
More information about the U-Boot
mailing list