On Fri, Mar 21, 2014 at 05:57:49AM +0000, Bard Liao wrote: > > Please fix your mailer to word wrap within paragraphs, this will make your mail > > more legible. > Now I set 80 characters to wrap the text. Hope it can work. Doesn't seem to have taken I'm afraid :( > > So VID+NID is an address and PID is a value? > For I2C write, yes. > But for I2C read, I think PID is also a part of address. Because PID is meaningful in the I2C read protocol. > For example, if we need to get the mute/unmute status of headphone, we need to set: > VID = b'h (Get Amplifier Gain) > NID = 22'h (Headhoone) > PID = a000'h (Left output amplifier gain is requested) > And we can get response from rt286. > I am trying to implement my reg_write and reg_read to: > reg_write: address: VID+NID, value: PID > reg_read: address: VID+NID+PID, value: the responding data from rt286. Right, that's why I said you'll need to read the cache as part of your read function. Unless the PID there is not the last value that was set in which case it probably isn't actually a register value...