diff mbox

MUSB regression in 2.6.31-rc6

Message ID 20090816090202.GA5726@gandalf (mailing list archive)
State Awaiting Upstream, archived
Headers show

Commit Message

Felipe Balbi Aug. 16, 2009, 9:02 a.m. UTC
Hi,

On Sun, Aug 16, 2009 at 11:47:31AM +0300, Jarkko Nikula wrote:
> On Sun, 16 Aug 2009 11:25:14 +0300
> Felipe Balbi <me@felipebalbi.com> wrote:
> 
> > NOP should not be necessary, beagle uses twl4030-usb as its transceiver,
> > unlike evm, which uses isp1504, if I'm not wrong.
> > 
> > Could you try the following patch ?
> > 
> No help but thanks to Koen's hint, I was able to capture the oops. I
> compiled the kernel using your defconfig change and set the DEBUG_LL.

if you:

$ arm-linux-gdb vmlinux
(gdb) l *(musb_platform_suspend + 0x34)

you'll see that ends up in otg_set_suspend()

basically when it checks:

if (otg->set_suspend)

so the problem is still related to the missing otg transceiver

could you printk twl4030_usb_probe() to see what's going on ?

check whether otg_set_transceiver() is being successfully called. The
following will give some hint (maybe)
diff mbox

Patch

================= cut here ==========================

diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
index 3487520..6733da9 100644
--- a/drivers/usb/musb/omap2430.c
+++ b/drivers/usb/musb/omap2430.c
@@ -213,6 +213,7 @@  int __init musb_platform_init(struct musb *musb)
 	 * which needs a driver, drivers aren't always needed.
 	 */
 	musb->xceiv = otg_get_transceiver();
+	printk(KERN_INFO "%s: xceiv %p\n", __func__, musb->xceiv);
 	if (!musb->xceiv) {
 		pr_err("HS USB OTG: no transceiver configured\n");
 		return -ENODEV;
diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c
index 9e3e7a5..6d994cf 100644
--- a/drivers/usb/otg/twl4030-usb.c
+++ b/drivers/usb/otg/twl4030-usb.c
@@ -687,6 +687,7 @@  static int __devinit twl4030_usb_probe(struct platform_device *pdev)
 		kfree(twl);
 		return err;
 	}
+	print(KERN_INFO "%s: xceiv %p\n", __func__, &twl->otg);
 	otg_set_transceiver(&twl->otg);
 
 	platform_set_drvdata(pdev, twl);