Hi,
On Fri, Apr 05, 2013 at 02:40:45PM +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;
> > }
>
> Sorry, I read over the code again and I want to be sure I understand
> what you mean here. The _init() functions you mention are called
> _setup() in my case, because there was already a musb_gadget_setup(), so
> I called the host side accordingly.
>
> Including the check of the return value, I ended up with these lines:
>
> if (musb->port_mode == MUSB_PORT_MODE_HOST ||
> musb->port_mode == MUSB_PORT_MODE_DUAL_ROLE) {
> status = musb_host_setup(musb, plat->power);
> if (status < 0)
> goto fail3;
> }
>
> if (musb->port_mode == MUSB_PORT_MODE_GADGET ||
> musb->port_mode == MUSB_PORT_MODE_DUAL_ROLE) {
> status = musb_gadget_setup(musb);
> if (status < 0)
> goto fail3;
> }
>
> ... and that's part of the result of my patch set. What exactly do you
> want me to change? Is it that musb_gadget_setup() is be called before
> musb_host_setup()? Or is it about their names?
>
> > code will look cleaner and initialization will be straight forward and a
> > lot easier to understand.
>
> Compared to what exactly?
>
> > This means that the call to usb_add_hcd() from musb_gadget_start()
> > should be removed.
>
> As stated in a previous mail, this is already done.I replied to each patch what needs to be changed. > Any idea about the host port not waking up after the device was > unplugged once? Bad PM ? -- balbi
signature.asc
Description: Digital signature
