[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