[PATCH] ASoC: tegra: fix build regression 32 bit kernels

Arnd Bergmann posted 1 patch 1 month ago
sound/soc/tegra/tegra210_mixer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] ASoC: tegra: fix build regression 32 bit kernels
Posted by Arnd Bergmann 1 month ago
From: Arnd Bergmann <arnd@arndb.de>

Compile-testing this driver for 32-bit causes a build failure:

x86_64-linux-ld: sound/soc/tegra/tegra210_mixer.o: in function `tegra210_mixer_configure_gain':
tegra210_mixer.c:(.text+0x709): undefined reference to `__udivdi3'

As the driver is only actually used on 64-bit Tegra210, rework the
division to use the div_u64() helper that avoids the libgcc call.

Fixes: 36645381b864 ("ASoC: tegra: Add per-stream Mixer Fade controls")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 sound/soc/tegra/tegra210_mixer.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/soc/tegra/tegra210_mixer.c b/sound/soc/tegra/tegra210_mixer.c
index f05617b5f433..d21f55dad0e3 100644
--- a/sound/soc/tegra/tegra210_mixer.c
+++ b/sound/soc/tegra/tegra210_mixer.c
@@ -157,8 +157,8 @@ static int tegra210_mixer_configure_gain(struct snd_soc_component *cmpnt,
 			if (i == DURATION_N3_ID)
 				val = mixer->duration[id];
 			else if (i == DURATION_INV_N3_ID)
-				val = (u32)(BIT_ULL(31 + TEGRA210_MIXER_PRESCALAR) /
-					    mixer->duration[id]);
+				val = div_u64(BIT_ULL(31 + TEGRA210_MIXER_PRESCALAR),
+					      mixer->duration[id]);
 			else
 				val = gain_params.duration[i];
 		}
-- 
2.39.5
Re: [PATCH] ASoC: tegra: fix build regression 32 bit kernels
Posted by Mark Brown 1 month ago
On Fri, May 08, 2026 at 10:00:25AM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> Compile-testing this driver for 32-bit causes a build failure:
> 
> x86_64-linux-ld: sound/soc/tegra/tegra210_mixer.o: in function `tegra210_mixer_configure_gain':
> tegra210_mixer.c:(.text+0x709): undefined reference to `__udivdi3'

Someone already sent this.
Re: [PATCH] ASoC: tegra: fix build regression 32 bit kernels
Posted by Thierry Reding 1 month ago
On Fri, May 08, 2026 at 09:51:27PM +0900, Mark Brown wrote:
> On Fri, May 08, 2026 at 10:00:25AM +0200, Arnd Bergmann wrote:
> > From: Arnd Bergmann <arnd@arndb.de>
> > 
> > Compile-testing this driver for 32-bit causes a build failure:
> > 
> > x86_64-linux-ld: sound/soc/tegra/tegra210_mixer.o: in function `tegra210_mixer_configure_gain':
> > tegra210_mixer.c:(.text+0x709): undefined reference to `__udivdi3'
> 
> Someone already sent this.

Indeed. Acked that one too.

Thierry
Re: [PATCH] ASoC: tegra: fix build regression 32 bit kernels
Posted by Thierry Reding 1 month ago
On Fri, May 08, 2026 at 10:00:25AM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> Compile-testing this driver for 32-bit causes a build failure:
> 
> x86_64-linux-ld: sound/soc/tegra/tegra210_mixer.o: in function `tegra210_mixer_configure_gain':
> tegra210_mixer.c:(.text+0x709): undefined reference to `__udivdi3'
> 
> As the driver is only actually used on 64-bit Tegra210, rework the
> division to use the div_u64() helper that avoids the libgcc call.

To be pedantic: the driver is also used on subsequent generations, but
your argument of it only ever being used on 64-bit systems is correct,
so:

Acked-by: Thierry Reding <treding@nvidia.com>