| From c49513d2d5052b7134ccbb0b8d271c4dff22f6fc Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 20 Jun 2025 13:19:35 +0200 |
| Subject: clocksource/drivers/tegra186: Avoid 64-bit division |
| |
| From: Arnd Bergmann <arnd@arndb.de> |
| |
| [ Upstream commit 409f8fe03e08f92bf5be96cedbcd7a3e8fb2eeaf ] |
| |
| The newly added function causes a build failure on 32-bit targets with |
| older compiler version such as gcc-10: |
| |
| arm-linux-gnueabi-ld: drivers/clocksource/timer-tegra186.o: in function `tegra186_wdt_get_timeleft': |
| timer-tegra186.c:(.text+0x3c2): undefined reference to `__aeabi_uldivmod' |
| |
| The calculation can trivially be changed to avoid the division entirely, |
| as USEC_PER_SEC is a multiple of 5. Change both such calculation for |
| consistency, even though gcc apparently managed to optimize the other one |
| properly already. |
| |
| [dlezcano : Fixed conflict with 20250614175556.922159-2-linux@roeck-us.net ] |
| |
| Fixes: 28c842c8b0f5 ("clocksource/drivers/timer-tegra186: Add WDIOC_GETTIMELEFT support") |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> |
| Link: https://lore.kernel.org/r/20250620111939.3395525-1-arnd@kernel.org |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/clocksource/timer-tegra186.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/clocksource/timer-tegra186.c b/drivers/clocksource/timer-tegra186.c |
| index 7b506de654386..47bdb1e320af9 100644 |
| --- a/drivers/clocksource/timer-tegra186.c |
| +++ b/drivers/clocksource/timer-tegra186.c |
| @@ -159,7 +159,7 @@ static void tegra186_wdt_enable(struct tegra186_wdt *wdt) |
| tmr_writel(wdt->tmr, TMRCSSR_SRC_USEC, TMRCSSR); |
| |
| /* configure timer (system reset happens on the fifth expiration) */ |
| - value = TMRCR_PTV(wdt->base.timeout * USEC_PER_SEC / 5) | |
| + value = TMRCR_PTV(wdt->base.timeout * (USEC_PER_SEC / 5)) | |
| TMRCR_PERIODIC | TMRCR_ENABLE; |
| tmr_writel(wdt->tmr, value, TMRCR); |
| |
| -- |
| 2.51.0 |
| |