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

https://wiki.analog.com/resources/tools-software/linux-drivers/sound/adau1372#i2c.

 

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?

 

Note:

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

 

BRs

Ethan#

Outcomes