[U-Boot] [PATCH 13/14] tegra: Add EMC settings for Seaboard, Harmony

Stephen Warren swarren at nvidia.com
Fri Jan 13 01:01:32 CET 2012


Simon Glass wrote at Thursday, January 12, 2012 4:55 PM:
> On Thu, Jan 12, 2012 at 3:42 PM, Stephen Warren <swarren at nvidia.com> wrote:
> > Simon Glass wrote at Thursday, January 12, 2012 4:05 PM:
> >> On Tue, Jan 10, 2012 at 10:46 AM, Stephen Warren <swarren at nvidia.com> wrote:
> >> > On 12/26/2011 12:33 PM, Simon Glass wrote:
> >> >> From: Jimmy Zhang <jimmzhang at nvidia.com>
> >> >>
> >> >> Set Seaboard and Harmony to optimal memory settings based on the SOC
> >> >> in use (T20 or T25).
> > ...
> >> >> +int board_emc_init(void)
> >> >> +{
> >> >> +       int     i;
> >> >> +       DECLARE_GLOBAL_DATA_PTR;
> >> >> +
> >> >> +#ifdef CONFIG_TEGRA_PMU
> >> >> +       /* if voltage has not been set properly, return */
> >> >> +       if (!pmu_is_voltage_nominal())
> >> >> +               return -1;
> >> >> +#endif
> >> >
> >> > Why/when would the PMU voltage not be nominal?
> >>
> >> On boot, it starts up lower and we raise it to nominal so we can run
> >> at full speed.
> >>
> >> > Can't we error out the compile if the options that cause the PMU voltage
> >> > to be initialized to nominal are not set, instead of detecting this at
> >> > runtime?
> >>
> >> I don't think so, since we can't know in U-Boot what the start-up voltages are.
> >
> > So how does the system get to the nominal state? And if board_emc_init()
> > is called when the system isn't in the nominal state, does it somehow get
> > called again later once it is, so that the EMC initialization doesn't fail
> > the error-check quoted above?
> 
> We call board_emc_init() after pmu_set_nominal().
> 
> >
> > In other words, presumably U-Boot explicitly programs the PMU into the
> > nominal stage at some point. Shouldn't we defer calling board_emc_init()
> > until after that time, thus making that error-check redundant?
> 
> Yes, but if you look at the patch above, that's what we do:
> 
>  #ifdef CONFIG_TEGRA_PMU
>        pmu_set_nominal();
> +
> +       board_emc_init();
>  #endif
>  #endif

OK, so in practice,

/* if voltage has not been set properly, return */
if (!pmu_is_voltage_nominal())

... will never fire. My original point was that if so, why is that check
needed? I suppose it's a reasonable safety net though - that's the
reason?

-- 
nvpublic



More information about the U-Boot mailing list