RTEMS | bsp/aarch64/raspberrypi: Add I2C interrupt support (!682)
Christian Mauderer (@c-mauderer)
gitlab at rtems.org
Tue Aug 26 06:15:16 UTC 2025
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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/bugs/attachments/20250826/3a1ad825/attachment.htm>
More information about the bugs
mailing list