[PATCH v3 3/4] clocksource/drivers/timer-mediatek: Convert timer-mediatek to a loadable module
Trilok Soni
trilokkumar.soni at oss.qualcomm.com
Tue Mar 3 21:41:46 PST 2026
On 3/3/2026 6:57 PM, Zhipeng Wang wrote:
> From: Chun-Hung Wu <chun-hung.wu at mediatek.com>
>
> Convert the timer-mediatek driver into a loadable module so that
> it can register an always-on timer as the tick_broadcast_device on
> MediaTek SoCs. This helps support GKI modular configurations.
You have expanded GKI in the cover letter but not in the commit text.
Please add that in the commit text since this patch will be committed
and not the cover letter.
>
> Signed-off-by: Chun-Hung Wu <chun-hung.wu at mediatek.com>
> Signed-off-by: Walter Chang <walter.chang at mediatek.com>
> Tested-by: Walter Chang <walter.chang at mediatek.com>
> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>
> Reviewed-by: Alexandre Mergnat <amergnat at baylibre.com>
> Signed-off-by: Zhipeng Wang <zhipeng.wang_1 at nxp.com>
> ---
> drivers/clocksource/Kconfig | 2 +-
> drivers/clocksource/timer-mediatek.c | 33 ++++++++++++++++++++++++++++
> 2 files changed, 34 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
> index fd9112706545..2112efb85029 100644
> --- a/drivers/clocksource/Kconfig
> +++ b/drivers/clocksource/Kconfig
> @@ -488,7 +488,7 @@ config SYS_SUPPORTS_SH_CMT
> bool
>
> config MTK_TIMER
> - bool "Mediatek timer driver" if COMPILE_TEST
> + tristate "MediaTek timer driver"
> depends on HAS_IOMEM
> select TIMER_OF
> select CLKSRC_MMIO
> diff --git a/drivers/clocksource/timer-mediatek.c b/drivers/clocksource/timer-mediatek.c
> index 7bcb4a3f26fb..4ad4bac6f34b 100644
> --- a/drivers/clocksource/timer-mediatek.c
> +++ b/drivers/clocksource/timer-mediatek.c
> @@ -13,6 +13,9 @@
> #include <linux/clocksource.h>
> #include <linux/interrupt.h>
> #include <linux/irqreturn.h>
> +#include <linux/module.h>
> +#include <linux/of_device.h>
> +#include <linux/platform_device.h>
> #include <linux/sched_clock.h>
> #include <linux/slab.h>
> #include "timer-of.h"
> @@ -337,5 +340,35 @@ static int __init mtk_gpt_init(struct device_node *node)
>
> return 0;
> }
> +
> +#ifndef MODULE
> TIMER_OF_DECLARE(mtk_mt6577, "mediatek,mt6577-timer", mtk_gpt_init);
> TIMER_OF_DECLARE(mtk_mt6765, "mediatek,mt6765-timer", mtk_syst_init);
> +#else
> +static int mtk_timer_probe(struct platform_device *pdev)
> +{
> + int (*timer_init)(struct device_node *node);
> + struct device_node *np = pdev->dev.of_node;
> +
> + timer_init = of_device_get_match_data(&pdev->dev);
> + return timer_init(np);
> +}
> +
> +static const struct of_device_id mtk_timer_match_table[] = {
> + { .compatible = "mediatek,mt6577-timer", .data = mtk_gpt_init },
> + { .compatible = "mediatek,mt6765-timer", .data = mtk_syst_init },
> + { /* sentinel */ }
> +};
> +
> +static struct platform_driver mtk_timer_driver = {
> + .probe = mtk_timer_probe,
> + .driver = {
> + .name = "mediatek-timer",
> + .of_match_table = mtk_timer_match_table,
> + },
> +};
> +module_platform_driver(mtk_timer_driver);
> +
> +MODULE_DESCRIPTION("MediaTek Timer driver");
> +MODULE_LICENSE("GPL");
> +#endif
More information about the Linux-mediatek
mailing list