]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
hwmon: (amc6821) Use multi-byte regmap operations
authorGuenter Roeck <linux@roeck-us.net>
Tue, 16 Jul 2024 19:01:21 +0000 (12:01 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Wed, 31 Jul 2024 17:43:51 +0000 (10:43 -0700)
Use multi-byte regmap operations where possible to reduce code size.

No functional changes.

Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/amc6821.c

index ec94392fcb658ff98d9e7033e0e31bfca3d37cea..ac64b407ed0eaf6112c9bb3caccae2e5f7e27015 100644 (file)
@@ -136,29 +136,25 @@ struct amc6821_data {
  */
 static int amc6821_get_auto_point_temps(struct regmap *regmap, int channel, u8 *temps)
 {
-       u32 pwm, regval;
+       u32 regs[] = {
+               AMC6821_REG_DCY_LOW_TEMP,
+               AMC6821_REG_PSV_TEMP,
+               channel ? AMC6821_REG_RTEMP_FAN_CTRL : AMC6821_REG_LTEMP_FAN_CTRL
+       };
+       u8 regvals[3];
+       int slope;
        int err;
 
-       err = regmap_read(regmap, AMC6821_REG_DCY_LOW_TEMP, &pwm);
-       if (err)
-               return err;
-
-       err = regmap_read(regmap, AMC6821_REG_PSV_TEMP, &regval);
-       if (err)
-               return err;
-       temps[0] = regval;
-
-       err = regmap_read(regmap,
-                         channel ? AMC6821_REG_RTEMP_FAN_CTRL : AMC6821_REG_LTEMP_FAN_CTRL,
-                         &regval);
+       err = regmap_multi_reg_read(regmap, regs, regvals, 3);
        if (err)
                return err;
-       temps[1] = FIELD_GET(AMC6821_TEMP_LIMIT_MASK, regval) * 4;
+       temps[0] = regvals[1];
+       temps[1] = FIELD_GET(AMC6821_TEMP_LIMIT_MASK, regvals[2]) * 4;
 
        /* slope is 32 >> <slope bits> in °C */
-       regval = 32 >> FIELD_GET(AMC6821_TEMP_SLOPE_MASK, regval);
-       if (regval)
-               temps[2] = temps[1] + DIV_ROUND_CLOSEST(255 - pwm, regval);
+       slope = 32 >> FIELD_GET(AMC6821_TEMP_SLOPE_MASK, regvals[2]);
+       if (slope)
+               temps[2] = temps[1] + DIV_ROUND_CLOSEST(255 - regvals[0], slope);
        else
                temps[2] = 255;