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

Tom Warren TWarren at nvidia.com
Tue Jan 31 16:18:12 CET 2023


Has this been tested yet? I want to get it into the next PR, and I need a tested-by for V7 before I can do that.

Thanks,

Tom

-----Original Message-----
From: Svyatoslav R. <clamor95 at gmail.com> 
Sent: Friday, January 27, 2023 1:28 PM
To: Thierry Reding <thierry.reding at gmail.com>
Cc: Rayagonda Kokatanur <rayagonda.kokatanur at broadcom.com>; Tom Warren <twarren at nvidia.com>; Marek Vasut <marex at denx.de>; Maxim Schwalm <maxim.schwalm at gmail.com>; Dmitry Osipenko <digetx at gmail.com>; Jonas Schwöbel <jonasschwoebel at yahoo.de>; Agneli <poczt at protonmail.ch>; Heinrich Schuchardt <xypron.glpk at gmx.de>; Michal Simek <michal.simek at amd.com>; Stefan Roese <sr at denx.de>; Eugen Hristev <eugen.hristev at microchip.com>; Michael Walle <michael at walle.cc>; Simon Glass <sjg at chromium.org>; Jim Liu <jim.t90615 at gmail.com>; William Zhang <william.zhang at broadcom.com>; Rick Chen <rick at andestech.com>; Stefan Herbrechtsmeier <stefan.herbrechtsmeier at weidmueller.com>; Andre Przywara <andre.przywara at arm.com>; Jaehoon Chung <jh80.chung at samsung.com>; u-boot at lists.denx.de
Subject: Re: [PATCH v7 0/3] Timer support for ARM Tegra

External email: Use caution opening links or attachments


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.

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.

Best Regards, Svyatoslav R.

> Thierry


More information about the U-Boot mailing list