Christian Mauderer commented on a discussion on bsps/aarch64/raspberrypi/i2c/raspberrypi-i2c.c: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/682#note_129439 > bool read_transfer; > } raspberrypi_i2c_bus; > > -static int i2c_polling_read( raspberrypi_i2c_bus *bus ) > +static int rpi_i2c_bus_transfer( raspberrypi_i2c_bus *bus ) > { > - while ( !( S_REG( bus ) & S_DONE ) && ( bus->remaining_bytes > 0 ) ) { > - while ( ( S_REG( bus ) & S_RXD ) && ( bus->remaining_bytes > 0 ) ) { > + while ( bus->remaining_bytes > 0 ) { > + if ( bus->read_transfer ) { > + while ( ( S_REG( bus ) & S_RXD ) == 0 ) { > + } I clearly used the wrong bit as an example. You are right: For the S_ERR, a check during addressing phase is enough. What about the second possible error (S_CLKT)? If some slave uses clock stretching and just hangs, you will get an error here and you will never get a RXD. -- View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/682#note_129439 You're receiving this email because of your account on gitlab.rtems.org.
_______________________________________________ bugs mailing list [email protected] http://lists.rtems.org/mailman/listinfo/bugs
