[PATCH] clocksource/drivers/timer-mediatek: initialize GPT6 as system counter
Akari Tsuyukusa
akkun11.open at gmail.com
Thu Mar 26 06:08:52 PDT 2026
On Thu, Mar 26, 2026 at 10:00 AM Roman Vivchar via B4 Relay
<devnull+rva333.protonmail.com at kernel.org> wrote:
> On certain MediaTek SoCs like mt6572 (likely before the CPUXGPT was
> introduced), the generic arch timer is fed by the GPT6. Some bootloaders
> don't initialize it properly, leading to dead arch timer.
>
> Fix this by configuring GPT6 when the MediaTek timer is probed. This
> makes arch timer work properly and removes IPI overhead from MediaTek
> timer broadcast when arch timer is used.
>
> If the timer was configured by the bootloader, this change is no-op.
>
> Tested-by: Akari Tsuyukusa <akkun11.open at gmail.com> # MT6589
> Signed-off-by: Roman Vivchar <rva333 at protonmail.com>
> ---
> drivers/clocksource/timer-mediatek.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/clocksource/timer-mediatek.c b/drivers/clocksource/timer-mediatek.c
> index 7bcb4a3f26fb..7de34cace572 100644
> --- a/drivers/clocksource/timer-mediatek.c
> +++ b/drivers/clocksource/timer-mediatek.c
> @@ -22,6 +22,8 @@
>
> #define TIMER_SYNC_TICKS (3)
>
> +#define TIMER_SYSCNT (6)
> +
> /* gpt */
> #define GPT_IRQ_EN_REG 0x00
> #define GPT_IRQ_ENABLE(val) BIT((val) - 1)
> @@ -335,6 +337,9 @@ static int __init mtk_gpt_init(struct device_node *node)
>
> mtk_gpt_enable_irq(&to, TIMER_CLK_EVT);
>
> + /* Configure GPT6 to feed arch timer */
> + mtk_gpt_setup(&to, TIMER_SYSCNT, GPT_CTRL_OP_FREERUN);
> +
> return 0;
> }
> TIMER_OF_DECLARE(mtk_mt6577, "mediatek,mt6577-timer", mtk_gpt_init);
>
> ---
Although it has already been written,
I tested this patch on MT6589 (Lenovo YOGA Tablet 10 Wi-Fi),
and I have confirmed that MediaTek's timer and Arm Generic Timer are
working properly as before the patch was applied.
Therefore,
Tested-by: Akari Tsuyukusa <akkun11.open at gmail.com>
Best regards,
Akari Tsuyukusa
More information about the Linux-mediatek
mailing list