[PATCH 4/4] ASoC: tlv320aic32x4: Use div64_ul for division by unsigned long
From: wangdich9700
Date: Fri Jul 17 2026 - 03:05:21 EST
From: wangdicheng <wangdicheng@xxxxxxxxxx>
Fix a compiler warning about do_div() truncating an unsigned long divisor:
sound/soc/codecs/tlv320aic32x4-clk.c:169:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead.
do_div() truncates the divisor to 32 bits, but parent_rate is unsigned
long which is 64-bit on 64-bit platforms. Use div64_ul() to correctly
handle the unsigned long divisor across all architectures.
Fixes: 514b044cba66 ("ASoC: tlv320aic32x4: Model PLL in CCF")
Cc: <stable@xxxxxxxxxxxxxxx>
Signed-off-by: wangdicheng <wangdicheng@xxxxxxxxxx>
---
sound/soc/codecs/tlv320aic32x4-clk.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/codecs/tlv320aic32x4-clk.c b/sound/soc/codecs/tlv320aic32x4-clk.c
index 5c0a76a4a106..9359492051ad 100644
--- a/sound/soc/codecs/tlv320aic32x4-clk.c
+++ b/sound/soc/codecs/tlv320aic32x4-clk.c
@@ -166,7 +166,7 @@ static int clk_aic32x4_pll_calc_muldiv(struct clk_aic32x4_pll_muldiv *settings,
* math in the kernel.
*/
multiplier = (u64) rate * settings->p * 10000;
- do_div(multiplier, parent_rate);
+ multiplier = div64_ul(multiplier, parent_rate);
/*
* J can't be over 64, so R can scale this.
--
2.25.1