aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorWilliam Zhang2022-08-23 21:44:32 -0700
committerTom Rini2022-10-31 08:55:59 -0400
commit35751c7f3f01a6123e2965ad1b71a8e6a7a9c90d (patch)
tree2209b65ec232bdde16d5fbbb93d021a6d71fe669 /drivers
parent8c1a9c7de7d95f681adead869329cf8e53024c11 (diff)
timer: sti: convert sti-timer to arm a9 global timer
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@broadcom.com> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> Tested-by: Patrice Chotard <patrice.chotard@foss.st.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/timer/Kconfig8
-rw-r--r--drivers/timer/Makefile2
-rw-r--r--drivers/timer/arm_global_timer.c (renamed from drivers/timer/sti-timer.c)30
3 files changed, 22 insertions, 18 deletions
diff --git a/drivers/timer/Kconfig b/drivers/timer/Kconfig
index fd8745ffc2e..3b2fa2489b3 100644
--- a/drivers/timer/Kconfig
+++ b/drivers/timer/Kconfig
@@ -230,12 +230,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 7bfb7749e97..bc8b2c0bd04 100644
--- a/drivers/timer/Makefile
+++ b/drivers/timer/Makefile
@@ -24,7 +24,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
index 87444a0650f..065f10bb742 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@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,
};