Patchwork [U-Boot,RESEND] arm: bootm: call udc_disable() before booting linux

login
register
mail settings
Submitter Mike Dunn
Date April 20, 2013, 4:42 p.m.
Message ID <1366476164-2270-1-git-send-email-mikedunn@newsguy.com>
Download mbox | patch
Permalink /patch/238157/
State Accepted
Delegated to: Marek Vasut
Headers show

Comments

Mike Dunn - April 20, 2013, 4:42 p.m.
On the pxa270, if the udc device is not disabled before jumping to linux, the
device fails to initialize in linux because it was left in a running state, and
the linux driver assumes that it is in a disabled state.

Signed-off-by: Mike Dunn <mikedunn@newsguy.com>
---
Arguably, this is a bug in the linux driver, but it seemed pretty simple and
benign to just disable it in u-boot.  I'll also send a patch to upstream kernel
to fix its udc driver.

 arch/arm/include/asm/bootm.h |    1 +
 arch/arm/lib/bootm.c         |    1 +
 2 files changed, 2 insertions(+), 0 deletions(-)
Otavio Salvador - April 20, 2013, 5:13 p.m.
On Sat, Apr 20, 2013 at 1:42 PM, Mike Dunn <mikedunn@newsguy.com> wrote:
> On the pxa270, if the udc device is not disabled before jumping to linux, the
> device fails to initialize in linux because it was left in a running state, and
> the linux driver assumes that it is in a disabled state.
>
> Signed-off-by: Mike Dunn <mikedunn@newsguy.com>

Shouldn't it be fixed in Linux, in this case?

--
Otavio Salvador                             O.S. Systems
E-mail: otavio@ossystems.com.br  http://www.ossystems.com.br
Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br
Marek Vasut - April 20, 2013, 5:17 p.m.
Dear Otavio Salvador,

> On Sat, Apr 20, 2013 at 1:42 PM, Mike Dunn <mikedunn@newsguy.com> wrote:
> > On the pxa270, if the udc device is not disabled before jumping to linux,
> > the device fails to initialize in linux because it was left in a running
> > state, and the linux driver assumes that it is in a disabled state.
> > 
> > Signed-off-by: Mike Dunn <mikedunn@newsguy.com>
> 
> Shouldn't it be fixed in Linux, in this case?

There is a whole thread about this in the previous version if this patch, dig it 
up in the mailing list, you'll surely find your answer there shortly.

Best regards,
Marek Vasut
Marek Vasut - April 25, 2013, 2:59 a.m.
Dear Mike Dunn,

> On the pxa270, if the udc device is not disabled before jumping to linux,
> the device fails to initialize in linux because it was left in a running
> state, and the linux driver assumes that it is in a disabled state.
> 
> Signed-off-by: Mike Dunn <mikedunn@newsguy.com>

Applied this and the USB patch.

Best regards,
Marek Vasut

Patch

diff --git a/arch/arm/include/asm/bootm.h b/arch/arm/include/asm/bootm.h
index db2ff94..68189cc 100644
--- a/arch/arm/include/asm/bootm.h
+++ b/arch/arm/include/asm/bootm.h
@@ -21,6 +21,7 @@ 
 
 #ifdef CONFIG_USB_DEVICE
 extern void udc_disconnect(void);
+extern void udc_disable(void);
 #endif
 
 #endif
diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
index f3b30c5..6daa7bf 100644
--- a/arch/arm/lib/bootm.c
+++ b/arch/arm/lib/bootm.c
@@ -105,6 +105,7 @@  static void announce_and_cleanup(void)
 
 #ifdef CONFIG_USB_DEVICE
 	udc_disconnect();
+	udc_disable();
 #endif
 	cleanup_before_linux();
 }