Message ID | 20220525032341.3182-4-warp5tw@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v6,1/5] dt-bindings: i2c: npcm: support NPCM845 | expand |
On Wed, May 25, 2022 at 11:23:39AM +0800, Tyrone Ting wrote: > From: Tali Perry <tali.perry1@gmail.com> > > Correct the slave transaction logic to be compatible with the generic > slave backend driver. > > Fixes: 56a1485b102e ("i2c: npcm7xx: Add Nuvoton NPCM I2C controller driver") > Signed-off-by: Tali Perry <tali.perry1@gmail.com> > Signed-off-by: Tyrone Ting <kfting@nuvoton.com> Much easier to review this way! Applied to for-next, thank you!
Hi Wolfram: Your previous suggestion about this commit is highly appreciated. Thank you. Wolfram Sang <wsa@kernel.org> 於 2022年6月9日 週四 上午4:03寫道: > > On Wed, May 25, 2022 at 11:23:39AM +0800, Tyrone Ting wrote: > > From: Tali Perry <tali.perry1@gmail.com> > > > > Correct the slave transaction logic to be compatible with the generic > > slave backend driver. > > > > Fixes: 56a1485b102e ("i2c: npcm7xx: Add Nuvoton NPCM I2C controller driver") > > Signed-off-by: Tali Perry <tali.perry1@gmail.com> > > Signed-off-by: Tyrone Ting <kfting@nuvoton.com> > > Much easier to review this way! Applied to for-next, thank you! > Best Regards, Tyrone
diff --git a/drivers/i2c/busses/i2c-npcm7xx.c b/drivers/i2c/busses/i2c-npcm7xx.c index b5cc83e51029..b4d218c6c8fb 100644 --- a/drivers/i2c/busses/i2c-npcm7xx.c +++ b/drivers/i2c/busses/i2c-npcm7xx.c @@ -915,11 +915,15 @@ static int npcm_i2c_slave_get_wr_buf(struct npcm_i2c *bus) for (i = 0; i < I2C_HW_FIFO_SIZE; i++) { if (bus->slv_wr_size >= I2C_HW_FIFO_SIZE) break; - i2c_slave_event(bus->slave, I2C_SLAVE_READ_REQUESTED, &value); + if (bus->state == I2C_SLAVE_MATCH) { + i2c_slave_event(bus->slave, I2C_SLAVE_READ_REQUESTED, &value); + bus->state = I2C_OPER_STARTED; + } else { + i2c_slave_event(bus->slave, I2C_SLAVE_READ_PROCESSED, &value); + } ind = (bus->slv_wr_ind + bus->slv_wr_size) % I2C_HW_FIFO_SIZE; bus->slv_wr_buf[ind] = value; bus->slv_wr_size++; - i2c_slave_event(bus->slave, I2C_SLAVE_READ_PROCESSED, &value); } return I2C_HW_FIFO_SIZE - ret; } @@ -967,7 +971,6 @@ static void npcm_i2c_slave_xmit(struct npcm_i2c *bus, u16 nwrite, if (nwrite == 0) return; - bus->state = I2C_OPER_STARTED; bus->operation = I2C_WRITE_OPER; /* get the next buffer */