Kinsey Moore commented on a discussion on bsps/aarch64/raspberrypi/i2c/raspberrypi-i2c.c: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/363#note_122272 > + ++divider; > + clock_rate = BSC_CORE_CLK_HZ / divider; > + } > + > + BCM2835_REG(bus->base_address + BCM2711_I2C_DIV) = divider; > + > + bus->input_clock = clock_rate; > + > + return 0; > +} > + > +static int rpi_i2c_setup_transfer(raspberrypi_i2c_bus *bus) > +{ > + int rv; > + while(bus->remaining_transfers > 0){ > + bus->remaining_bytes = bus->remaining_transfers > 1 ? 0xFFFF : > (bus->current_buffer_size & 0xFFFF); This could be broken apart and explained with a comment in the code. It seems like there might also be an off-by-one error here. Magic numbers sprinkled in the code are discouraged, so I've : ``` /* I would expect the correct value here to be 0x10000 instead of 0xFFFF */ /* Full transfer size is 0xFFFF bytes */ #define I2C_TRANSFER_SIZE 0xFFFF bus->remaining_bytes = I2C_TRANSFER_SIZE; /* If there is only 1 transfer remaining, consume the remainder of the data */ if (bus->remaining_transfers == 1) { bus->remaining_bytes = bus->current_buffer_size % I2C_TRANSFER_SIZE; } ``` -- View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/363#note_122272 You're receiving this email because of your account on gitlab.rtems.org.
_______________________________________________ bugs mailing list bugs@rtems.org http://lists.rtems.org/mailman/listinfo/bugs