[PATCH v2 1/2] timer: sti: convert sti-timer to arm a9 global timer
Patrice CHOTARD
patrice.chotard at foss.st.com
Wed Aug 24 17:08:01 CEST 2022
Hi William
On 8/24/22 06:44, William Zhang wrote:
> STI timer is actually ARM Cortex A9 global timer. Convert the driver to
> use generic global timer name and make it consistent with Linux kernel
> global timer driver. This also allows any A9 based device to use this
> driver.
>
> Signed-off-by: William Zhang <william.zhang at broadcom.com>
> ---
>
> (no changes since v1)
>
> MAINTAINERS | 2 +-
> drivers/timer/Kconfig | 8 +++--
> drivers/timer/Makefile | 2 +-
> .../timer/{sti-timer.c => arm_global_timer.c} | 30 ++++++++++---------
> 4 files changed, 23 insertions(+), 19 deletions(-)
> rename drivers/timer/{sti-timer.c => arm_global_timer.c} (66%)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 1103bb068154..f7d77bb8cfa9 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -503,7 +503,7 @@ F: drivers/mmc/sti_sdhci.c
> F: drivers/reset/sti-reset.c
> F: drivers/serial/serial_sti_asc.c
> F: drivers/sysreset/sysreset_sti.c
> -F: drivers/timer/sti-timer.c
> +F: drivers/timer/arm_global_timer.c
> F: drivers/usb/host/dwc3-sti-glue.c
> F: include/dwc3-sti-glue.h
> F: include/dt-bindings/clock/stih407-clks.h
> diff --git a/drivers/timer/Kconfig b/drivers/timer/Kconfig
> index 20b5af7e260f..3e1d70fbb930 100644
> --- a/drivers/timer/Kconfig
> +++ b/drivers/timer/Kconfig
> @@ -215,12 +215,14 @@ config SANDBOX_TIMER
> Select this to enable an emulated timer for sandbox. It gets
> time from host os.
>
> -config STI_TIMER
> - bool "STi timer support"
> +config ARM_GLOBAL_TIMER
> + bool "ARM Cortex A9 global timer support"
> depends on TIMER
> + depends on ARM
> default y if ARCH_STI
> help
> - Select this to enable a timer for STi devices.
> + Select this to enable global timer found on ARM Cortex A9
> + based devices.
>
> config STM32_TIMER
> bool "STM32 timer support"
> diff --git a/drivers/timer/Makefile b/drivers/timer/Makefile
> index d9822a537009..d23569365408 100644
> --- a/drivers/timer/Makefile
> +++ b/drivers/timer/Makefile
> @@ -22,7 +22,7 @@ obj-$(CONFIG_RISCV_TIMER) += riscv_timer.o
> obj-$(CONFIG_ROCKCHIP_TIMER) += rockchip_timer.o
> obj-$(CONFIG_SANDBOX_TIMER) += sandbox_timer.o
> obj-$(CONFIG_$(SPL_)SIFIVE_CLINT) += sifive_clint_timer.o
> -obj-$(CONFIG_STI_TIMER) += sti-timer.o
> +obj-$(CONFIG_ARM_GLOBAL_TIMER) += arm_global_timer.o
> obj-$(CONFIG_STM32_TIMER) += stm32_timer.o
> obj-$(CONFIG_X86_TSC_TIMER) += tsc_timer.o
> obj-$(CONFIG_MTK_TIMER) += mtk_timer.o
> diff --git a/drivers/timer/sti-timer.c b/drivers/timer/arm_global_timer.c
> similarity index 66%
> rename from drivers/timer/sti-timer.c
> rename to drivers/timer/arm_global_timer.c
> index 87444a0650f6..065f10bb742b 100644
> --- a/drivers/timer/sti-timer.c
> +++ b/drivers/timer/arm_global_timer.c
> @@ -2,6 +2,8 @@
> /*
> * Copyright (C) 2017, STMicroelectronics - All Rights Reserved
> * Author(s): Patrice Chotard, <patrice.chotard at foss.st.com> for STMicroelectronics.
> + *
> + * ARM Cortext A9 global timer driver
> */
>
> #include <common.h>
> @@ -13,13 +15,13 @@
> #include <asm/io.h>
> #include <asm/arch-armv7/globaltimer.h>
>
> -struct sti_timer_priv {
> +struct arm_global_timer_priv {
> struct globaltimer *global_timer;
> };
>
> -static u64 sti_timer_get_count(struct udevice *dev)
> +static u64 arm_global_timer_get_count(struct udevice *dev)
> {
> - struct sti_timer_priv *priv = dev_get_priv(dev);
> + struct arm_global_timer_priv *priv = dev_get_priv(dev);
> struct globaltimer *global_timer = priv->global_timer;
> u32 low, high;
> u64 timer;
> @@ -37,10 +39,10 @@ static u64 sti_timer_get_count(struct udevice *dev)
> return (u64)((timer << 32) | low);
> }
>
> -static int sti_timer_probe(struct udevice *dev)
> +static int arm_global_timer_probe(struct udevice *dev)
> {
> struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev);
> - struct sti_timer_priv *priv = dev_get_priv(dev);
> + struct arm_global_timer_priv *priv = dev_get_priv(dev);
> struct clk clk;
> int err;
> ulong ret;
> @@ -66,20 +68,20 @@ static int sti_timer_probe(struct udevice *dev)
> return 0;
> }
>
> -static const struct timer_ops sti_timer_ops = {
> - .get_count = sti_timer_get_count,
> +static const struct timer_ops arm_global_timer_ops = {
> + .get_count = arm_global_timer_get_count,
> };
>
> -static const struct udevice_id sti_timer_ids[] = {
> +static const struct udevice_id arm_global_timer_ids[] = {
> { .compatible = "arm,cortex-a9-global-timer" },
> {}
> };
>
> -U_BOOT_DRIVER(sti_timer) = {
> - .name = "sti_timer",
> +U_BOOT_DRIVER(arm_global_timer) = {
> + .name = "arm_global_timer",
> .id = UCLASS_TIMER,
> - .of_match = sti_timer_ids,
> - .priv_auto = sizeof(struct sti_timer_priv),
> - .probe = sti_timer_probe,
> - .ops = &sti_timer_ops,
> + .of_match = arm_global_timer_ids,
> + .priv_auto = sizeof(struct arm_global_timer_priv),
> + .probe = arm_global_timer_probe,
> + .ops = &arm_global_timer_ops,
> };
Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>
Tested-by: Patrice Chotard <patrice.chotard at foss.st.com>
Tested on stih410-b2260 boards.
Thanks
Patrice
More information about the U-Boot
mailing list