[U-Boot] [PATCH] TI: DaVinci DA850 EVM: support passing device speed grade information to kernel

Nori, Sekhar nsekhar at ti.com
Thu Aug 12 08:14:37 CEST 2010


Hi Nishanth,

On Thu, Aug 12, 2010 at 11:13:10, Nishanth Menon wrote:
> On 08/11/2010 10:37 AM, Nori, Sekhar wrote:
> > Hi Nishanth,
> >
> > On Wed, Aug 11, 2010 at 09:33:29, Nishanth Menon wrote:
> >> On 08/10/2010 06:39 AM, Sekhar Nori wrote:
> >
> >>> diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c
> >>> index 959b2c6..6a6d4fb 100644
> >>> --- a/board/davinci/da8xxevm/da850evm.c
> >>> +++ b/board/davinci/da8xxevm/da850evm.c
> >>> @@ -70,6 +70,44 @@ static const struct lpsc_resource lpsc[] = {
> >>>      { DAVINCI_LPSC_GPIO },
> >>>    };
> >>>
> >>> +#ifndef CONFIG_DA850_EVM_MAX_SPEED
> >>> +#define CONFIG_DA850_EVM_MAX_SPEED 300000
> >>> +#endif
> >>> +
> >>> +/*
> >>> + * get_board_rev() - setup to pass kernel board revision information
> >>> + * Returns:
> >>> + * bit[0-3]        Maximum speed supported by the DA850/OMAP-L138/AM18x part
> >>> + *         0 - 300 MHz
> >>> + *         1 - 372 MHz
> >>> + *         2 - 408 MHz
> >>> + *         3 - 456 MHz
> >>> + */
> >>> +u32 get_board_rev(void)
> >>> +{
> >>> +   char *s;
> >>> +   u32 maxspeed = CONFIG_DA850_EVM_MAX_SPEED;
> >>> +   u32 rev = 0;
> >>> +
> >>> +   s = getenv("maxspeed");
> >>> +   if (s)
> >>> +           maxspeed = simple_strtoul(s, NULL, 10);
> >>> +
> >>> +   switch (maxspeed) {
> >>> +   case 456000:
> >>> +           rev |= 3;
> >>> +           break;
> >>> +   case 408000:
> >>> +           rev |= 2;
> >>> +           break;
> >>> +   case 372000:
> >>> +           rev |= 1;

[...]

> >
> >>> +           break;
> >>> +   }
> >>> +
> >>> +   return rev;
> >>
> >> IMHO, the logic could be simplified?
> >>
> >> option 1:
> >> u8 rev=0;
> >> s = simple_strtoul(s, NULL, 10);
> aarrg.. emailing with eyes half shut mistake
> should have been:
> s = getenv("maxspeed");
> >> if (s) {
> >>        switch (simple_strtoul(s, NULL, 10)) {
> >>        case 456000:
> >>                rev = 3;
> >>                break;
> >>        case 408000:
> >>                rev = 2;
> >>                break;
> >>        case 372000:
> >>                rev = 1;
> >>                break;
> >>        }
> >> }
> >
> > Not sure how this simplifies the logic. I'd argue multiple strtoul
> > calls are actually better avoided. How does it handle the case where
> > max speed is to be set using board configuration?
> >
> my bad, the above should explain..

I still don't see how this handles the case when maxspeed env variable
is not set. The above code will just default to rev = 0 in that case.

We haven't gotten rid of any constructs either so not sure what the
simplification here is.

Thanks,
Sekhar




More information about the U-Boot mailing list