[linux-pm] [RFC PATCH 07/11] mfd: omap: control: usb-phy: introduce the ctrl-module usb driver

Tony Lindgren tony at atomide.com
Fri Jun 1 09:20:57 EDT 2012


* Tony Lindgren <tony at atomide.com> [120601 04:43]:
> * Eduardo Valentin <eduardo.valentin at ti.com> [120525 01:31]:
> > +int omap4_usb_phy_power(struct device *dev, int on)
> > +{
> > +	u32 val;
> > +	int ret;
> > +
> > +	if (on) {
> > +		ret = omap_control_readl(dev, CONTROL_DEV_CONF, &val);
> > +		if (!ret && (val & PHY_PD)) {
> > +			ret = omap_control_writel(dev, ~PHY_PD,
> > +						  CONTROL_DEV_CONF);
> > +			/* XXX: add proper documentation for this delay */
> > +			mdelay(200);
> > +		}
> > +	} else {
> > +		ret = omap_control_writel(dev, PHY_PD, CONTROL_DEV_CONF);
> > +	}
> > +
> > +	return ret;
> > +}
> > +EXPORT_SYMBOL_GPL(omap4_usb_phy_power);
> 
> I'm not quite convinced that we should export omap_control_read/write
> to drivers. If there's a clear register area this USB phy driver can
> manage, then ioremaping it separately makes sense. If it's just one
> register, then exporting something like omap_control_usb_phy_set()
> might be better for ensuring that drivers don't mess up things for
> other drivers.

After chatting with Benoit a bit we came to the conclusion that the
clock and powerdomain state needs to be managed for the children by
the SCM core driver so the children can't be completely independent.

But rather than exporting omap_control_read/write, maybe you can
register the usb/bandgap whatever children with SCM core driver,
then have the runtime PM calls from children be passthrough calls
to the parent?

Maybe Kevin has some better ideas here?

Regards,

Tony



More information about the linux-arm-kernel mailing list