BCM2711
Warning
The support for this chip is experimental. Not all features are implemented and they have not been extensively tested by many users.
Help is wanted if you are interested in supporting a feature or if you’ve found an issue with any of the implementation! See the contributing guidelines.
The BCM2711 is a Broadcom SoC used for the Raspberry Pi 4B board.
CPU: Quad-core ARM Cortex-A72
Interrupt Controller: GIC400
Supported Peripherals
Peripheral |
Support |
|---|---|
I2C |
Full interrupt-based support. No 10b addressing. |
UART |
Mini UART yes, PL011 no |
GPIO |
Partial |
MAILBOX |
Partial (polled method, only commands used by firmware are implemented) |
EMMC2 |
Interrupt-based support, no DMA. |
EMMC |
Supported alongside EMMC2 in theory, but untested. |
PWM |
No |
SPI |
Interrupt-based driver (no DMA) for all SPI except 1 & 2 (auxiliary) |
PCM |
No |
Warning
The SPI driver implemented for the BCM2711 has only been tested on SPI0. It appears that even using the special overlays for the device tree passed to the proprietary firmware does not properly initialize the remaining SPI interfaces, and thus they have not been working properly. More effort is required to reverse engineer the magic incantations required to initialize these interfaces, at which point it is assumed that the driver implementation should extend to SPI3-6.
Warning
The EMMC2 peripheral connects to the microSD card slot on the Raspberry Pi 4B. Currently, it has passed testing with a few different uSD cards. The only quirks are:
No card insertion/removal interrupts work, so hotswapping isn’t possible
Multi-block transfers must be restricted to 1 block at a time (
CONFIG_MMCSD_MULTIBLOCK_LIMIT=1), since the upper-half driver’s method of doing block setup is not immediately compatible with the BCM2711 EMMC controller. Changes to the common-upperhalf would require extensive testing, so this performance sacrifice is done for correct behaviour in the short-term.
All in all, be aware of issues with the SD card implementation.