linux_dsm_epyc7002/drivers/usb/musb
Sebastian Andrzej Siewior 4fc4b274f9 usb: musb: dsps: do not bind to "musb-hdrc"
This went unnoticed in durin the merge window:
The dsps driver creates a child device for the musb core driver _and_
attaches the of_node to it so devm_usb_get_phy_by_phandle() grabs the
correct phy and attaches the devm resources to the proper device. We
could also use the parent device but then devm would attach the
resource to the wrong device and it would be destroyed once the parent
device is gone - not the device that is used by the musb core driver.

If the phy is now not available then dsps_musb_init() /
devm_usb_get_phy_by_phandle() returns with EPROBE_DEFER. Since the
of_node is attached it tries OF drivers as well and matches the driver
against DSPS. That one creates a new child device for the musb core
driver which gets probed immediately.

The whole thing repeats itself until the stack overflows.

I belive the same problem exists in ux500 glue code (since 313bdb11
("usb: musb: ux500: add device tree probing support") but the drivers are
now probed in the right order so they don't see it.

The problem is that the dsps driver gets bound to the musb-child device
due to the same of_node / matching binding. I don't really agree with
having yet another child node in DT to fix this. Ideally we would have
musb core driver with DT bindings and according to the binding we would
select the few extra hacks / gleue layer.

Therefore I suggest the driver to reject the musb-core device.

Cc: Lee Jones <lee.jones@linaro.org>
Tested-by: Tom Rini <trini@ti.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-10-01 09:02:09 -05:00
..
am35x.c Merge branch 'nop-phy-rename' into next 2013-08-09 17:31:23 +03:00
blackfin.c Merge branch 'nop-phy-rename' into next 2013-08-09 17:31:23 +03:00
blackfin.h
cppi_dma.c usb: musb: dma: merge ->start/stop into create/destroy 2013-07-29 13:53:18 +03:00
cppi_dma.h
da8xx.c Merge branch 'nop-phy-rename' into next 2013-08-09 17:31:23 +03:00
davinci.c Merge branch 'nop-phy-rename' into next 2013-08-09 17:31:23 +03:00
davinci.h
Kconfig Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
Makefile usb: musb dma: add cppi41 dma driver 2013-08-09 17:40:16 +03:00
musb_am335x.c usb: musb: dsps: use proper child nodes 2013-08-09 17:35:44 +03:00
musb_core.c usb: patches for v3.12 merge window 2013-08-13 15:28:01 -07:00
musb_core.h usb: musb: get rid of unused proc_dir_entry 2013-07-29 13:56:50 +03:00
musb_cppi41.c usb: musb: cppi41: fix missing unlock on error in cppi41_dma_callback() 2013-08-27 14:16:51 -05:00
musb_debug.h
musb_debugfs.c usb: remove use of __devinit 2012-11-21 13:27:16 -08:00
musb_dma.h usb: musb dma: add cppi41 dma driver 2013-08-09 17:40:16 +03:00
musb_dsps.c usb: musb: dsps: do not bind to "musb-hdrc" 2013-10-01 09:02:09 -05:00
musb_gadget_ep0.c usb: musb: gadget: read ep0 fifo only if rxcount is non zero 2013-04-02 11:42:50 +03:00
musb_gadget.c usb: musb: gadget: fix otg active status flag 2013-09-25 15:42:33 -05:00
musb_gadget.h usb: musb: add Kconfig options for HOST, GAGDET or DUAL_ROLE modes 2013-05-28 19:22:23 +03:00
musb_host.c usb: musb: only remove host/udc if it has been added 2013-08-27 14:18:14 -05:00
musb_host.h usb: patches for v3.11 merge window 2013-06-12 14:44:13 -07:00
musb_io.h usb: musb: use io{read,write}*_rep accessors 2012-12-17 17:15:13 -08:00
musb_regs.h
musb_virthub.c usb: musb: eliminate musb_to_hcd 2013-05-28 19:22:26 +03:00
musbhsdma.c usb: musb: dma: merge ->start/stop into create/destroy 2013-07-29 13:53:18 +03:00
musbhsdma.h
omap2430.c usb: patches for v3.12 merge window 2013-08-13 15:28:01 -07:00
omap2430.h usb: start using the control module driver 2013-01-25 12:27:24 +02:00
tusb6010_omap.c usb: musb: dma: merge ->start/stop into create/destroy 2013-07-29 13:53:18 +03:00
tusb6010.c usb: patches for v3.12 merge window 2013-08-13 15:28:01 -07:00
tusb6010.h
ux500_dma.c usb: musb: ux500: Add check for NULL board data 2013-08-27 15:05:39 -05:00
ux500.c usb: musb: use dev_get_platdata() 2013-07-30 11:21:54 +03:00