On Thu, Oct 31, 2024, at 12:27, Dan Carpenter wrote: > Arnd, can you take a look at this? > > diff --git a/drivers/media/dvb-frontends/cxd2841er.c > b/drivers/media/dvb-frontends/cxd2841er.c > index d925ca24183b..e3131f5c6708 100644 > --- a/drivers/media/dvb-frontends/cxd2841er.c > +++ b/drivers/media/dvb-frontends/cxd2841er.c > @@ -314,7 +314,7 @@ static u32 cxd2841er_calc_iffreq_xtal(enum > cxd2841er_xtal xtal, u32 ifhz) > u64 tmp; > > tmp = (u64) ifhz * 16777216; > - do_div(tmp, ((xtal == SONY_XTAL_24000) ? 48000000 : 41000000)); > +// do_div(tmp, ((xtal == SONY_XTAL_24000) ? 48000000 : 41000000)); > > return (u32) tmp; > } Not sure what is happening exactly, probably something where __builtin_constant_p() is inconclusive. The patch below seems to address it without impairing readability. Arnd --- a/drivers/media/dvb-frontends/cxd2841er.c +++ b/drivers/media/dvb-frontends/cxd2841er.c @@ -311,12 +311,8 @@ static int cxd2841er_set_reg_bits(struct cxd2841er_priv *priv, static u32 cxd2841er_calc_iffreq_xtal(enum cxd2841er_xtal xtal, u32 ifhz) { - u64 tmp; - - tmp = (u64) ifhz * 16777216; - do_div(tmp, ((xtal == SONY_XTAL_24000) ? 48000000 : 41000000)); - - return (u32) tmp; + return div_u64(ifhz * 16777216ull, + (xtal == SONY_XTAL_24000) ? 48000000 : 41000000); } static u32 cxd2841er_calc_iffreq(u32 ifhz)