Skip to end of banner
Go to start of banner

Linux UEFI+ACPI on Raspberry Pi 4B

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »


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
https://github.com/torvalds/linux/commit/2e5db2c0e508f10daa348c47c3093d34f0b865c8

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

  • No labels