On Fri, 11 Aug 2017 21:54:07 +0200 Lorenzo Bianconi <lorenzo.bianconi83@xxxxxxxxx> wrote: > > On Mon, 17 Jul 2017 19:38:58 +0200 > > Lorenzo Bianconi <lorenzo.bianconi83@xxxxxxxxx> wrote: > > > >> GENMASK(6, 3) in CTRL_REG1 and GENMASK(6, 2) in CTRL_REG2 are marked > >> reserved. Do not changed the original value (not declared in the > >> datasheet) during power-down/suspend routines. > >> > >> Fixes: e4a70e3e7d84 (iio: humidity: add support to hts221 rh/temp device) > >> Fixes: b7079eeac5da (iio: humidity: hts221: add power management support) > >> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@xxxxxx> > > Applied to the togreg branch of iio.git and pushed out as testing. > > > > If we want to do a backport of this it would be fine, but it needs > > to require absolute minimal changes to the driver. > > > > I think we need to push write_with_mask patch as well in order to fix > that issue. What do you think? > > Regards, > Lorenzo Hmm. Is it possible to do a much more minimal local implementation in just these two locations. That patch is rather larger than it feels like we should need. Obviously the end result is clean, but the process to get there is non trivial. Jonathan > > > Jonathan > >> --- > >> drivers/iio/humidity/hts221_core.c | 10 ++++------ > >> 1 file changed, 4 insertions(+), 6 deletions(-) > >> > >> diff --git a/drivers/iio/humidity/hts221_core.c b/drivers/iio/humidity/hts221_core.c > >> index 47a29b2da1ce..6e5847386a45 100644 > >> --- a/drivers/iio/humidity/hts221_core.c > >> +++ b/drivers/iio/humidity/hts221_core.c > >> @@ -305,11 +305,10 @@ int hts221_power_on(struct hts221_hw *hw) > >> > >> int hts221_power_off(struct hts221_hw *hw) > >> { > >> - __le16 data = 0; > >> int err; > >> > >> - err = hw->tf->write(hw->dev, HTS221_REG_CNTRL1_ADDR, sizeof(data), > >> - (u8 *)&data); > >> + err = hts221_write_with_mask(hw, HTS221_REG_CNTRL1_ADDR, > >> + HTS221_ENABLE_MASK, false); > >> if (err < 0) > >> return err; > >> > >> @@ -692,11 +691,10 @@ static int __maybe_unused hts221_suspend(struct device *dev) > >> { > >> struct iio_dev *iio_dev = dev_get_drvdata(dev); > >> struct hts221_hw *hw = iio_priv(iio_dev); > >> - __le16 data = 0; > >> int err; > >> > >> - err = hw->tf->write(hw->dev, HTS221_REG_CNTRL1_ADDR, sizeof(data), > >> - (u8 *)&data); > >> + err = hts221_write_with_mask(hw, HTS221_REG_CNTRL1_ADDR, > >> + HTS221_ENABLE_MASK, false); > >> > >> return err < 0 ? err : 0; > >> } > > > > > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html