Re: [PATCH v2 1/4] ARM: davinci: fix cpufreq registration on da850-evm

From: Adam Ford
Date: Wed Apr 03 2019 - 11:50:01 EST


On Wed, Apr 3, 2019 at 7:50 AM Bartosz Golaszewski <brgl@xxxxxxxx> wrote:
>
> År., 27 mar 2019 o 12:14 Sekhar Nori <nsekhar@xxxxxx> napisaÅ(a):
> >
> > Hi Bart,
> >
> > On 26/03/19 11:21 PM, Bartosz Golaszewski wrote:
> > > wt., 26 mar 2019 o 15:00 Adam Ford <aford173@xxxxxxxxx> napisaÅ(a):
> > >>
> > >> On Fri, Mar 22, 2019 at 8:31 AM Bartosz Golaszewski <brgl@xxxxxxxx> wrote:
> > >>>
> > >>> From: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx>
> > >>>
> > >>> The system_rev variable is never set on davinci and is always 0, so
> > >>> we're using the default max operating point of 300MHz. The cvdd supply
> > >>> comes from the tps6507 pmic and the voltage can go all the way to 1.3V
> > >>> so the maximum supported rate should be 456MHz.
> > >>
> > >> My understanding is that only certain revisions of the silicon can go
> > >> to 456MHz. The L138's Datasheet lists both a 456 and 375 version. I
> > >> cannot find a way to read a register to determine which version of the
> > >> silicon is available. Maybe Sekhar can confirm.
> > >>
> > >
> > > Commit 28bd2c341120 ("davinci: am18x/da850/omap-l138 evm: add support
> > > for higher speed grades") mentions the following:
> > >
> > > ---
> > > U-Boot on the EVM sets up ATAG_REVISION to inform the OS
> > > regarding the speed grade supported by the silicon. We use
> > > this information to pass on the speed grade information to
> > > the SoC code.
> > > ---
> > >
> > > Should the system_rev somehow reflect that revision? Any way I can check it?
> >
> > Can you check if the procedure in doc/README.davinci in U-Boot sources
> > still works?
> >
> > Environment Variables
> > =====================
> >
> > The DA850 EVM allows the user to specify the maximum cpu clock allowed by the
> > silicon, in Hz, via an environment variable "maxcpuclk".
> >
> > The maximum clock rate allowed depends on the silicon populated on the EVM.
> > Please make sure you understand the restrictions placed on this clock in the
> > device specific datasheet before setting up this variable. This information is
> > passed to the Linux kernel using the ATAG_REVISION atag.
> >
> > If "maxcpuclk" is not defined, the configuration CONFIG_DA850_EVM_MAX_CPU_CLK
> > is used to obtain this information.
> >
> > Thanks,
> > Sekhar
>
> Hi Sekhar,
>
> I built the current upstream u-boot and the get_board_rev() function
> for da850-evm doesn't seem to be called at all. For instance the
> lego-ev3 platform does this:
>
> ./lego/ev3/legoev3.c:108: board_rev = get_board_rev();
>
> but in davinci this function seems to be unused and I don't see it
> called from any other core u-boot component. I don't see any commit
> that would mention this function but there are a lot of commits
> removing get_board_rev() for other boards in git log. Is it possible
> it stopped being used at some point?

Look for setup_revision_tag in arch/arm/lib/bootm.c

The function appears to be called from there.

There is a __weak reference in the header file which I think allows
people to remove them without breaking bootm.

adam
>
> Bart