On 29/05/2024 08:07, Amna Waseem wrote: > > +static int ina2xx_set_alert_polarity(struct ina2xx_data *data, > + unsigned long val) > +{ > + int ret; > + > + if (val > INT_MAX || !(val == 0 || val == 1)) > + return -EINVAL; > + > + mutex_lock(&data->config_lock); Aren't you calling it before registering sysfs interface? Why do you need mutex? > + ret = regmap_update_bits(data->regmap, INA226_MASK_ENABLE, > + INA226_ALERT_POLARITY_MASK, > + INA226_SHIFT_ALERT_POLARITY(val)); > + > + mutex_unlock(&data->config_lock); > + return ret; > +} > + > /* > * Calibration register is set to the best value, which eliminates > * truncation errors on calculating current register in hardware. > @@ -659,6 +679,14 @@ static int ina2xx_probe(struct i2c_client *client) > if (ret) > return dev_err_probe(dev, ret, "failed to enable vs regulator\n"); > > + if (!of_property_read_u32(dev->of_node, "alert-polarity", &val)) { > + ret = ina2xx_set_alert_polarity(data, val); > + if (ret < 0) > + return dev_err_probe( > + dev, ret, > + "failed to set APOL bit of Enable/Mask register\n"); That's odd wrapping. Please follow Linux coding style and align these. Best regards, Krzysztof