On 6/29/22 16:09, Krzysztof Adamski wrote:
Hi Marek,
W dniu 29.06.2022 o 16:05, Marek Vasut pisze:
[...]
If those two modes only differ in software complexity but we are not
able to support only the simpler one and we have support for the more
complicated (standard mode) anyways, we know that standard mode
can handle or the cases while dynamic mode cannot, we also know that
dynamic mode is broken on some versions of the core, why do we actually
keep support for dynamic mode?
If I recall it right, the dynamic mode was supposed to handle
transfers longer than 255 Bytes, which the core cannot do in Standard
mode. It is needed e.g. by Atmel MXT touch controller. I spent a lot
of time debugging the race conditions in the XIIC, which I ultimately
fixed (the patches are upstream), but the long transfers I rather
fixed in the MXT driver instead.
I also recall there was supposed to be some update for the XIIC core
coming with newer vivado, but I might be wrong about that.
It seems to be the other way around - dynamic mode is limited to 255
bytes - when you trigger dynamic mode you first write the address of the
slave to the FIFO, then you write the length as one byte so you can't
request more than 255 bytes. So *standard* mode is used for those
messages. In other words - dynamic mode is the one that is more limited
- everything that you can do in dynamic mode you can also do in standard
mode. So why don't we use standard mode always for everything?
Sigh, it's been a year since I looked into this, sorry.
One of the modes is maybe not supported on all the XIIC core instances ?