[PATCH v7 0/3] Timer support for ARM Tegra
Svyatoslav R.
clamor95 at gmail.com
Fri Jan 27 21:27:57 CET 2023
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