The first RFC got submitted to upstream to solicit comments about it.
It’s quite minimal, only including the interrupt controller and secondary CPU startup drivers, with the core kernel changes needed to accommodate the hardware.
Notably, it doesn’t include a UART driver. It isn’t ready for mainline inclusion yet. For technical reasons evaluated on iPhones years ago, the Samsung Exynos UART driver wasn’t used for Project Sandcastle. (it wasn’t submitted as part of the RFC notably to see if marcan would succeed at adapting the Samsung UART driver as part of the Asahi Linux project)
The device tree isn’t submitted yet, because without a UART, it isn’t very useful either.
So what does the Corellium (downstream) tree currently have as working?
- Apple AIC interrupt controller
- Apple UART driver
- SMP support
- PMGR support (power gating)
- DART support (Apple IOMMU)
- GPIO
- I2C
- USB Type-C controller adaptation
- USB (on the Type C ports only)
That’s still in an early stage, but enough to run desktop Ubuntu. When CPU re-clocking and PCIe support come, it might even start to get actual users at that stage.
As a note, many of the devices on the SoC didn’t change from the programmers’ perspective since a long time, including the UART, interrupt controller and I2C/SPI controllers.
This means that this work can potentially benefit older iPhones through checkra1n too. However, this is currently not a priority.