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