On Sat, Jul 27, 2024 at 07:38:17AM -0700, Guenter Roeck wrote: > +static int get_alarms(struct regmap *regmap) > +{ > + static u32 regs[2] = { MAX1619_REG_STATUS, MAX1619_REG_CONFIG }; > + u8 regdata[2]; > + int ret; > + > + ret = regmap_multi_reg_read(regmap, regs, regdata, 2); > + if (ret) > + return ret; > + > + /* OVERT status bit may be reversed */ > + if (!(regdata[1] & 0x20)) > + regdata[0] ^= 0x02; > + > + return regdata[0] & 0x1e; Why `& 0x1e`? Original max1619_update_device() doesn't do that. > -static void max1619_init_client(struct i2c_client *client) > -{ > - u8 config; > +/* regmap */ > > - /* > - * Start the conversions. > - */ > - i2c_smbus_write_byte_data(client, MAX1619_REG_W_CONVRATE, > - 5); /* 2 Hz */ > - config = i2c_smbus_read_byte_data(client, MAX1619_REG_R_CONFIG); > - if (config & 0x40) > - i2c_smbus_write_byte_data(client, MAX1619_REG_W_CONFIG, > - config & 0xBF); /* run */ Doesn't it need the initialization anymore?