RTEMS | Add the support for i2c driver in the aarch64/raspberrypi bsp (!363)
Shaunak Datar (@skdatar)
gitlab at rtems.org
Tue Jun 24 17:33:51 UTC 2025
Shaunak Datar commented on a discussion on bsps/aarch64/raspberrypi/i2c/raspberrypi-i2c.c: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/363#note_125157
> +}
> +
> +static int rpi_i2c_set_clock( i2c_bus *base, unsigned long clock )
> +{
> + raspberrypi_i2c_bus *bus = (raspberrypi_i2c_bus *) base;
> + uint32_t clock_rate;
> + uint16_t divider;
> +
> + divider = BSC_CORE_CLK_HZ / clock;
> +
> + clock_rate = BSC_CORE_CLK_HZ / divider;
> +
> + while ( clock_rate > clock ) {
> + ++divider;
> + clock_rate = BSC_CORE_CLK_HZ / divider;
> + }
This is the same one from the arm/raspberry pi I2C. My understanding is that the loop protects against round-off errors. Normally the clock_rate == clock is always true, but if the clock = 99999 we have the BCS_CORE_CLK_HZ = 150000000, divider = 1500.015 which is rounded off to 1500, then clock_rate = 100000. Now clock_rate > clock and the loop is run.
--
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/363#note_125157
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/20250624/16b29a69/attachment-0001.htm>
More information about the bugs
mailing list