Describe the bug
The pcie-32bit-dma overlay targets pcie1 (RP1 south bridge at /axi/pcie@1000120000), restricting DMA ranges for all RP1 peripherals. This breaks I2S audio. the PCM device appears in arecord -l but cannot be opened (EINVAL at the syscall level). The overlay does make FireWire work on the external PCIe port (pciex1), but more like a side effect rather than a targeted fix. A custom overlay targeting pciex1 directly resolves both FireWire and I2S. Detailed writeup: geerlingguy/raspberry-pi-pcie-devices#811
Steps to reproduce the behaviour
- Add
dtparam=pciex1, dtoverlay=pcie-32bit-dma, and dtoverlay=adau7002-simple to /boot/firmware/config.txt
- Reboot
- Run
arecord -l — I2S card shows up as card 0: adau7002
- Run
arecord -D hw:0,0 -c2 -r 48000 -f S32_LE -t wav -d 1 test.wav — fails with audio open error: Invalid argument
- Remove
dtoverlay=pcie-32bit-dma, reboot — I2S works, but FireWire fails with error -12 (ENOMEM)
- Replace with a custom overlay targeting
pciex1 instead of pcie1 — both work
Device (s)
Raspberry Pi 5
System
https://pastebin.com/vSRL06nC
Logs
# With pcie-32bit-dma (I2S broken):
$ arecord -D hw:0,0 -c2 -r 48000 -f S32_LE -t wav -d 1 test.wav
arecord: main:850: audio open error: Invalid argument
# Without pcie-32bit-dma (FireWire broken):
$ dmesg | grep firewire
firewire_ohci 0001:02:00.0: probe with driver firewire_ohci failed with error -12
# With pciex1-targeted overlay (both working):
$ dmesg | grep -iE "firewire|adau"
adau7002 adau7002-codec: supply IOVDD not found, using dummy regulator
firewire_ohci 0001:02:00.0: added OHCI v1.10 device as card 0, 8 IR + 8 IT contexts, quirks 0x2
firewire_core 0001:02:00.0: created device fw0: GUID 7856341278563412, S800
Additional context
Proposed fix — overlay targeting pciex1 directly:
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2712";
fragment@0 {
target = <&pciex1>;
__overlay__ {
#address-cells = <0x03>;
#size-cells = <0x02>;
dma-ranges = <0x03000000 0x00 0x00 0x00 0x00 0x00 0x80000000>;
};
};
};
It would be useful to have this as an official overlay (e.g. pciex1-32bit-dma) for users who need 32-bit DMA on the external PCIe port without affecting RP1 peripherals.
Hardware: 52Pi P02 PCIe x1 board, SYBA SY-PEX30016 FireWire card (TI XIO2213B), INMP441 I2S MEMS microphone. Custom kernel with CONFIG_FIREWIRE=m, CONFIG_FIREWIRE_OHCI=m.
Describe the bug
The
pcie-32bit-dmaoverlay targetspcie1(RP1 south bridge at/axi/pcie@1000120000), restricting DMA ranges for all RP1 peripherals. This breaks I2S audio. the PCM device appears inarecord -lbut cannot be opened (EINVALat the syscall level). The overlay does make FireWire work on the external PCIe port (pciex1), but more like a side effect rather than a targeted fix. A custom overlay targetingpciex1directly resolves both FireWire and I2S. Detailed writeup: geerlingguy/raspberry-pi-pcie-devices#811Steps to reproduce the behaviour
dtparam=pciex1,dtoverlay=pcie-32bit-dma, anddtoverlay=adau7002-simpleto/boot/firmware/config.txtarecord -l— I2S card shows up ascard 0: adau7002arecord -D hw:0,0 -c2 -r 48000 -f S32_LE -t wav -d 1 test.wav— fails withaudio open error: Invalid argumentdtoverlay=pcie-32bit-dma, reboot — I2S works, but FireWire fails witherror -12(ENOMEM)pciex1instead ofpcie1— both workDevice (s)
Raspberry Pi 5
System
https://pastebin.com/vSRL06nC
Logs
Additional context
Proposed fix — overlay targeting
pciex1directly:It would be useful to have this as an official overlay (e.g.
pciex1-32bit-dma) for users who need 32-bit DMA on the external PCIe port without affecting RP1 peripherals.Hardware: 52Pi P02 PCIe x1 board, SYBA SY-PEX30016 FireWire card (TI XIO2213B), INMP441 I2S MEMS microphone. Custom kernel with
CONFIG_FIREWIRE=m,CONFIG_FIREWIRE_OHCI=m.