mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
ASoC: tegra: tegra210-mixer: Use div_u64() for 64-bit division
A MIPS allmodconfig build with LLVM fails during modpost: ERROR: modpost: "__udivdi3" [sound/soc/tegra/snd-soc-tegra210-mixer.ko] undefined! tegra210_mixer_configure_gain() divides a 64-bit BIT_ULL() value by the fade duration. On 32-bit MIPS, clang emits a call to __udivdi3 for that plain C division, but that compiler helper is not exported to modules. Use div_u64() for the inverse duration calculation so the driver uses the kernel's 64-bit division helper instead of emitting a compiler runtime call. Assisted-by: Codex:GPT-5.5 Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://patch.msgid.link/20260507232131.438589-1-rosenp@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
c4e19a93df
commit
04b8f96b10
|
|
@ -7,6 +7,7 @@
|
|||
#include <linux/clk.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/math64.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
|
@ -157,8 +158,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];
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user