mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
hwmon: (amc6821) Use multi-byte regmap operations
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>
This commit is contained in:
parent
21a93a9e31
commit
c37d0f08f8
@ -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);
|
||||
err = regmap_multi_reg_read(regmap, regs, regvals, 3);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = regmap_read(regmap, AMC6821_REG_PSV_TEMP, ®val);
|
||||
if (err)
|
||||
return err;
|
||||
temps[0] = regval;
|
||||
|
||||
err = regmap_read(regmap,
|
||||
channel ? AMC6821_REG_RTEMP_FAN_CTRL : AMC6821_REG_LTEMP_FAN_CTRL,
|
||||
®val);
|
||||
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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user