chipidea on mx28-evk: irq 237: nobody cared

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I'm using Greg's linux-usb/next on mx28-evk with mxs-defconfig. I
switched on OTG support and ether gadget and compiled it into the kernel.

During every boot when the ether gadget is loaded the IRQ of the usb0
fires and nobody cares:

> [    3.336843] ci_hdrc ci_hdrc.0: ChipIdea HDRC found, lpm: 0; cap: c8920100 op: c8920140
> [    3.336951] ci_hdrc ci_hdrc.0: It is OTG capable controller
> [    3.345476] ci_hdrc ci_hdrc.0: EHCI Host Controller
> [    3.351998] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
> [    3.379715] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
> [    3.397057] hub 1-0:1.0: USB hub found
> [    3.401761] hub 1-0:1.0: 1 port detected
> [    3.413366] ci_hdrc ci_hdrc.1: ChipIdea HDRC found, lpm: 0; cap: c8940100 op: c8940140
> [    3.413476] ci_hdrc ci_hdrc.1: It is OTG capable controller
> [    3.417595] ci_hdrc ci_hdrc.1: EHCI Host Controller
> [    3.422925] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 2
> [    3.449654] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
> [    3.460242] hub 2-0:1.0: USB hub found
> [    3.464310] hub 2-0:1.0: 1 port detected
> [    3.475410] using random self ethernet address
> [    3.480264] using random host ethernet address
> [    3.488022] usb0: HOST MAC 66:02:bb:f7:e7:eb
> [    3.493850] usb0: MAC 26:a9:b8:cc:5c:2d
> [    3.497987] using random self ethernet address
> [    3.503321] using random host ethernet address
> [    3.510076] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
> [    3.516749] g_ether gadget: g_ether ready
> [    4.842006] irq 237: nobody cared (try booting with the "irqpoll" option)
> [    4.848855] CPU: 0 PID: 1 Comm: swapper Not tainted 3.12.0-rc6 #149
> [    4.855218] [<c00144c8>] (unwind_backtrace+0x0/0xf0) from [<c0011ce4>] (show_stack+0x10/0x14)
> [    4.863808] [<c0011ce4>] (show_stack+0x10/0x14) from [<c00513a0>] (__report_bad_irq+0x20/0xc0)
> [    4.872463] [<c00513a0>] (__report_bad_irq+0x20/0xc0) from [<c0051848>] (note_interrupt+0x1d4/0x238)
> [    4.881636] [<c0051848>] (note_interrupt+0x1d4/0x238) from [<c004fac4>] (handle_irq_event_percpu+0xc4/0x264)
> [    4.891500] [<c004fac4>] (handle_irq_event_percpu+0xc4/0x264) from [<c004fca0>] (handle_irq_event+0x3c/0x5c)
> [    4.901365] [<c004fca0>] (handle_irq_event+0x3c/0x5c) from [<c0051fd0>] (handle_level_irq+0x8c/0xe8)
> [    4.910535] [<c0051fd0>] (handle_level_irq+0x8c/0xe8) from [<c004f358>] (generic_handle_irq+0x20/0x30)
> [    4.919880] [<c004f358>] (generic_handle_irq+0x20/0x30) from [<c000fde0>] (handle_IRQ+0x30/0x84)
> [    4.928705] [<c000fde0>] (handle_IRQ+0x30/0x84) from [<c0012764>] (__irq_svc+0x44/0x54)
> [    4.936757] [<c0012764>] (__irq_svc+0x44/0x54) from [<c0020248>] (__do_softirq+0x90/0x26c)
> [    4.945058] [<c0020248>] (__do_softirq+0x90/0x26c) from [<c00204f0>] (do_softirq+0x68/0x70)
> [    4.953442] [<c00204f0>] (do_softirq+0x68/0x70) from [<c00207e4>] (irq_exit+0xa4/0xf4)
> [    4.961395] [<c00207e4>] (irq_exit+0xa4/0xf4) from [<c000fde4>] (handle_IRQ+0x34/0x84)
> [    4.969353] [<c000fde4>] (handle_IRQ+0x34/0x84) from [<c0012764>] (__irq_svc+0x44/0x54)
> [    4.977396] [<c0012764>] (__irq_svc+0x44/0x54) from [<c0062c44>] (lock_acquire+0xac/0x104)
> [    4.985715] [<c0062c44>] (lock_acquire+0xac/0x104) from [<c046f76c>] (mutex_lock_nested+0x48/0x2d0)
> [    4.994815] [<c046f76c>] (mutex_lock_nested+0x48/0x2d0) from [<c02c211c>] (device_add+0x36c/0x608)
> [    5.003831] [<c02c211c>] (device_add+0x36c/0x608) from [<c035a990>] (mousedev_create+0x1f8/0x25c)
> [    5.012759] [<c035a990>] (mousedev_create+0x1f8/0x25c) from [<c067ca1c>] (mousedev_init+0x14/0x60)
> [    5.021758] [<c067ca1c>] (mousedev_init+0x14/0x60) from [<c00088ac>] (do_one_initcall+0xe8/0x154)
> [    5.030672] [<c00088ac>] (do_one_initcall+0xe8/0x154) from [<c0659ac8>] (kernel_init_freeable+0xec/0x1b4)
> [    5.040278] [<c0659ac8>] (kernel_init_freeable+0xec/0x1b4) from [<c0468188>] (kernel_init+0x8/0xe4)
> [    5.049363] [<c0468188>] (kernel_init+0x8/0xe4) from [<c000efa0>] (ret_from_fork+0x14/0x34)
> [    5.057723] handlers:
> [    5.060030] [<c03472b8>] ci_irq
> [    5.063205] Disabling IRQ #237

IRQ 237 belongs to the usb0, the OTG capable port.

> grep ci_hdrc /proc/interrupts
> 237:     100000         -  93  ci_hdrc_imx
> 238:          0         -  92  ci_hdrc_imx

I can reproduce the problem on another mx28 hardware, it happens only if
a host type USB cable is plugged into the OTG port and connected to
another machine's host port. This leads to the ID pin is pulled to
ground and the chipidea driver comes up host mode. However the ether
gadget seems to do something on the bus, which triggers an interrupt in
the udc, but the multiplexer in the chipidea core will call the host
role, due to the ID pin.

If the system boot without a cable or with a device type cable (attached
to another host or not doesn't matter), the ID pin stays floating, the
driver comes in peripheral role and everything works.

Marc

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux