mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 05:09:17 -04:00
hwmon: (max31827) Update bits with shutdown_write()
Added 'mask' parameter to the shutdown_write() function. Now it can either write or update bits, depending on the value of mask. This is needed, because for alarms a write is necessary, but for resolution only the resolution bits should be updated. Signed-off-by: Daniel Matyas <daniel.matyas@analog.com> Link: https://lore.kernel.org/r/20231031182158.124608-3-daniel.matyas@analog.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
committed by
Guenter Roeck
parent
cbeb1d2acf
commit
8a0806df46
@@ -81,7 +81,7 @@ static const struct regmap_config max31827_regmap = {
|
||||
};
|
||||
|
||||
static int shutdown_write(struct max31827_state *st, unsigned int reg,
|
||||
unsigned int val)
|
||||
unsigned int mask, unsigned int val)
|
||||
{
|
||||
unsigned int cfg;
|
||||
unsigned int cnv_rate;
|
||||
@@ -98,7 +98,10 @@ static int shutdown_write(struct max31827_state *st, unsigned int reg,
|
||||
mutex_lock(&st->lock);
|
||||
|
||||
if (!st->enable) {
|
||||
ret = regmap_write(st->regmap, reg, val);
|
||||
if (!mask)
|
||||
ret = regmap_write(st->regmap, reg, val);
|
||||
else
|
||||
ret = regmap_update_bits(st->regmap, reg, mask, val);
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
@@ -113,7 +116,11 @@ static int shutdown_write(struct max31827_state *st, unsigned int reg,
|
||||
if (ret)
|
||||
goto unlock;
|
||||
|
||||
ret = regmap_write(st->regmap, reg, val);
|
||||
if (!mask)
|
||||
ret = regmap_write(st->regmap, reg, val);
|
||||
else
|
||||
ret = regmap_update_bits(st->regmap, reg, mask, val);
|
||||
|
||||
if (ret)
|
||||
goto unlock;
|
||||
|
||||
@@ -131,7 +138,7 @@ static int write_alarm_val(struct max31827_state *st, unsigned int reg,
|
||||
{
|
||||
val = MAX31827_M_DGR_TO_16_BIT(val);
|
||||
|
||||
return shutdown_write(st, reg, val);
|
||||
return shutdown_write(st, reg, 0, val);
|
||||
}
|
||||
|
||||
static umode_t max31827_is_visible(const void *state,
|
||||
|
||||
Reference in New Issue
Block a user