While trying to port some software I found it a lot easier to use the
read/write interface; given it was missing for bcm2835_bsc I hacked it
up.
Start/stop mostly only deal with meta-data (address, timeout,
and initializing/dropping the flag). Start in addition will also
attempt to read a byte (not caring) so scanning (checking for any
device at the given I2C address) will work.
Read/Write will use the provided meta-data and do a full
single-transaction read/write.
Reset simply clears up all state.
I am still seeing occational spurious interrupts but I cannot say if
those are due to these changes or would have always been there.
I tested a 1-wire hat and a bme280 which seem happy.