On Wed, Aug 29, 2012 at 10:00:32PM +0200, Marc Kleine-Budde wrote:
On 08/29/2012 01:01 PM, Sascha Hauer wrote:
quoted
On Wed, Aug 29, 2012 at 01:18:10PM +0300, Alexander Shishkin wrote:
quoted
Sascha Hauer [off-list ref] writes:
quoted
On Wed, Aug 29, 2012 at 10:50:08AM +0300, Alexander Shishkin wrote:
quoted
Richard Zhao [off-list ref] writes:
quoted
i.MX usb controllers shares non-core registers, which may include
SoC specific controls. We take it as a usbmisc device and usbmisc
driver set operations needed by ci13xxx_imx driver.
For example, Sabrelite board has bad over-current design, we can
usbmisc to disable over-current detect.
Why does this have to be part of the usb driver instead of SoC specific
code? It looks like you've created a whole new device/driver
infrastructure just to disable overcurrent for a specific board.
Richards code indeed only handles overcurrent for a specific board, but
there are more bits to configure in the longer run: power pin
polarities, ULPI/serial mode select and some more.
We already have a patch adding a usbmisc_imx53_init() function to that
driver.
quoted
quoted
Sounds to me like these things that should be taken care of by the phy
driver, which will likely be simpler from both driver's and devicetree's
perspective.
Most i.MX SoCs have three instances of the chipidea core. These cores
share a single register space for controlling the mentioned bits (the
usbmisc register space). The usbmisc looks different on the different
SoCs.
Indeed they control some phy specific aspects, but the phy itself may
also be an external ULPI or UTMI phy with a separate driver. So if we
integrate the usbmisc into the phy wouldn't that mean that it has to
be integrated into all possible phy drivers?
From a devicetrees perspective it makes sense to integrate the flags
into the chipidea nodes, because there is one node per chipidea core,
but only one usbmisc unit for all ports on the SoC. So we can do a:
chipidea@ofs {
disable-overcurrent = <1>;
};
instead of
usbmisc@ofs {
disable-overcurrent-port0 = <1>;
disable-overcurrent-port1 = <0>;
...
};
+1
IMHO looks much cleaner.
So, Marc agree on the patch too. Maybe you can give a reviewed-by? :)
Hi Alex,
What do you think?
Thanks
Richard
quoted
quoted
quoted
quoted
And the infrastructure boils down to a complex way of passing a callback
from imx driver to another imx driver, that only works if they are
probed in the right order. I don't see any point in doing it like this
other than inflating the device tree tables even further.
Why can't this be part of the SoC code like it is done, for example in
arch/arm/mach-omap2/control.c?
The settings are board specific, so there must be some way to configure
them in the devicetree.
But I'm sure there's a way to control board-specific settings/kludges
from devicetree?
Hm, yes. That's what Richard does, right? I may be misunderstanding you
here.
Sascha
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html