> Hi Sam, we shouldn't be seeing the email header in the patch. > > I can tidy that up if you can't fix it though. > > > > When a weak pull-up is present on the SDO line, regmap_update_bits > > fails to write both the SOFTRESET and SDOACTIVE bits because it > > incorrectly reads them as already set. > > > > Since the soft reset disables the SDO line, performing a > > read-modify-write operation on ADI_SPI_CONFIG_A to enable the SDO line > > doesn't make sense. This change directly writes to the register > > instead of using regmap_update_bits. > > > Sounds like a fix, so could you send an appropriate Fixes tag in a v2 and/or a reply to this email. Added the fixes tag and submitted as patch v2. Please let me know if there is anything else that is needed. Thanks. > > > Signed-off-by: Sam Winchenbach <swinchenbach@xxxxxxxx> > > --- > > drivers/iio/filter/admv8818.c | 14 ++++---------- > > 1 file changed, 4 insertions(+), 10 deletions(-) > > > > diff --git a/drivers/iio/filter/admv8818.c > > b/drivers/iio/filter/admv8818.c index 195e58bc4..9cd1eee84 100644 > > --- a/drivers/iio/filter/admv8818.c > > +++ b/drivers/iio/filter/admv8818.c > > @@ -577,21 +577,15 @@ static int admv8818_init(struct admv8818_state *st) > > struct spi_device *spi = st->spi; > > unsigned int chip_id; > > > > - ret = regmap_update_bits(st->regmap, ADMV8818_REG_SPI_CONFIG_A, > > - ADMV8818_SOFTRESET_N_MSK | > > - ADMV8818_SOFTRESET_MSK, > > - FIELD_PREP(ADMV8818_SOFTRESET_N_MSK, 1) | > > - FIELD_PREP(ADMV8818_SOFTRESET_MSK, 1)); > > + ret = regmap_write(st->regmap, ADMV8818_REG_SPI_CONFIG_A, > > + ADMV8818_SOFTRESET_N_MSK | > > + ADMV8818_SOFTRESET_MSK); > > if (ret) { > > dev_err(&spi->dev, "ADMV8818 Soft Reset failed.\n"); > > return ret; > > } > > > > - ret = regmap_update_bits(st->regmap, ADMV8818_REG_SPI_CONFIG_A, > > - ADMV8818_SDOACTIVE_N_MSK | > > - ADMV8818_SDOACTIVE_MSK, > > - FIELD_PREP(ADMV8818_SDOACTIVE_N_MSK, 1) | > > - FIELD_PREP(ADMV8818_SDOACTIVE_MSK, 1)); > > + ret = regmap_write(st->regmap, ADMV8818_REG_SPI_CONFIG_A, > > + ADMV8818_SDOACTIVE_N_MSK | > > + ADMV8818_SDOACTIVE_MSK); > > if (ret) { > > dev_err(&spi->dev, "ADMV8818 SDO Enable failed.\n"); > > return ret;