On Thu, Nov 06, 2014 at 02:37:31PM +0000, Peter Rosin wrote: > Mark Brown wrote: > > > + if (tfa9879->lsb_justified) > > > + TFA9879_REG(codec, SERIAL_INTERFACE_1, I2S_SET, i2s_set); > > Why does this need to be reset every time, shouldn't we just be setting the > > register in set_fmt().? > Yes, I'd sure like to do that, but how do I get to the width in set_fmt()? Oh, this has some width related thing in it? > > > + { TFA9879_MISC_STATUS, 0x0000 }, /* 0x15, read-only */ > > > +}; > > > +static bool tfa9879_volatile_register(struct device *dev, unsigned > > > +int reg) { > > > + return reg == TFA9879_MISC_STATUS; > > If the register is volatile it shouldn't have a default value provided. > Then I misunderstood what volatile was meant to do. I'll just nuke the > function. It works fine anyway... A volatile register is one that the chip may change autonomously (eg, an interrupt status register).