oxidecomputer / hubris

A lightweight, memory-protected, message-passing kernel for deeply embedded systems.
Mozilla Public License 2.0
3.02k stars 175 forks source link

FPGA update to support I2C clock stretching and ack-polling #1871

Closed Aaron-Hartwig closed 1 month ago

Aaron-Hartwig commented 2 months ago

Impacts the Front IO FPGAs which have I2C interfaces to transceiver modules, some of which may clock stretch. Also impacts the Mainboard FPGA as it has an I2C interface to the Tofino 2. In addition to clock stretching, the core will now also perform acknowledge-polling after all writes.

This can land after https://github.com/oxidecomputer/transceiver-control/pull/278 and https://github.com/oxidecomputer/quartz/pull/210.

Aaron-Hartwig commented 1 month ago

@mkeeter throwing you on here as I'm touching the transceiver thermal loop's port-disabling mechanism to add in another potential failure. The vast majority of the diff is general FPGA update noise.