[PATCH v7 0/3] Timer support for ARM Tegra

Svyatoslav Ryhel clamor95 at gmail.com
Tue Jan 31 16:24:06 CET 2023


Thanks. In this case we should stick with clk_m use and add TIMER
config into non-T186 places of mach-tegra Kconfig. That should be it.

вт, 31 січ. 2023 р. о 17:17 Thierry Reding <thierry.reding at gmail.com> пише:
>
> On Fri, Jan 27, 2023 at 10:27:57PM +0200, Svyatoslav R. wrote:
> > On 1/27/23 19:15, Thierry Reding wrote:
> > > On Fri, Jan 27, 2023 at 09:13:09AM +0200, Svyatoslav Ryhel wrote:
> > > > - ARM: tegra: remap clock_osc_freq for all Tegra family
> > > > Enum clock_osc_freq was designed to use only with T20.
> > > > This patch remaps it to use additional frequencies, added in
> > > > T30+ SoC while maintaining backwards compatibility with T20.
> > > >
> > > > - drivers: timer: add timer driver for ARMv7 based Tegra devices
> > > > Add timer support for T20/T30/T114/T124 and T210 based devices.
> > > > Driver is based on DM, has device tree support and can be
> > > > used on SPL and early boot stage.
> > > >
> > > > Arm64 Tegra (apart T210) according to comment in tegra-common.h use
> > > > architected timer.
> > > >
> > > > - ARM: tegra: include timer as default option
> > > > Enable TIMER as default option for all Tegra devices and
> > > > enable TEGRA_TIMER for TEGRA_ARMV7_COMMON and TEGRA210.
> > > > Additionally enable SPL_TIMER if build as SPL part and
> > > > drop deprecated configs from common header.
> > > >
> > > > P. S. I have no arm64 Tegra and according to comment in
> > > > tegra-common.h
> > > > Use the Tegra US timer on ARMv7, but the architected timer on ARMv8.
> > > >
> > > > ---
> > > > Changeog from V6
> > > >   - use clk_m as timer calibration clock (this should properly fix T210)
> > > >   - enable timer for T210
> > > >
> > > > Changed from v5:
> > > >   - added paz00 tester
> > > >
> > > > Changed from v4:
> > > >   - added comments
> > > >
> > > > Changed from v3:
> > > >   - removed BOOTSTAGE ifdefs
> > > >   - use early timer on boot stage unconditionally
> > > > ---
> > > > Svyatoslav Ryhel (3):
> > > >    ARM: tegra: remap clock_osc_freq for all Tegra family
> > > >    drivers: timer: add driver for ARMv7 based Tegra devices and T210
> > > >    ARM: tegra: include timer as default option
> > > >
> > > >   arch/arm/Kconfig                        |   1 +
> > > >   arch/arm/include/asm/arch-tegra/clock.h |   9 +-
> > > >   arch/arm/mach-tegra/Kconfig             |   3 +
> > > >   arch/arm/mach-tegra/clock.c             |  17 +++-
> > > >   arch/arm/mach-tegra/cpu.c               |  70 ++++++++++---
> > > >   arch/arm/mach-tegra/tegra114/clock.c    |  13 +--
> > > >   arch/arm/mach-tegra/tegra124/clock.c    |  13 +--
> > > >   arch/arm/mach-tegra/tegra20/clock.c     |   4 +-
> > > >   arch/arm/mach-tegra/tegra210/clock.c    |  22 +---
> > > >   arch/arm/mach-tegra/tegra30/clock.c     |  10 +-
> > > >   drivers/timer/Kconfig                   |   8 ++
> > > >   drivers/timer/Makefile                  |   1 +
> > > >   drivers/timer/tegra-timer.c             | 130 ++++++++++++++++++++++++
> > > >   drivers/usb/host/ehci-tegra.c           |  46 +++++++--
> > > >   include/configs/tegra-common.h          |   6 --
> > > >   15 files changed, 274 insertions(+), 79 deletions(-)
> > > >   create mode 100644 drivers/timer/tegra-timer.c
> > > Ugh... turns out I had completely messed up the testing on Tegra186 and
> > > it wasn't working at all. The problem is that the selection of the TIMER
> > > symbol for all of Tegra causes the driver model to be used, but there is
> > > no DM driver for the architected timer that's used on Tegra186.
> > >
> > > The quickest fix would be to do this:
> > >
> > > --- >8 ---
> > > diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
> > > index b50eec5b8c9b..05c8ce0e08dd 100644
> > > --- a/arch/arm/mach-tegra/Kconfig
> > > +++ b/arch/arm/mach-tegra/Kconfig
> > > @@ -56,7 +56,6 @@ config TEGRA_COMMON
> > >     select MISC
> > >     select OF_CONTROL
> > >     select SPI
> > > -   select TIMER
> > >     imply CMD_DM
> > >     imply CRC32_VERIFY
> > > @@ -83,6 +82,7 @@ config TEGRA_ARMV7_COMMON
> > >     select TEGRA_PINCTRL
> > >     select TEGRA_PMC
> > >     select TEGRA_TIMER
> > > +   select TIMER
> > >   config TEGRA_ARMV8_COMMON
> > >     bool "Tegra 64-bit common options"
> > > @@ -137,6 +137,7 @@ config TEGRA210
> > >     select TEGRA_PMC
> > >     select TEGRA_PMC_SECURE
> > >     select TEGRA_TIMER
> > > +   select TIMER
> > >   config TEGRA186
> > >     bool "Tegra186 family"
> > > --- >8 ---
> > >
> > > So basically make TIMER selected on everything except Tegra186, so that
> > > on Tegra186 things are basically unmodified.
> >
> > I can propose to include 'select TIMER' directly into TEGRA_TIMER config
> > option. This will eliminate need of including it into mach-tegra Kconfigs.
>
> TEGRA_TIMER itself depends on TIMER, which is a more correct dependency
> given how that's all structured.
>
> > BTW, may you check current patch set on T124 and T210 if those work
> > properly. My T30 devices work fine and same as before after switch to clk_m
> > as timer calibration clock.
>
> With the above on top, the series works fine on Tegra124, Tegra210 and
> Tegra186.
>
> Thierry


More information about the U-Boot mailing list