The hardware is... weird. It's FSM-driven and very...
# │firmware-dev
c
The hardware is... weird. It's FSM-driven and very particular about making sure the protocol is followed (so, if you do a START, then send an address byte, it parses the byte to figure out whether you're doing a read/write and transitions the hardware FSM accordingly). For NOSTART "support," you have to tell it how many written bytes will follow the address byte before the bus turnaround, so it only supports very particular patterns of NOSTART messages, and I'm wondering if the I²C maintainers will want to invent a new message type for "reads with extra written bytes" instead. It's also byte-oriented, so it will send/receive a byte, fire an interrupt, let the driver set up the next byte, repeat... which means the NOSTART isn't really less efficient than any other transfer through the same block.