[PATCH 07/10] MXS: Add USB PHY driver
Chen Peter-B29397
B29397 at freescale.com
Thu Apr 19 22:35:55 EDT 2012
> > On Wed, Apr 18, 2012 at 10:02:02PM +0200, Marek Vasut wrote:
> > > Dear Sascha Hauer,
> > >
> > > > > +static void mxs_usb_work(struct work_struct *w)
> > > > > +{
> > > > > + struct mxs_usb_phy *phy = container_of(w, struct mxs_usb_phy,
> > > > > work); + struct usb_otg *otg = phy->phy.otg;
> > > > > + struct usb_hcd *hcd;
> > > > > +
> > > > > + switch (otg->phy->state) {
> > > > > + case OTG_STATE_A_HOST:
> > > > > + if (otg->host) {
> > > > > + hcd = bus_to_hcd(otg->host);
> > > > > + usb_add_hcd(hcd, hcd->irq, IRQF_SHARED);
> > > > > + }
> > > > > + break;
> > > > > + default:
> > > > > + break;
> > > > > + }
> > > > > +}
> > > >
> > > > This function should be in imx-otg.
> > >
> > > You mean imx-usb? What'd it do in there?
> >
> > otg/imx-usb.c, yes (though I would prefer imx-otg.c)
> >
> > It should be there because it's the imx-otg.c driver which manages the
> > state. The phy driver is only a helper.
>
> I believe the imx-otg should only call otg_set_host()/otg_set_peripheral()
> on
> the particular PHY, in this case mxs-usb-phy, correct? The mxs_usb_work()
> should
> stay in the PHY's driver, because it'll likely frob with the PHY's own
> registers
> once peripheral support is added.
>
mxs_usb_work() manages host/device state switch due to id/vbus (at register otgsc) changing.
It is better to put it at otg driver.
> >
> > Sascha
>
> Best regards,
> Marek Vasut
More information about the linux-arm-kernel
mailing list