From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Date: Sun, 24 May 2015 11:36:09 +0200 Subject: [U-Boot] [PATCH] sunxi: musb: Properly put the musb controller back in reset on exit In-Reply-To: <555DD9DC.7050507@redhat.com> References: <1432132840-9106-1-git-send-email-hdegoede@redhat.com> <555DD9DC.7050507@redhat.com> Message-ID: <1432460169.2549.4.camel@collins> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 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 > >> --- > >> 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: