[U-Boot] [PATCH 2/8] tegra: usb: make controller init functions more self contained

Lucas Stach
2012-10-30T13:16:43Z

Hello Simon,

Am Dienstag, den 30.10.2012, 06:03 -0700 schrieb Simon Glass:
> Hi Lucas,
>
> On Tue, Oct 30, 2012 at 2:22 AM, Lucas Stach <dev@lynxeye.de> wrote:
> > There is no need to pass around all those parameters. The init functions
> > are able to easily extract all the needed setup info on their own.
> >
> > Signed-off-by: Lucas Stach <dev@lynxeye.de>
> > ---
> > arch/arm/cpu/armv7/tegra20/usb.c | 24 ++++++++++++------------
> > 1 Datei ge?ndert, 12 Zeilen hinzugef?gt(+), 12 Zeilen entfernt(-)
>
> I'm not sure I agree with the premise of this patch.
>
> At the top level it calls clock_get_osc_freq() to get the frequency.
> That is then passed to the two places that need it.
>
> It doesn't seem right to me to call clock_get_osc_freq() again in the
> lower level function just to avoid a parameter. On ARM at least a few
> parameters are a cheap way of passing data around.
>
The intent of this patch is not really to save up on parameters passed,
but to make it possible to later move out the controller initialization
into the ehci_hcd_init function without having to save away this global
state for later use.

We have to init at most 2 controllers where timing matters, so I think
it's the right thing to get the SoC global clock state at those two
occasions to avoid inflating the file global state.

> It also allows the lower-level functions to deal with what they need
> to, rather than all functions having to reference the global state
> independently, each one digging down to what it actually needs.
>
The controller init functions get passed the state only of the one port
they have to initialize. There is no point in extracting things at an
upper level and passing it into the functions, if it's exactly the same
thing that is stored in the port state.

Regards,
Lucas