AnsweredAssumed Answered

Write ADAU1372 register through regmap_write failed

Question asked by EthanChen-tw on Jul 19, 2018
Latest reply on Jul 24, 2018 by larsc

Hi Sir,


I'm integrating ADAU1372 with my FPGA by using the driver provided on


The sound card can be created successfully, that means ADAU1372 is probed OK. But now I encounter a problem while calling regmap_write() to update adau1372 registers through I2C.

for example, I tried to write reg 0x13 (SOUT_SOURCE_0_1) with value 0x98 by calling regmap_write(). After writing, I called regmap_read to read it and get value 0x98.

BUT, by using i2cget (i2cget -f -y 0 0x3c 0x54) to get register value, it still showed 0x54 which is default value.

I also used oscilloscope to monitor waveform on I2C but got nothing while executing regmap_write.

If I call regcache_sync after calling regmap_write, I can get waveform but encounter another problem. the log shows

"i2c_dw_handle_tx_abort: lost arbitration". And although the register value is updated, it is not the one I expected.


Can someone provide your comment about solving this issue?



1. The I2C function works normally in my kernel/FPGA, I can use i2cset/i2cget to access adau1372.

2. The default values defined in adau1372.c are also not set into register after adau1372_i2c_probe is called