Re: MUSB regression in 2.6.31-rc6

Felipe Balbi
2009-08-16T09:02:19Z

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)

================= 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);

--
balbi