UEFI+ACPI on Raspberry Pi 4B


Feature

Driver Name

Silicon

ACPI Table Description

Linux Kernel Submit Message & Link

ACPI Table

Windows Status

Linux Status

Description

ย 

Feature

Driver Name

Silicon

ACPI Table Description

Linux Kernel Submit Message & Link

ACPI Table

Windows Status

Linux Status

Description

ย 

SD/eMMC

bcm2836sdhc

BCM2836/BCM2711

// emmc2 Host Controller. (brcm,bcm2711-emmc2)
Device (SDC3)
{
Name (_HID, "BRCME88C")

ย 

// ArasanSD 3.0 SD Host Controller. (brcm,bcm2835-sdhci)
Device (SDC1)
{
Name (_HID, "BCM2847")
Name (_CID, "BCM2847")

mmc: sdhci-iproc: Add ACPI bindings for the RPi
https://github.com/torvalds/linux/commit/4f9833d3ec8da34861cd0680b00c73e653877eb9

edk2-platforms\Platform\RaspberryPi\AcpiTables\Emmc.asl

edk2-platforms\Platform\RaspberryPi\AcpiTables\Sdhc.asl

Working

Working

Broadcom 2836 Arasan SD Host Controller

ย 

Display

MSBDD (Inbox)

ย 

ย 

ย 

ย 

Working

ย 

ย 

ย 

Audio

rpiwav

BCM2836/BCM2711

ย 

ย 

ย 

Working

ย 

The audio driver (rpiwav.sys) uses the PWM driver (bcm2836pwm.sys) exclusively. rpiwav.sys sends PCM audio packets to bmc2836pwm.sys to modulate and output over the right and left channels resulting in a stereo audio output.

ย 

HDMI Audio

rpi4hdmiwav
rpi4hdmiwavbridge

BCM2711

ย 

ย 

ย 

Partial working

ย 

only the HDMI0 port is supported

ย 

PCIe

ย 

ย 

Device(PCI0)
{
Name(_HID, EISAID("PNP0A08")) // PCI Express Root Bridge
Name(_CID, EISAID("PNP0A03")) // Compatible PCI Root Bridge

General PCIE Root Bridge Driver at
./drivers/acpi/pci_root.c

edk2-platforms\Platform\RaspberryPi\AcpiTables\Pci.asl

ย 

ย 

ย 

ย 

GPIO

bcmgpio

BCM2836/BCM2711

ย 

ย 

ย 

Working

Not Working

BCM2836 GPIO Controller

ย 

I2C

bcmi2c

BCM2836/BCM2711

// Description: I2C
Device (I2C1)
{
Name (_HID, "BCM2841")
Name (_CID, "BCM2841")

ย 

edk2-platforms\Platform\RaspberryPi\AcpiTables\GpuDevs.asl

Working

ย 

ย 

ย 

SPI

bcmspi

BCM2836/BCM2711

Device (SPI0)
{
Name (_HID, "BCM2838")
Name (_CID, "BCM2838")

ย 

edk2-platforms\Platform\RaspberryPi\AcpiTables\GpuDevs.asl

Working

ย 

Raspberry Pi 2 (BCM2836) SPI Controller driver, a single SPI peripheral (SPI0)

ย 

SPI

bcmauxspi

BCM2836/BCM2711

ย 

ย 

ย 

Working

ย 

Raspberry Pi 2 (BCM2836)ย  AUXSPI Controller

ย 

UART

pi_miniuart

BCM2836/BCM2711

// PL011 based UART.
Device (URT0)
{
Name (_HID, "BCM2837")
Name (_CID, "ARMH0011")

drivers: PL011: add ACPI probing for SBSA UART
https://github.com/torvalds/linux/commit/3db9ab0b6d8a293435a78c048f877099e040f72c

edk2-platforms\Platform\RaspberryPi\AcpiTables\Uart.asl

Working

Not Working

BCM283x Mini UART driver.
This is a Windows 10 device driver for the Broadcom proprietary version of the 16550 UART, available on the Pi 2 and 3. Due to lack of certain features present in the standard 16550 UART, the Broadcom version is called miniUart.

ย 

UART

SerPL011

BCM2836

Device (URTM)
{
Name (_HID, "BCM2836")
Name (_CID, "BCM2836")

serial: 8250_bcm2835aux: Add ACPI support
https://github.com/torvalds/linux/commit/fcc446c8aa6303b247b0d88f460167b731265282

edk2-platforms\Platform\RaspberryPi\AcpiTables\Uart.asl

Working

Working

ARM PL011 UART Driver, using _HID as BCM2887

ย 

Bluetooth

cywbtserialbus

BCM2836/BCM2711

Device(BTH0)
{
Name (_HID, "BCM2EA6")
Name (_CID, "BCM2EA6")

Bluetooth: hci_bcm: Add PM for BCM devices
https://github.com/torvalds/linux/commit/0395ffc1ee0509df11ad830772c22d13627e02ec

edk2-platforms\Platform\RaspberryPi\AcpiTables\Uart.asl

Working

ย 

Cypress Bluetooth over UART Transport Driver

ย 

WIFI

ย 

ย 

ย 

ย 

ย 

Not working

ย 

No driver available

ย 

Ethernet

bcmgenet

BCM2711

Device (ETH0)
{
Name (_HID, "BCM6E4E")
Name (_CID, "BCM6E4E")

net: bcmgenet: Initial bcmgenet ACPI support
https://github.com/torvalds/linux/commit/99c6b06a37d4cab118c45448fef9d28df62d35d8

edk2-platforms\Platform\RaspberryPi\AcpiTables\Dsdt.asl

Working

Working

Broadcom GENET Gigabit Ethernet Controller

ย 

PWM

bcm2836pwm

BCM2836/BCM2711

// PWM Driver
Device (PWM0)
{
Name (_HID, "BCM2844")
Name (_CID, "BCM2844")

ย 

edk2-platforms\Platform\RaspberryPi\AcpiTables\GpuDevs.asl

Working

ย 

ย 

ย 

USB

rpiuxflt

BCM2711

ย 

ย 

ย 

Partially working

ย 

Raspberry Pi 4 (BCM2711)ย  VIA VL805 XHCI Host Controller Filter Driver

ย 

USB

mcci_dwchsotg

BCM2711

ย 

ย 

ย 

Partially working

ย 

ย 

ย 

USB OTG

ย 

BCM2848

// DWC OTG Controller
Device (USB0)
{
Name (_HID, "BCM2848")
#if (RPI_MODEL == 3)
Name (_CID, "DWC_OTG")
#elif (RPI_MODEL == 4)
Name (_CID, "BCM2848")
#endif

usb: dwc2: Enable RPi in ACPI mode
usb: dwc2: Enable RPi in ACPI mode ยท torvalds/linux@2e5db2c

edk2-platforms\Platform\RaspberryPi\AcpiTables\GpuDevs.asl

ย 

ย 

ย 

ย 

GPU

roskmd.sys

ย 

// Video Core 4 GPU
Device (GPU0)
{
Name (_HID, "BCM2850")
Name (_CID, "BCM2850")

ย 

edk2-platforms\Platform\RaspberryPi\AcpiTables\GpuDevs.asl

Not working

Not Working

the driver loads, but it doesn't do much as it's unfinished

ย 

VC4 Mailbox

RPIQ

BCM2836

ย 

ย 

ย 

Working

ย 

ย 

ย 

VC4 HIQ

VCHIQ

BCM2836

ย 

ย 

ย 

Not working

ย 

This is the Video Core Host Interface Queue driver that is responsible to marshall communication with the GPU firmware. THe VCHIQ driver is main function is to provide the interface with firmware with various client such as MMAL.

ย 

UEFI

dsdtpatch

ย 

ย 

ย 

ย 

ย 

ย 

DSDT Patch:

  1. changes the _HIDs of the

  • PL011 controller to BCM2887

  • XHCI controller to RPI0D10

ย ย ย  so Windows won't install the incompatible inbox drivers instead of our own versions. This is not necessary if the drivers are properly signed.

  1. fixes the PWM definition and adds an analog audio device

  2. adds dummy HDMI controller and digital audio devices

ย 

USBSTOR

uaspdisabler

ย 

ย 

ย 

ย 

ย 

ย 

Add registray

ย 

Power

ย 

ย 

ย 

ย 

ย 

ย 

ย 

ย 

ย 

SD/eMMC

rpisdhc

BCM2836

ย 

ย 

ย 

ย 

ย 

ย 

ย 

SD/eMMC

bcmemmc2

BCM2711

ย 

ย 

ย 

ย 

ย 

Broadcom eMMC2 SD Host Controller

ย 

SD/eMMC

SDHostBRCME88C

BCM2711

ย 

ย 

ย 

ย 

ย 

Broadcom SD Host (BRCME88C) for Raspberry Pi 4

ย 

Camera

ย 

ย 

ย 

ย 

ย 

ย 

ย 

ย 

ย 

Embedded Controller

ย 

ย 

ย 

ย 

ย 

ย 

ย 

ย 

ย 

ย 

ย