Hi, On Thu, Apr 04, 2013 at 09:50:06PM +0200, Daniel Mack wrote: > Hi all, > > here are some patches to separate the HCD and gadget part of the musb > driver so they can be deselected in Kconfig. They also make the driver > keep track of the configured port mode that is set from DT, so the > actual runtime configuration can be selected dynamically. > > One thing that is still broken is that once pm_suspend() was called on > a musb device on a USB disconnect, the port won't wake up again when a > device is plugged back in. I doubt this is related to my patches, but I > might be wrong. If that effect rings a bell to anyone, please let me > know. > > > Thanks, > Daniel > > > Daniel Mack (7): > usb: gadget: drop unused USB_GADGET_MUSB_HDRC > usb: musb: move function declarations to musb_{host,gadget}.h > usb: musb: factor out hcd initalization > usb: musb: add Kconfig options for HOST, GAGDET or DUAL_ROLE modes > usb: musb: add musb_host_setup() and musb_host_cleanup() > usb: musb: re-introduce musb->port_mode > usb: musb: eliminate musb_to_hcd pretty good, getting there. Here's what I'd to see though: introduce musb_gadget_init() and musb_host_init(). Those two should contain everything necessary to initialize each side of the API. Then we can simply: switch(mode) { case HOST: musb_host_init(); break; case PERIPHERAL: musb_gadget_init(); break; case OTG: /* it's important to initialize gadget side first */ musb_gadget_init(); musb_host_init(); break; } code will look cleaner and initialization will be straight forward and a lot easier to understand. This means that the call to usb_add_hcd() from musb_gadget_start() should be removed. -- balbi
Attachment:
signature.asc
Description: Digital signature