RE: [PATCH V17 3/6] i2c: tegra: fix maximum transfer size

From: Sowjanya Komatineni
Date: Fri Feb 08 2019 - 13:37:36 EST


> > >>> static const struct i2c_adapter_quirks tegra194_i2c_quirks = {
> > >>> .flags = I2C_AQ_NO_ZERO_LEN,
> > >>> + .max_write_len = 65535 - I2C_PACKET_HEADER_SIZE,
> > >>
> > >> Ideally it should be SZ_64K - I2C_PACKET_HEADER_SIZE to not miss the one byte, otherwise good to me:
> > >>
> > >> Reviewed-by: Dmitry Osipenko <digetx@xxxxxxxxx>
> > >
> > > With SZ_64K - I2C_PACKET_HEADR_Size, When we compute dma_buf_size
> > > = max_write_len + I2C_PACKET_HEADER_SIZE, dma_buf_size will be
> > > SZ_64K which is 0x10000 apbdma dma count limit should be < 64K
> > > meaning 65535 max is allowed
> > >
> >
> > But it's for the GPCDMA, does it have the same 64K limit as APB DMA?
>
64K limit is for APBDMA. This patch has APBDMA support only. No GPCDMA support so buf size limit is based on APBDMA.
GPCDMA supports upto 1GB.

I think dma_buf_size is only for buffer allocation so shouldnât harm for exact 64K.
Will take a look at dma driver...

All msg reads, max length is 65535
All msg writes, max length requests is also limited to 65535 due to u16 type of msg.len So, In any case, we donât need 65536 bytes.
Confused, yeah with max write quirk, max transfer can be 64K.

Will change to 64K instead of 65535.