Messages in this thread | | | Date | Tue, 27 Feb 2018 16:36:54 -0600 | From | Andy Gross <> | Subject | Re: [PATCH 04/12] i2c: qup: schedule EOT and FLUSH tags at the end of transfer |
| |
On Sat, Feb 03, 2018 at 01:28:09PM +0530, Abhishek Sahu wrote: > A single BAM transfer can have multiple read and write messages. > The EOT and FLUSH tags should be scheduled at the end of BAM HW > descriptors. Since the READ and WRITE can be present in any order > so for some of the cases, these tags are not being written > correctly. > > Signed-off-by: Abhishek Sahu <absahu@codeaurora.org> > --- > drivers/i2c/busses/i2c-qup.c | 54 ++++++++++++++++++++------------------------ > 1 file changed, 24 insertions(+), 30 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-qup.c b/drivers/i2c/busses/i2c-qup.c > index bb83a2967..6357aff 100644 > --- a/drivers/i2c/busses/i2c-qup.c > +++ b/drivers/i2c/busses/i2c-qup.c > @@ -560,7 +560,7 @@ static int qup_i2c_set_tags_smb(u16 addr, u8 *tags, struct qup_i2c_dev *qup, > } > > static int qup_i2c_set_tags(u8 *tags, struct qup_i2c_dev *qup, > - struct i2c_msg *msg, int is_dma) > + struct i2c_msg *msg) > { > u16 addr = i2c_8bit_addr_from_msg(msg); > int len = 0; > @@ -601,11 +601,6 @@ static int qup_i2c_set_tags(u8 *tags, struct qup_i2c_dev *qup, > else > tags[len++] = data_len; > > - if ((msg->flags & I2C_M_RD) && last && is_dma) { > - tags[len++] = QUP_BAM_INPUT_EOT; > - tags[len++] = QUP_BAM_FLUSH_STOP; > - } > -
So lets say you have multiple read and 1 write message. These changes will send a EOT/FLUSH for all reads. I think the intent here was that the last read message (not the last message) would have the EOT+FLUSH. Can there be an issue with sending EOT/FLUSH for all reads? And how does this mesh up with the BAM signaling?
Regards,
Andy
| |