]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
regmap-i2c: fix sparse warning in regmap_smbus_word_write_reg16
authorNishanth Sampath Kumar <nissampa@cisco.com>
Wed, 20 May 2026 15:11:09 +0000 (08:11 -0700)
committerMark Brown <broonie@kernel.org>
Thu, 21 May 2026 08:47:39 +0000 (09:47 +0100)
i2c_smbus_write_word_data() expects a plain u16, but cpu_to_le16()
returns __le16 (a sparse-restricted endian type), causing:

  drivers/base/regmap/regmap-i2c.c:340: sparse: incorrect type in
  argument 3 (different base types)
    expected unsigned short [usertype] value
    got restricted __le16 [usertype]

SMBus already defines byte ordering internally, so cpu_to_le16() is
wrong here. Replace it with a plain (u16) cast.

Fixes: bad4bd28abf4 ("regmap-i2c: add SMBus byte/word reg16 bus for adapters lacking I2C_FUNC_I2C")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202605161621.mY5zFh4D-lkp@intel.com/
Signed-off-by: Nishanth Sampath Kumar <nissampa@cisco.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/regmap-i2c.c

index 31e30dfced192f0c0c6b4c6a31b8aac24657e454..51a04961faf7bee5d384606ced2ada7d7a563d92 100644 (file)
@@ -337,7 +337,7 @@ static int regmap_smbus_word_write_reg16(void *context, const void *data,
        val = ((u8 *)data)[2];
 
        return i2c_smbus_write_word_data(i2c, addr_hi,
-                                        cpu_to_le16(((u16)val << 8) | addr_lo));
+                                        ((u16)val << 8) | addr_lo);
 }
 
 static const struct regmap_bus regmap_smbus_byte_word_reg16 = {