> Reproduction test: > 1. Add udelay(1) after disabling ICDMAER. (It is expected to > generate an interrupt of rcar_i2c_irq()) > > void rcar_i2c_dma_unmap(struct rcar_i2c_priv *priv) > { > ... > rcar_i2c_write(priv, ICDMAER, 0); > udelay(1); <-- Add this line For the record (and self-documentation): I needed to increase the delay and was using usleep_range(500, 800) in the end. > ... > priv->dma_direction = DMA_NONE; > } > > 2. Execute DMA transfer. > Performs DMA transfer of read or write. In the sample, write was used. > > $ i2cset -y -f 4 0x6a 0x01 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 i And I used this command instead to make sure another message is waiting: $ i2ctransfer -y 4 w9@0x6a 1 1+ r16 Yet, in general, I could reproduce that this patch fixes the issue, so all is fine, I think.
Attachment:
signature.asc
Description: PGP signature