On Fri, Sep 06, 2024 at 07:27:01PM +0100, Mark Brown wrote:
Are these just warnings introduced by recent versions of the toolchains? These commits passed an x86 allmodconfig with GCC 12 at each step (I did catch one warning there with another patch in the series that didn't get applied) and 0day didn't say anything at any point.
Not sure, I did not look too hard. At cursory glance, I am not sure x86 allmodconfig would catch these, as this code depends on ARCH_MEDIATEK (not COMPILE_TEST), which only exists for arm and arm64.
Clang 19:
That's relatively modern, though some of the warnings don't look particularly new and exciting.
Fair although I still see some of them on old versions too:
https://github.com/ClangBuiltLinux/continuous-integration2/actions/runs/1073...
sound/soc/mediatek/mt8365/mt8365-dai-adda.c:93:8: error: implicit conversion from 'unsigned long' to 'unsigned int' changes value from 18446744073709551614 to 4294967294 [-Werror,-Wconstant-conversion] 91 | regmap_update_bits(afe->regmap, AFE_ADDA_UL_DL_CON0, | ~~~~~~~~~~~~~~~~~~ 92 | AFE_ADDA_UL_DL_ADDA_AFE_ON, 93 | ~AFE_ADDA_UL_DL_ADDA_AFE_ON); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated.
That's a bit surprising, regmap_update_bits() takes an unsigned long? I suspect the constants need to be defined as unsigned.
Does it? I see it taking 'unsigned int' for all of its parameters.
$ sed -n '1242,1250p' include/linux/regmap.h int regmap_update_bits_base(struct regmap *map, unsigned int reg, unsigned int mask, unsigned int val, bool *change, bool async, bool force);
static inline int regmap_update_bits(struct regmap *map, unsigned int reg, unsigned int mask, unsigned int val) { return regmap_update_bits_base(map, reg, mask, val, NULL, false, false); }
Cheers, Nathan