Skip to content

Commit 1ed5188

Browse files
LukaszMadejGrinnbbilas
authored andcommitted
drivers: mfd: mfd_ad5592: fix reset magic sending
Use proper register mask for software reset register so reset magic value sent to device is not malformed. Co-authored-by: Bartosz Bilas <[email protected]> Signed-off-by: Lukasz Madej <[email protected]>
1 parent c69ddc1 commit 1ed5188

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

drivers/mfd/mfd_ad5592.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#define AD5592_REG_SOFTWARE_RESET 0x0FU
1818
#define AD5592_SOFTWARE_RESET_MAGIC_VAL 0x5AC
1919
#define AD5592_REG_VAL_MASK 0x3FF
20+
#define AD5592_REG_RESET_VAL_MASK 0x7FF
2021
#define AD5592_REG_SHIFT_VAL 11
2122
#define AD5592_REG_READBACK_SHIFT_VAL 2
2223

@@ -115,7 +116,19 @@ int mfd_ad5592_read_reg(const struct device *dev, uint8_t reg, uint8_t reg_data,
115116

116117
int mfd_ad5592_write_reg(const struct device *dev, uint8_t reg, uint16_t val)
117118
{
118-
uint16_t msg = sys_cpu_to_be16((reg << AD5592_REG_SHIFT_VAL) | (val & AD5592_REG_VAL_MASK));
119+
uint16_t write_mask;
120+
uint16_t msg;
121+
122+
switch (reg) {
123+
case AD5592_REG_SOFTWARE_RESET:
124+
write_mask = AD5592_REG_RESET_VAL_MASK;
125+
break;
126+
default:
127+
write_mask = AD5592_REG_VAL_MASK;
128+
break;
129+
}
130+
131+
msg = sys_cpu_to_be16((reg << AD5592_REG_SHIFT_VAL) | (val & write_mask));
119132

120133
return mfd_ad5592_write_raw(dev, msg);
121134
}

0 commit comments

Comments
 (0)