diff --git a/0000-raspberrypi-kernel.patch b/0000-raspberrypi-kernel.patch index 44d271c08e88cdb758317b828bbf3a21e71f7c91..da6f8aea3cf702f48ec90c8cd2e10200ea93acea 100644 --- a/0000-raspberrypi-kernel.patch +++ b/0000-raspberrypi-kernel.patch @@ -1,10 +1,13 @@ -From 42a6a0e9bca5d03c3bbc4104eb93025153d4cfee Mon Sep 17 00:00:00 2001 +From 4a2f74ffea3d5457bff01071d57773a98a2220e0 Mon Sep 17 00:00:00 2001 From: Yafen -Date: Wed, 15 May 2024 06:23:21 +0800 -Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) +Date: Tue, 29 Oct 2024 17:36:48 +0800 +Subject: [PATCH] apply RPi patch of 6.6.59 (openEuler 6.6.0-48.0.0) --- .../admin-guide/media/bcm2835-isp.rst | 127 + + .../admin-guide/media/raspberrypi-pisp-be.dot | 20 + + .../admin-guide/media/raspberrypi-pisp-be.rst | 109 + + .../admin-guide/media/v4l-drivers.rst | 1 + .../bindings/display/brcm,bcm2711-hdmi.yaml | 2 + .../bindings/display/brcm,bcm2835-dsi0.yaml | 1 + .../bindings/display/brcm,bcm2835-hvs.yaml | 5 +- @@ -28,7 +31,9 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../bindings/media/i2c/ovti,ov64a40.yaml | 98 + .../bindings/media/i2c/rohm,bu64754.yaml | 48 + .../i2c/{imx258.yaml => sony,imx258.yaml} | 9 +- + .../bindings/media/i2c/sony,imx500.yaml | 132 + .../bindings/media/i2c/sony,imx708.yaml | 128 + + .../bindings/media/raspberrypi,pispbe.yaml | 63 + .../bindings/media/rpivid_hevc.yaml | 72 + .../bindings/misc/brcm,bcm2835-smi-dev.txt | 17 + .../bindings/misc/brcm,bcm2835-smi.txt | 48 + @@ -42,73 +47,73 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../devicetree/bindings/rtc/rtc-rpi.txt | 22 + .../devicetree/bindings/serial/pl011.yaml | 6 + .../devicetree/bindings/sound/pcm512x.txt | 9 +- + .../bindings/sound/snps,designware-i2s.yaml | 4 + + .../spi/raspberrypi,rp2040-gpio-bridge.yaml | 77 + .../devicetree/bindings/spi/spi-gpio.yaml | 4 + .../devicetree/bindings/usb/snps,dwc3.yaml | 9 +- .../devicetree/bindings/vendor-prefixes.txt | 463 ++ .../devicetree/bindings/vendor-prefixes.yaml | 6 + .../devicetree/configfs-overlays.txt | 31 + - Documentation/driver-api/pwm.rst | 17 +- + .../driver-api/gpio/drivers-on-gpio.rst | 7 +- + Documentation/driver-api/pwm.rst | 9 + .../userspace-api/media/drivers/index.rst | 1 + - .../userspace-api/media/v4l/meta-formats.rst | 2 + + .../userspace-api/media/v4l/meta-formats.rst | 3 + + .../media/v4l/metafmt-pisp-be.rst | 56 + + .../userspace-api/media/v4l/pixfmt-bayer.rst | 1 + .../v4l/pixfmt-meta-bcm2835-isp-stats.rst | 41 + .../media/v4l/pixfmt-meta-sensor-data.rst | 32 + .../media/v4l/pixfmt-nv12-col128.rst | 215 + + .../userspace-api/media/v4l/pixfmt-rgb.rst | 54 + + .../media/v4l/pixfmt-srggb8-pisp-comp.rst | 74 + .../userspace-api/media/v4l/pixfmt-y12p.rst | 45 + .../userspace-api/media/v4l/pixfmt-y14p.rst | 54 + + .../media/v4l/pixfmt-yuv-luma.rst | 4 + .../media/v4l/pixfmt-yuv-planar.rst | 12 + .../media/v4l/subdev-formats.rst | 143 + .../userspace-api/media/v4l/yuv-formats.rst | 21 + - MAINTAINERS | 83 +- + MAINTAINERS | 105 +- README.md | 30 + arch/arm/boot/dts/Makefile | 5 + arch/arm/boot/dts/broadcom/Makefile | 35 + .../boot/dts/broadcom/bcm2708-rpi-b-plus.dts | 210 + .../boot/dts/broadcom/bcm2708-rpi-b-rev1.dts | 223 + arch/arm/boot/dts/broadcom/bcm2708-rpi-b.dts | 198 + - .../arm/boot/dts/broadcom/bcm2708-rpi-bt.dtsi | 38 + + .../arm/boot/dts/broadcom/bcm2708-rpi-bt.dtsi | 42 + arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dts | 174 + - .../arm/boot/dts/broadcom/bcm2708-rpi-cm.dtsi | 27 + - .../boot/dts/broadcom/bcm2708-rpi-zero-w.dts | 254 + + .../arm/boot/dts/broadcom/bcm2708-rpi-cm.dtsi | 23 + + .../boot/dts/broadcom/bcm2708-rpi-zero-w.dts | 250 + .../boot/dts/broadcom/bcm2708-rpi-zero.dts | 189 + - arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi | 57 + + arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi | 63 + arch/arm/boot/dts/broadcom/bcm2708.dtsi | 19 + .../arm/boot/dts/broadcom/bcm2709-rpi-2-b.dts | 204 + - .../arm/boot/dts/broadcom/bcm2709-rpi-cm2.dts | 219 + + .../arm/boot/dts/broadcom/bcm2709-rpi-cm2.dts | 215 + arch/arm/boot/dts/broadcom/bcm2709-rpi.dtsi | 8 + arch/arm/boot/dts/broadcom/bcm2709.dtsi | 29 + - arch/arm/boot/dts/broadcom/bcm270x-rpi.dtsi | 201 + + arch/arm/boot/dts/broadcom/bcm270x-rpi.dtsi | 208 + arch/arm/boot/dts/broadcom/bcm270x.dtsi | 294 + .../arm/boot/dts/broadcom/bcm2710-rpi-2-b.dts | 204 + - .../dts/broadcom/bcm2710-rpi-3-b-plus.dts | 299 + - .../arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts | 297 + - .../arm/boot/dts/broadcom/bcm2710-rpi-cm3.dts | 219 + - .../dts/broadcom/bcm2710-rpi-zero-2-w.dts | 261 + + .../dts/broadcom/bcm2710-rpi-3-b-plus.dts | 295 + + .../arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts | 293 + + .../arm/boot/dts/broadcom/bcm2710-rpi-cm3.dts | 215 + + .../dts/broadcom/bcm2710-rpi-zero-2-w.dts | 257 + .../boot/dts/broadcom/bcm2710-rpi-zero-2.dts | 1 + arch/arm/boot/dts/broadcom/bcm2710.dtsi | 32 + - .../arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts | 262 +- + .../arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts | 258 +- .../arm/boot/dts/broadcom/bcm2711-rpi-400.dts | 49 +- - .../arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts | 510 ++ - .../boot/dts/broadcom/bcm2711-rpi-cm4s.dts | 298 + - .../arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi | 561 ++ + .../arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts | 499 ++ + .../boot/dts/broadcom/bcm2711-rpi-cm4s.dts | 293 + + .../arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi | 567 ++ arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi | 13 + arch/arm/boot/dts/broadcom/bcm2711.dtsi | 2 +- - .../arm/boot/dts/broadcom/bcm2712-rpi-5-b.dts | 863 ++ - .../dts/broadcom/bcm2712-rpi-cm5-cm4io.dts | 20 + - .../dts/broadcom/bcm2712-rpi-cm5-cm5io.dts | 10 + - .../boot/dts/broadcom/bcm2712-rpi-cm5.dtsi | 888 ++ - arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi | 337 + - arch/arm/boot/dts/broadcom/bcm2712.dtsi | 1304 +++ - .../boot/dts/broadcom/bcm2712d0-rpi-5-b.dts | 107 + - .../arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi | 38 + + .../arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi | 42 + .../dts/broadcom/bcm283x-rpi-csi0-2lane.dtsi | 4 + .../dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi | 4 + .../dts/broadcom/bcm283x-rpi-csi1-4lane.dtsi | 4 + .../broadcom/bcm283x-rpi-i2c0mux_0_28.dtsi | 4 + .../broadcom/bcm283x-rpi-i2c0mux_0_44.dtsi | 4 + - arch/arm/boot/dts/broadcom/bcm283x.dtsi | 4 +- - arch/arm/boot/dts/broadcom/rp1.dtsi | 1307 +++ - arch/arm/boot/dts/overlays/Makefile | 336 + - arch/arm/boot/dts/overlays/README | 5389 +++++++++++++ + arch/arm/boot/dts/broadcom/bcm283x.dtsi | 8 +- + arch/arm/boot/dts/overlays/Makefile | 347 + + arch/arm/boot/dts/overlays/README | 5516 +++++++++++++ .../arm/boot/dts/overlays/act-led-overlay.dts | 28 + .../dts/overlays/adafruit-st7735r-overlay.dts | 83 + .../boot/dts/overlays/adafruit18-overlay.dts | 55 + @@ -190,9 +195,12 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../boot/dts/overlays/gpio-no-irq-overlay.dts | 14 + .../dts/overlays/gpio-poweroff-overlay.dts | 39 + .../dts/overlays/gpio-shutdown-overlay.dts | 86 + - arch/arm/boot/dts/overlays/hat_map.dts | 98 + + arch/arm/boot/dts/overlays/hat_map.dts | 124 + + .../dts/overlays/hd44780-i2c-lcd-overlay.dts | 57 + .../boot/dts/overlays/hd44780-lcd-overlay.dts | 46 + .../hdmi-backlight-hwhack-gpio-overlay.dts | 47 + + .../dts/overlays/hifiberry-adc-overlay.dts | 45 + + .../dts/overlays/hifiberry-adc8x-overlay.dts | 50 + .../dts/overlays/hifiberry-amp-overlay.dts | 39 + .../dts/overlays/hifiberry-amp100-overlay.dts | 67 + .../dts/overlays/hifiberry-amp3-overlay.dts | 57 + @@ -235,6 +243,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) arch/arm/boot/dts/overlays/i2c6-overlay.dts | 34 + .../arm/boot/dts/overlays/i2s-dac-overlay.dts | 34 + .../dts/overlays/i2s-gpio28-31-overlay.dts | 18 + + .../dts/overlays/i2s-master-dac-overlay.dts | 50 + .../boot/dts/overlays/ilitek251x-overlay.dts | 45 + arch/arm/boot/dts/overlays/imx219-overlay.dts | 89 + arch/arm/boot/dts/overlays/imx219.dtsi | 27 + @@ -250,6 +259,9 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) arch/arm/boot/dts/overlays/imx477-overlay.dts | 17 + .../boot/dts/overlays/imx477_378-overlay.dtsi | 92 + arch/arm/boot/dts/overlays/imx477_378.dtsi | 24 + + arch/arm/boot/dts/overlays/imx500-overlay.dts | 122 + + .../boot/dts/overlays/imx500-pi5-overlay.dts | 127 + + arch/arm/boot/dts/overlays/imx500.dtsi | 28 + arch/arm/boot/dts/overlays/imx519-overlay.dts | 93 + arch/arm/boot/dts/overlays/imx519.dtsi | 34 + arch/arm/boot/dts/overlays/imx708-overlay.dts | 105 + @@ -308,12 +320,13 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) arch/arm/boot/dts/overlays/ov7251.dtsi | 28 + arch/arm/boot/dts/overlays/ov9281-overlay.dts | 78 + arch/arm/boot/dts/overlays/ov9281.dtsi | 27 + - arch/arm/boot/dts/overlays/overlay_map.dts | 493 ++ + arch/arm/boot/dts/overlays/overlay_map.dts | 514 ++ .../arm/boot/dts/overlays/papirus-overlay.dts | 84 + .../arm/boot/dts/overlays/pca953x-overlay.dts | 240 + .../arm/boot/dts/overlays/pcf857x-overlay.dts | 32 + .../dts/overlays/pcie-32bit-dma-overlay.dts | 38 + .../overlays/pcie-32bit-dma-pi5-overlay.dts | 26 + + .../overlays/pciex1-compat-pi5-overlay.dts | 40 + arch/arm/boot/dts/overlays/pibell-overlay.dts | 81 + .../dts/overlays/pifacedigital-overlay.dts | 144 + .../arm/boot/dts/overlays/pifi-40-overlay.dts | 50 + @@ -322,7 +335,8 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../dts/overlays/pifi-mini-210-overlay.dts | 42 + arch/arm/boot/dts/overlays/piglow-overlay.dts | 97 + .../overlays/pineboards-hat-ai-overlay.dts | 18 + - .../boot/dts/overlays/piscreen-overlay.dts | 107 + + .../pineboards-hatdrive-poe-plus-overlay.dts | 19 + + .../boot/dts/overlays/piscreen-overlay.dts | 110 + .../boot/dts/overlays/piscreen2r-overlay.dts | 106 + .../arm/boot/dts/overlays/pisound-overlay.dts | 118 + .../boot/dts/overlays/pisound-pi5-overlay.dts | 31 + @@ -333,6 +347,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../boot/dts/overlays/pps-gpio-overlay.dts | 39 + .../boot/dts/overlays/proto-codec-overlay.dts | 39 + .../boot/dts/overlays/pwm-2chan-overlay.dts | 48 + + .../boot/dts/overlays/pwm-gpio-overlay.dts | 38 + .../boot/dts/overlays/pwm-ir-tx-overlay.dts | 40 + arch/arm/boot/dts/overlays/pwm-overlay.dts | 44 + arch/arm/boot/dts/overlays/pwm1-overlay.dts | 59 + @@ -349,8 +364,9 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../boot/dts/overlays/rpi-ft5406-overlay.dts | 25 + .../arm/boot/dts/overlays/rpi-poe-overlay.dts | 154 + .../dts/overlays/rpi-poe-plus-overlay.dts | 49 + - .../boot/dts/overlays/rpi-sense-overlay.dts | 47 + - .../dts/overlays/rpi-sense-v2-overlay.dts | 47 + + .../dts/overlays/rpi-rp2040-gpio-bridge.dtsi | 21 + + .../boot/dts/overlays/rpi-sense-overlay.dts | 69 + + .../dts/overlays/rpi-sense-v2-overlay.dts | 69 + arch/arm/boot/dts/overlays/rpi-tv-overlay.dts | 34 + .../rra-digidac1-wm8741-audio-overlay.dts | 49 + .../boot/dts/overlays/sainsmart18-overlay.dts | 52 + @@ -399,7 +415,8 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../boot/dts/overlays/ssd1306-spi-overlay.dts | 85 + .../boot/dts/overlays/ssd1331-spi-overlay.dts | 83 + .../boot/dts/overlays/ssd1351-spi-overlay.dts | 83 + - .../overlays/sunfounder-pironman5-overlay.dts | 51 + + .../overlays/sunfounder-pipower3-overlay.dts | 44 + + .../overlays/sunfounder-pironman5-overlay.dts | 55 + .../dts/overlays/superaudioboard-overlay.dts | 73 + arch/arm/boot/dts/overlays/sx150x-overlay.dts | 1706 ++++ .../dts/overlays/tc358743-audio-overlay.dts | 52 + @@ -424,7 +441,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../dts/overlays/upstream-pi4-overlay.dts | 137 + .../dts/overlays/vc4-fkms-v3d-overlay.dts | 46 + .../dts/overlays/vc4-fkms-v3d-pi4-overlay.dts | 50 + - .../overlays/vc4-kms-dpi-generic-overlay.dts | 81 + + .../overlays/vc4-kms-dpi-generic-overlay.dts | 82 + .../dts/overlays/vc4-kms-dpi-hyperpixel.dtsi | 94 + .../vc4-kms-dpi-hyperpixel2r-overlay.dts | 114 + .../vc4-kms-dpi-hyperpixel4-overlay.dts | 57 + @@ -437,7 +454,8 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../vc4-kms-dsi-ili9881-7inch-overlay.dts | 122 + .../vc4-kms-dsi-lt070me05000-overlay.dts | 69 + .../vc4-kms-dsi-lt070me05000-v2-overlay.dts | 64 + - .../vc4-kms-dsi-waveshare-panel-overlay.dts | 126 + + .../vc4-kms-dsi-waveshare-800x480-overlay.dts | 119 + + .../vc4-kms-dsi-waveshare-panel-overlay.dts | 133 + .../overlays/vc4-kms-kippah-7inch-overlay.dts | 26 + .../boot/dts/overlays/vc4-kms-v3d-overlay.dts | 124 + .../dts/overlays/vc4-kms-v3d-pi4-overlay.dts | 200 + @@ -455,9 +473,9 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../waveshare-can-fd-hat-mode-b-overlay.dts | 103 + .../arm/boot/dts/overlays/wittypi-overlay.dts | 44 + .../dts/overlays/wm8960-soundcard-overlay.dts | 82 + - arch/arm/configs/bcm2709_defconfig | 1585 ++++ - arch/arm/configs/bcm2711_defconfig | 1615 ++++ - arch/arm/configs/bcmrpi_defconfig | 1578 ++++ + arch/arm/configs/bcm2709_defconfig | 1601 ++++ + arch/arm/configs/bcm2711_defconfig | 1633 ++++ + arch/arm/configs/bcmrpi_defconfig | 1594 ++++ arch/arm/include/asm/cacheflush.h | 21 + arch/arm/include/asm/glue-cache.h | 2 + arch/arm/include/asm/irqflags.h | 16 +- @@ -477,7 +495,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) arch/arm/lib/memmove_rpi.S | 63 + arch/arm/lib/memset_rpi.S | 132 + arch/arm/lib/uaccess_with_memcpy.c | 125 +- - arch/arm/mach-bcm/Kconfig | 26 + + arch/arm/mach-bcm/Kconfig | 9 + arch/arm/mach-bcm/board_bcm2835.c | 109 + arch/arm/mm/cache-v6.S | 4 +- arch/arm/mm/cache-v7.S | 6 +- @@ -485,9 +503,9 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) arch/arm/mm/proc-syms.c | 3 + arch/arm/mm/proc-v6.S | 15 +- arch/arm/vfp/vfpmodule.c | 25 +- - arch/arm64/Kconfig | 3 +- + arch/arm64/Kconfig | 13 +- arch/arm64/boot/dts/Makefile | 2 + - arch/arm64/boot/dts/broadcom/Makefile | 18 + + arch/arm64/boot/dts/broadcom/Makefile | 21 + .../boot/dts/broadcom/bcm2710-rpi-2-b.dts | 1 + .../dts/broadcom/bcm2710-rpi-3-b-plus.dts | 1 + .../boot/dts/broadcom/bcm2710-rpi-3-b.dts | 1 + @@ -496,16 +514,24 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../boot/dts/broadcom/bcm2710-rpi-zero-2.dts | 1 + .../boot/dts/broadcom/bcm2711-rpi-cm4.dts | 1 + .../boot/dts/broadcom/bcm2711-rpi-cm4s.dts | 1 + - .../boot/dts/broadcom/bcm2712-rpi-5-b.dts | 2 + - .../dts/broadcom/bcm2712-rpi-cm5-cm4io.dts | 2 + - .../dts/broadcom/bcm2712-rpi-cm5-cm5io.dts | 2 + - .../boot/dts/broadcom/bcm2712d0-rpi-5-b.dts | 2 + - .../dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi | 1 + - .../dts/broadcom/bcm283x-rpi-lan7515.dtsi | 1 + + .../boot/dts/broadcom/bcm2712-rpi-5-b.dts | 750 ++ + .../boot/dts/broadcom/bcm2712-rpi-500.dts | 142 + + .../boot/dts/broadcom/bcm2712-rpi-cm4io.dtsi | 28 + + .../dts/broadcom/bcm2712-rpi-cm5-cm4io.dts | 5 + + .../dts/broadcom/bcm2712-rpi-cm5-cm5io.dts | 5 + + .../boot/dts/broadcom/bcm2712-rpi-cm5.dtsi | 754 ++ + .../boot/dts/broadcom/bcm2712-rpi-cm5io.dtsi | 14 + + .../dts/broadcom/bcm2712-rpi-cm5l-cm4io.dts | 5 + + .../dts/broadcom/bcm2712-rpi-cm5l-cm5io.dts | 5 + + .../boot/dts/broadcom/bcm2712-rpi-cm5l.dtsi | 22 + + arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi | 466 ++ + arch/arm64/boot/dts/broadcom/bcm2712.dtsi | 1308 +++ + .../boot/dts/broadcom/bcm2712d0-rpi-5-b.dts | 107 + + arch/arm64/boot/dts/broadcom/rp1.dtsi | 1289 +++ arch/arm64/boot/dts/overlays | 1 + - arch/arm64/configs/bcm2711_defconfig | 1677 ++++ - arch/arm64/configs/bcm2712_defconfig | 1680 ++++ - arch/arm64/configs/bcmrpi3_defconfig | 1561 ++++ + arch/arm64/configs/bcm2711_defconfig | 1698 ++++ + arch/arm64/configs/bcm2712_defconfig | 1701 ++++ + arch/arm64/configs/bcmrpi3_defconfig | 1575 ++++ arch/arm64/crypto/aes-cipher-glue.c | 11 + arch/arm64/crypto/aes-glue.c | 4 +- arch/arm64/crypto/aes-neonbs-glue.c | 5 - @@ -513,6 +539,11 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) arch/arm64/kernel/cpuinfo.c | 23 + arch/arm64/kernel/process.c | 4 +- arch/arm64/kernel/setup.c | 4 +- + drivers/base/Kconfig | 7 + + drivers/base/Makefile | 1 + + drivers/base/arch_numa.c | 6 + + drivers/base/numa_emulation.c | 72 + + drivers/base/numa_emulation.h | 21 + drivers/bluetooth/btbcm.c | 9 +- drivers/bluetooth/hci_h5.c | 3 +- drivers/char/Kconfig | 10 + @@ -535,13 +566,13 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/clk/clk-hifiberry-dachd.c | 331 + drivers/clk/clk-hifiberry-dacpro.c | 181 + drivers/clk/clk-rp1-sdio.c | 600 ++ - drivers/clk/clk-rp1.c | 2422 ++++++ + drivers/clk/clk-rp1.c | 2500 ++++++ + drivers/dma-buf/heaps/system_heap.c | 10 +- drivers/dma/Kconfig | 4 + drivers/dma/Makefile | 1 + drivers/dma/bcm2708-dmaengine.c | 281 + drivers/dma/bcm2835-dma.c | 735 +- - .../dma/dw-axi-dmac/dw-axi-dmac-platform.c | 137 +- - drivers/dma/dw-axi-dmac/dw-axi-dmac.h | 1 + + .../dma/dw-axi-dmac/dw-axi-dmac-platform.c | 178 +- drivers/firmware/psci/psci.c | 9 +- drivers/firmware/raspberrypi.c | 149 +- drivers/gpio/Kconfig | 25 +- @@ -552,54 +583,54 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/gpio/gpio-mmio.c | 124 +- drivers/gpio/gpio-pca953x.c | 1 + drivers/gpio/gpio-pwm.c | 144 + - drivers/gpio/gpiolib.c | 10 +- + drivers/gpio/gpiolib.c | 23 +- drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/bridge/Kconfig | 1 + + drivers/gpu/drm/bridge/panel.c | 6 + drivers/gpu/drm/bridge/tc358762.c | 26 +- drivers/gpu/drm/drm_atomic_helper.c | 18 +- drivers/gpu/drm/drm_atomic_state_helper.c | 14 + drivers/gpu/drm/drm_atomic_uapi.c | 19 + + drivers/gpu/drm/drm_bridge.c | 14 + drivers/gpu/drm/drm_color_mgmt.c | 40 +- drivers/gpu/drm/drm_connector.c | 77 +- drivers/gpu/drm/drm_fb_helper.c | 11 +- drivers/gpu/drm/drm_modes.c | 5 +- drivers/gpu/drm/drm_probe_helper.c | 5 +- - .../gpu/drm/i915/display/intel_backlight.c | 6 +- drivers/gpu/drm/i915/display/intel_display.c | 13 + drivers/gpu/drm/msm/msm_atomic.c | 2 + drivers/gpu/drm/panel/Kconfig | 32 + drivers/gpu/drm/panel/Makefile | 3 + drivers/gpu/drm/panel/panel-ilitek-ili9806e.c | 484 ++ - drivers/gpu/drm/panel/panel-ilitek-ili9881c.c | 955 ++- + drivers/gpu/drm/panel/panel-ilitek-ili9881c.c | 979 ++- .../gpu/drm/panel/panel-jdi-lt070me05000.c | 19 +- .../drm/panel/panel-raspberrypi-touchscreen.c | 44 +- drivers/gpu/drm/panel/panel-simple.c | 238 +- drivers/gpu/drm/panel/panel-sitronix-st7701.c | 407 +- drivers/gpu/drm/panel/panel-tdo-y17p.c | 277 + - drivers/gpu/drm/panel/panel-waveshare-dsi.c | 434 + + drivers/gpu/drm/panel/panel-waveshare-dsi.c | 488 ++ drivers/gpu/drm/rp1/Kconfig | 5 + drivers/gpu/drm/rp1/Makefile | 4 + drivers/gpu/drm/rp1/rp1-dpi/Kconfig | 11 + drivers/gpu/drm/rp1/rp1-dpi/Makefile | 5 + - drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi.c | 415 + + drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi.c | 417 + drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi.h | 69 + drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_cfg.c | 510 ++ - drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_hw.c | 492 ++ + drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_hw.c | 504 ++ drivers/gpu/drm/rp1/rp1-dsi/Kconfig | 14 + drivers/gpu/drm/rp1/rp1-dsi/Makefile | 5 + - drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi.c | 535 ++ - drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi.h | 94 + - drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dma.c | 443 + - drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dsi.c | 1513 ++++ + drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi.c | 541 ++ + drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi.h | 96 + + drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dma.c | 455 ++ + drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dsi.c | 1599 ++++ drivers/gpu/drm/rp1/rp1-vec/Kconfig | 11 + drivers/gpu/drm/rp1/rp1-vec/Makefile | 5 + - drivers/gpu/drm/rp1/rp1-vec/rp1_vec.c | 602 ++ + drivers/gpu/drm/rp1/rp1-vec/rp1_vec.c | 604 ++ drivers/gpu/drm/rp1/rp1-vec/rp1_vec.h | 72 + drivers/gpu/drm/rp1/rp1-vec/rp1_vec_cfg.c | 508 ++ - drivers/gpu/drm/rp1/rp1-vec/rp1_vec_hw.c | 568 ++ + drivers/gpu/drm/rp1/rp1-vec/rp1_vec_hw.c | 580 ++ drivers/gpu/drm/rp1/rp1-vec/vec_regs.h | 1420 ++++ - drivers/gpu/drm/solomon/ssd130x.c | 2 +- drivers/gpu/drm/tiny/ili9486.c | 1 - drivers/gpu/drm/v3d/v3d_bo.c | 12 +- drivers/gpu/drm/v3d/v3d_debugfs.c | 258 +- @@ -615,29 +646,30 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/gpu/drm/vc4/tests/vc4_mock.h | 28 +- drivers/gpu/drm/vc4/tests/vc4_mock_output.c | 13 +- drivers/gpu/drm/vc4/tests/vc4_mock_plane.c | 32 +- - drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c | 308 + + drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c | 314 + .../gpu/drm/vc4/tests/vc4_test_pv_muxing.c | 225 +- drivers/gpu/drm/vc4/vc4_bo.c | 28 +- - drivers/gpu/drm/vc4/vc4_crtc.c | 197 +- + drivers/gpu/drm/vc4/vc4_crtc.c | 214 +- drivers/gpu/drm/vc4/vc4_debugfs.c | 3 +- + drivers/gpu/drm/vc4/vc4_dpi.c | 22 + drivers/gpu/drm/vc4/vc4_drv.c | 90 +- - drivers/gpu/drm/vc4/vc4_drv.h | 144 +- - drivers/gpu/drm/vc4/vc4_dsi.c | 98 +- + drivers/gpu/drm/vc4/vc4_drv.h | 172 +- + drivers/gpu/drm/vc4/vc4_dsi.c | 151 +- drivers/gpu/drm/vc4/vc4_firmware_kms.c | 2077 +++++ drivers/gpu/drm/vc4/vc4_gem.c | 24 +- - drivers/gpu/drm/vc4/vc4_hdmi.c | 216 +- - drivers/gpu/drm/vc4/vc4_hdmi.h | 31 + - drivers/gpu/drm/vc4/vc4_hdmi_phy.c | 640 ++ + drivers/gpu/drm/vc4/vc4_hdmi.c | 301 +- + drivers/gpu/drm/vc4/vc4_hdmi.h | 43 + + drivers/gpu/drm/vc4/vc4_hdmi_phy.c | 647 ++ drivers/gpu/drm/vc4/vc4_hdmi_regs.h | 222 +- - drivers/gpu/drm/vc4/vc4_hvs.c | 1878 ++++- + drivers/gpu/drm/vc4/vc4_hvs.c | 1867 ++++- drivers/gpu/drm/vc4/vc4_irq.c | 10 +- - drivers/gpu/drm/vc4/vc4_kms.c | 135 +- + drivers/gpu/drm/vc4/vc4_kms.c | 173 +- drivers/gpu/drm/vc4/vc4_perfmon.c | 20 +- - drivers/gpu/drm/vc4/vc4_plane.c | 1031 ++- + drivers/gpu/drm/vc4/vc4_plane.c | 1281 ++- drivers/gpu/drm/vc4/vc4_regs.h | 357 +- drivers/gpu/drm/vc4/vc4_render_cl.c | 2 +- drivers/gpu/drm/vc4/vc4_txp.c | 91 +- - drivers/gpu/drm/vc4/vc4_v3d.c | 10 +- + drivers/gpu/drm/vc4/vc4_v3d.c | 12 +- drivers/gpu/drm/vc4/vc4_validate.c | 8 +- drivers/gpu/drm/vc4/vc4_validate_shaders.c | 2 +- drivers/gpu/drm/vc4/vc4_vec.c | 172 +- @@ -647,10 +679,11 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/hid/usbhid/hid-core.c | 7 +- drivers/hwmon/Kconfig | 7 + drivers/hwmon/Makefile | 1 + + drivers/hwmon/adt7410.c | 8 + drivers/hwmon/aht10.c | 7 + drivers/hwmon/ds1621.c | 10 + drivers/hwmon/emc2305.c | 95 +- - drivers/hwmon/pwm-fan.c | 67 +- + drivers/hwmon/pwm-fan.c | 59 +- drivers/hwmon/rp1-adc.c | 307 + drivers/hwmon/sht3x.c | 12 +- drivers/i2c/busses/Kconfig | 19 + @@ -665,13 +698,8 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/iio/adc/mcp3422.c | 9 +- drivers/iio/light/tsl4531.c | 7 + drivers/iio/light/veml6070.c | 7 + - drivers/input/joystick/Kconfig | 8 + - drivers/input/joystick/Makefile | 1 + - drivers/input/joystick/rpisense-js.c | 153 + - drivers/input/misc/da7280.c | 4 +- - drivers/input/misc/pwm-beeper.c | 4 +- - drivers/input/misc/pwm-vibra.c | 8 +- - drivers/input/touchscreen/ads7846.c | 11 + + drivers/input/joystick/sensehat-joystick.c | 2 +- + drivers/input/keyboard/matrix_keypad.c | 48 +- drivers/input/touchscreen/edt-ft5x06.c | 124 +- drivers/input/touchscreen/goodix.c | 75 +- drivers/input/touchscreen/goodix.h | 5 + @@ -688,16 +716,14 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/irqchip/irq-bcm2836.c | 28 +- drivers/irqchip/irq-brcmstb-l2.c | 17 + drivers/leds/leds-gpio.c | 17 +- - drivers/leds/leds-pwm.c | 2 +- - drivers/leds/rgb/leds-pwm-multicolor.c | 4 +- drivers/leds/trigger/Kconfig | 18 + drivers/leds/trigger/Makefile | 2 + drivers/leds/trigger/ledtrig-actpwr.c | 190 + drivers/leds/trigger/ledtrig-input.c | 55 + drivers/mailbox/bcm2835-mailbox.c | 18 +- .../media/common/videobuf2/videobuf2-core.c | 21 +- - drivers/media/i2c/Kconfig | 115 + - drivers/media/i2c/Makefile | 10 + + drivers/media/i2c/Kconfig | 127 + + drivers/media/i2c/Makefile | 11 + drivers/media/i2c/ad5398_vcm.c | 340 + drivers/media/i2c/adv7180.c | 88 +- drivers/media/i2c/arducam-pivariety.c | 1472 ++++ @@ -709,17 +735,58 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/media/i2c/imx258.c | 799 +- drivers/media/i2c/imx296.c | 166 +- drivers/media/i2c/imx477.c | 2339 ++++++ + drivers/media/i2c/imx500.c | 3227 ++++++++ drivers/media/i2c/imx519.c | 2146 +++++ drivers/media/i2c/imx708.c | 2116 +++++ drivers/media/i2c/irs1125.c | 1197 +++ drivers/media/i2c/irs1125.h | 95 + drivers/media/i2c/ov2311.c | 1178 +++ - drivers/media/i2c/ov5647.c | 158 +- + drivers/media/i2c/ov5647.c | 465 +- drivers/media/i2c/ov64a40.c | 3686 +++++++++ drivers/media/i2c/ov7251.c | 62 +- drivers/media/i2c/ov9282.c | 8 +- drivers/media/i2c/tc358743.c | 121 +- drivers/media/mc/mc-request.c | 35 + + drivers/media/pci/Kconfig | 1 + + drivers/media/pci/Makefile | 3 +- + drivers/media/pci/hailo/Kconfig | 6 + + drivers/media/pci/hailo/Makefile | 34 + + drivers/media/pci/hailo/common/fw_operation.c | 103 + + drivers/media/pci/hailo/common/fw_operation.h | 25 + + .../media/pci/hailo/common/fw_validation.c | 114 + + .../media/pci/hailo/common/fw_validation.h | 65 + + .../pci/hailo/common/hailo_ioctl_common.h | 669 ++ + .../pci/hailo/common/hailo_pcie_version.h | 13 + + .../media/pci/hailo/common/hailo_resource.c | 128 + + .../media/pci/hailo/common/hailo_resource.h | 39 + + drivers/media/pci/hailo/common/pcie_common.c | 872 ++ + drivers/media/pci/hailo/common/pcie_common.h | 168 + + drivers/media/pci/hailo/common/utils.h | 61 + + drivers/media/pci/hailo/common/vdma_common.c | 877 ++ + drivers/media/pci/hailo/common/vdma_common.h | 257 + + .../pci/hailo/include/hailo_pcie_version.h | 14 + + drivers/media/pci/hailo/src/fops.c | 762 ++ + drivers/media/pci/hailo/src/fops.h | 22 + + drivers/media/pci/hailo/src/pci_soc_ioctl.c | 155 + + drivers/media/pci/hailo/src/pci_soc_ioctl.h | 19 + + drivers/media/pci/hailo/src/pcie.c | 1095 +++ + drivers/media/pci/hailo/src/pcie.h | 84 + + drivers/media/pci/hailo/src/sysfs.c | 45 + + drivers/media/pci/hailo/src/sysfs.h | 13 + + drivers/media/pci/hailo/src/utils.c | 26 + + drivers/media/pci/hailo/src/utils.h | 21 + + drivers/media/pci/hailo/utils/compact.h | 153 + + drivers/media/pci/hailo/utils/fw_common.h | 19 + + .../pci/hailo/utils/integrated_nnc_utils.c | 101 + + .../pci/hailo/utils/integrated_nnc_utils.h | 30 + + drivers/media/pci/hailo/utils/logs.c | 8 + + drivers/media/pci/hailo/utils/logs.h | 45 + + drivers/media/pci/hailo/vdma/ioctl.c | 715 ++ + drivers/media/pci/hailo/vdma/ioctl.h | 37 + + drivers/media/pci/hailo/vdma/memory.c | 661 ++ + drivers/media/pci/hailo/vdma/memory.h | 54 + + drivers/media/pci/hailo/vdma/vdma.c | 302 + + drivers/media/pci/hailo/vdma/vdma.h | 161 + drivers/media/platform/Kconfig | 2 + drivers/media/platform/Makefile | 2 + drivers/media/platform/bcm2835/Kconfig | 21 + @@ -730,8 +797,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/media/platform/raspberrypi/Makefile | 4 + .../platform/raspberrypi/pisp_be/Kconfig | 12 + .../platform/raspberrypi/pisp_be/Makefile | 6 + - .../platform/raspberrypi/pisp_be/pisp_be.c | 1993 +++++ - .../raspberrypi/pisp_be/pisp_be_config.h | 533 ++ + .../platform/raspberrypi/pisp_be/pisp_be.c | 1866 +++++ .../raspberrypi/pisp_be/pisp_be_formats.h | 519 ++ .../platform/raspberrypi/rp1_cfe/Kconfig | 14 + .../platform/raspberrypi/rp1_cfe/Makefile | 6 + @@ -748,30 +814,32 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../raspberrypi/rp1_cfe/pisp_fe_config.h | 272 + .../raspberrypi/rp1_cfe/pisp_statistics.h | 62 + .../platform/raspberrypi/rp1_cfe/pisp_types.h | 144 + - drivers/media/platform/video-mux.c | 73 +- + drivers/media/platform/video-mux.c | 86 +- drivers/media/rc/Kconfig | 1 + - drivers/media/rc/pwm-ir-tx.c | 87 +- + drivers/media/rc/pwm-ir-tx.c | 83 +- drivers/media/spi/Kconfig | 1 + drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 4 + + drivers/media/v4l2-core/v4l2-common.c | 2 + drivers/media/v4l2-core/v4l2-ctrls-defs.c | 1 + drivers/media/v4l2-core/v4l2-ioctl.c | 22 + drivers/media/v4l2-core/v4l2-mem2mem.c | 9 +- - drivers/mfd/Kconfig | 29 + - drivers/mfd/Makefile | 3 + + drivers/mfd/Kconfig | 21 + + drivers/mfd/Makefile | 2 + drivers/mfd/bcm2835-pm.c | 28 +- drivers/mfd/rp1.c | 376 + - drivers/mfd/rpisense-core.c | 163 + - drivers/mfd/simple-mfd-i2c.c | 10 + + drivers/mfd/simple-mfd-i2c.c | 11 + drivers/misc/Kconfig | 8 + drivers/misc/Makefile | 1 + drivers/misc/bcm2835_smi.c | 953 +++ - drivers/mmc/core/block.c | 59 +- + drivers/mmc/core/block.c | 92 +- drivers/mmc/core/bus.c | 2 + drivers/mmc/core/card.h | 1 + - drivers/mmc/core/core.c | 10 +- - drivers/mmc/core/mmc.c | 4 +- - drivers/mmc/core/quirks.h | 38 +- - drivers/mmc/core/sd.c | 203 +- + drivers/mmc/core/core.c | 20 +- + drivers/mmc/core/mmc.c | 6 +- + drivers/mmc/core/queue.c | 9 + + drivers/mmc/core/queue.h | 1 + + drivers/mmc/core/quirks.h | 37 + + drivers/mmc/core/sd.c | 209 +- drivers/mmc/core/sd_ops.c | 134 + drivers/mmc/core/sd_ops.h | 6 + drivers/mmc/host/Kconfig | 41 + @@ -779,15 +847,15 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/mmc/host/bcm2835-mmc.c | 1562 ++++ drivers/mmc/host/bcm2835-sdhost.c | 2220 +++++ drivers/mmc/host/bcm2835.c | 17 +- - drivers/mmc/host/cqhci-core.c | 13 +- - drivers/mmc/host/sdhci-brcmstb.c | 282 +- + drivers/mmc/host/cqhci-core.c | 11 +- + drivers/mmc/host/sdhci-brcmstb.c | 311 +- drivers/mmc/host/sdhci-iproc.c | 1 + drivers/mmc/host/sdhci-of-dwcmshc.c | 59 +- drivers/mmc/host/sdhci-pltfm.c | 8 + drivers/mmc/host/sdhci-pltfm.h | 3 + - drivers/mmc/host/sdhci.c | 36 +- + drivers/mmc/host/sdhci.c | 51 +- drivers/mmc/host/sdhci.h | 9 + - .../net/ethernet/broadcom/genet/bcmgenet.c | 45 +- + .../net/ethernet/broadcom/genet/bcmgenet.c | 29 +- .../net/ethernet/broadcom/genet/bcmgenet.h | 2 +- drivers/net/ethernet/broadcom/genet/bcmmii.c | 6 +- drivers/net/ethernet/cadence/macb.h | 25 + @@ -800,14 +868,14 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/net/phy/broadcom.c | 48 +- drivers/net/phy/microchip.c | 27 + drivers/net/usb/lan78xx.c | 64 +- - drivers/net/usb/smsc95xx.c | 51 +- + drivers/net/usb/smsc95xx.c | 41 +- .../broadcom/brcm80211/brcmfmac/bus.h | 2 +- - .../broadcom/brcm80211/brcmfmac/cfg80211.c | 364 +- + .../broadcom/brcm80211/brcmfmac/cfg80211.c | 370 +- .../broadcom/brcm80211/brcmfmac/cfg80211.h | 18 + .../broadcom/brcm80211/brcmfmac/common.c | 39 + .../broadcom/brcm80211/brcmfmac/core.c | 13 +- .../broadcom/brcm80211/brcmfmac/debug.h | 8 +- - .../broadcom/brcm80211/brcmfmac/feature.c | 1 + + .../broadcom/brcm80211/brcmfmac/feature.c | 11 +- .../broadcom/brcm80211/brcmfmac/feature.h | 2 + .../broadcom/brcm80211/brcmfmac/firmware.c | 21 +- .../broadcom/brcm80211/brcmfmac/fweh.c | 28 +- @@ -815,7 +883,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../broadcom/brcm80211/brcmfmac/fwil_types.h | 45 + .../broadcom/brcm80211/brcmfmac/p2p.c | 5 + .../broadcom/brcm80211/brcmfmac/pcie.c | 2 +- - .../broadcom/brcm80211/brcmfmac/sdio.c | 262 +- + .../broadcom/brcm80211/brcmfmac/sdio.c | 263 +- .../broadcom/brcm80211/brcmfmac/sdio.h | 110 + .../broadcom/brcm80211/brcmfmac/usb.c | 4 +- .../broadcom/brcm80211/include/chipcommon.h | 2 + @@ -826,7 +894,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/of/Makefile | 1 + drivers/of/configfs.c | 277 + drivers/of/overlay.c | 2 + - drivers/pci/controller/pcie-brcmstb.c | 533 +- + drivers/pci/controller/pcie-brcmstb.c | 545 +- drivers/perf/Kconfig | 8 + drivers/perf/Makefile | 1 + drivers/perf/raspberrypi_axi_monitor.c | 830 ++ @@ -840,8 +908,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/pinctrl/bcm/Makefile | 1 + drivers/pinctrl/bcm/pinctrl-bcm2712.c | 1247 +++ drivers/pinctrl/bcm/pinctrl-bcm2835.c | 44 +- - drivers/pinctrl/pinctrl-rp1.c | 1605 ++++ - drivers/platform/x86/lenovo-yogabook.c | 2 +- + drivers/pinctrl/pinctrl-rp1.c | 1695 ++++ drivers/pmdomain/bcm/bcm2835-power.c | 29 +- drivers/power/reset/gpio-poweroff.c | 21 +- drivers/power/supply/Kconfig | 7 + @@ -849,36 +916,37 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/power/supply/rpi_poe_power.c | 243 + drivers/pps/clients/pps-gpio.c | 3 + drivers/pps/pps.c | 6 +- - drivers/pwm/Kconfig | 9 + - drivers/pwm/Makefile | 1 + - drivers/pwm/core.c | 74 +- + drivers/pwm/Kconfig | 20 + + drivers/pwm/Makefile | 2 + + drivers/pwm/core.c | 62 +- drivers/pwm/pwm-bcm2835.c | 59 +- + drivers/pwm/pwm-gpio.c | 240 + drivers/pwm/pwm-raspberrypi-poe.c | 81 +- drivers/pwm/pwm-renesas-tpu.c | 1 - drivers/pwm/pwm-rp1.c | 203 + - drivers/pwm/pwm-twl-led.c | 2 +- - drivers/pwm/pwm-vt8500.c | 2 +- - drivers/pwm/sysfs.c | 10 +- drivers/regulator/Kconfig | 10 + drivers/regulator/Makefile | 1 + - drivers/regulator/pwm-regulator.c | 4 +- - .../regulator/rpi-panel-attiny-regulator.c | 27 +- - drivers/regulator/rpi-panel-v2-regulator.c | 189 + + .../regulator/rpi-panel-attiny-regulator.c | 77 +- + drivers/regulator/rpi-panel-v2-regulator.c | 240 + drivers/reset/Kconfig | 2 +- drivers/reset/reset-brcmstb-rescal.c | 10 + drivers/rtc/Kconfig | 11 + drivers/rtc/Makefile | 1 + drivers/rtc/rtc-ds3232.c | 7 + drivers/rtc/rtc-pcf2123.c | 1 + - drivers/rtc/rtc-pcf8523.c | 28 + + drivers/rtc/rtc-pcf8523.c | 30 +- drivers/rtc/rtc-rpi.c | 277 + drivers/rtc/rtc-rv3028.c | 24 +- drivers/soc/bcm/Kconfig | 1 + + drivers/spi/Kconfig | 12 + + drivers/spi/Makefile | 1 + drivers/spi/spi-bcm2835.c | 37 +- - drivers/spi/spi-dw-core.c | 12 +- - drivers/spi/spi-dw-dma.c | 6 +- + drivers/spi/spi-dw-core.c | 132 +- + drivers/spi/spi-dw-dma.c | 43 +- drivers/spi/spi-dw-mmio.c | 8 +- + drivers/spi/spi-dw.h | 3 + drivers/spi/spi-gpio.c | 105 +- + drivers/spi/spi-rp2040-gpio-bridge.c | 1244 +++ drivers/spi/spi.c | 9 + drivers/spi/spidev.c | 8 +- drivers/staging/fbtft/fb_st7735r.c | 38 +- @@ -893,11 +961,11 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/staging/media/rpivid/rpivid.h | 203 + drivers/staging/media/rpivid/rpivid_dec.c | 96 + drivers/staging/media/rpivid/rpivid_dec.h | 19 + - drivers/staging/media/rpivid/rpivid_h265.c | 2706 +++++++ + drivers/staging/media/rpivid/rpivid_h265.c | 2712 +++++++ drivers/staging/media/rpivid/rpivid_hw.c | 383 + drivers/staging/media/rpivid/rpivid_hw.h | 303 + - drivers/staging/media/rpivid/rpivid_video.c | 696 ++ - drivers/staging/media/rpivid/rpivid_video.h | 33 + + drivers/staging/media/rpivid/rpivid_video.c | 691 ++ + drivers/staging/media/rpivid/rpivid_video.h | 38 + drivers/staging/vc04_services/Kconfig | 4 + drivers/staging/vc04_services/Makefile | 3 + .../vc04_services/bcm2835-audio/bcm2835-pcm.c | 3 +- @@ -909,12 +977,12 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) .../vc04_services/bcm2835-codec/Kconfig | 11 + .../vc04_services/bcm2835-codec/Makefile | 8 + .../staging/vc04_services/bcm2835-codec/TODO | 1 + - .../bcm2835-codec/bcm2835-v4l2-codec.c | 3964 +++++++++ + .../bcm2835-codec/bcm2835-v4l2-codec.c | 4019 +++++++++ .../staging/vc04_services/bcm2835-isp/Kconfig | 14 + .../vc04_services/bcm2835-isp/Makefile | 8 + .../bcm2835-isp/bcm2835-isp-ctrls.h | 72 + .../bcm2835-isp/bcm2835-isp-fmts.h | 558 ++ - .../bcm2835-isp/bcm2835-v4l2-isp.c | 1816 +++++ + .../bcm2835-isp/bcm2835-v4l2-isp.c | 1833 +++++ .../include/linux/broadcom/vc_sm_cma_ioctl.h | 114 + .../interface/vchiq_arm/vchiq_arm.c | 179 +- .../staging/vc04_services/vc-sm-cma/Kconfig | 10 + @@ -940,7 +1008,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/tty/serial/8250/8250_bcm2835aux.c | 8 + drivers/tty/serial/8250/8250_core.c | 15 + drivers/tty/serial/8250/8250_port.c | 9 + - drivers/tty/serial/amba-pl011.c | 108 + + drivers/tty/serial/amba-pl011.c | 115 + drivers/tty/serial/sc16is7xx.c | 5 + drivers/usb/Makefile | 1 + drivers/usb/core/generic.c | 1 + @@ -952,7 +1020,6 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/usb/dwc3/core.h | 17 +- drivers/usb/dwc3/host.c | 9 +- drivers/usb/gadget/file_storage.c | 3676 +++++++++ - drivers/usb/gadget/function/uvc_configfs.c | 4 +- drivers/usb/host/Kconfig | 10 + drivers/usb/host/Makefile | 1 + drivers/usb/host/dwc_common_port/Makefile | 58 + @@ -995,9 +1062,9 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/usb/host/dwc_otg/dwc_otg_driver.c | 1772 ++++ drivers/usb/host/dwc_otg/dwc_otg_driver.h | 86 + drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c | 1433 ++++ - drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h | 399 + + drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h | 395 + drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S | 80 + - drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 4366 ++++++++++ + drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 4364 ++++++++++ drivers/usb/host/dwc_otg/dwc_otg_hcd.h | 870 ++ drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c | 1135 +++ drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h | 421 + @@ -1023,9 +1090,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/usb/phy/phy-generic.c | 7 - drivers/video/backlight/Kconfig | 7 + drivers/video/backlight/Makefile | 1 + - drivers/video/backlight/lm3630a_bl.c | 2 +- - drivers/video/backlight/lp855x_bl.c | 2 +- - drivers/video/backlight/pwm_bl.c | 12 +- + drivers/video/backlight/backlight.c | 21 + drivers/video/backlight/rpi_backlight.c | 119 + drivers/video/fbdev/Kconfig | 28 + drivers/video/fbdev/Makefile | 2 + @@ -1033,36 +1098,37 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) drivers/video/fbdev/core/fb_chrdev.c | 35 + drivers/video/fbdev/core/fb_defio.c | 3 +- drivers/video/fbdev/core/fbmem.c | 19 +- - drivers/video/fbdev/rpisense-fb.c | 297 + - drivers/video/fbdev/ssd1307fb.c | 2 +- + drivers/video/fbdev/rpisense-fb.c | 296 + drivers/video/logo/logo_linux_clut224.ppm | 2483 ++---- drivers/w1/masters/w1-gpio.c | 15 +- drivers/w1/w1.c | 2 + drivers/w1/w1_io.c | 37 +- drivers/watchdog/bcm2835_wdt.c | 51 +- + fs/ntfs3/fslog.c | 2 + include/drm/drm_color_mgmt.h | 3 + include/drm/drm_connector.h | 7 + include/drm/drm_mipi_dsi.h | 38 +- include/drm/drm_plane.h | 37 + - include/dt-bindings/clock/rp1.h | 56 + + include/dt-bindings/clock/rp1.h | 60 + include/dt-bindings/gpio/gpio-fsm.h | 21 + include/dt-bindings/mfd/rp1.h | 235 + + include/linux/backlight.h | 15 + include/linux/brcmphy.h | 1 + include/linux/broadcom/bcm2835_smi.h | 391 + include/linux/broadcom/vc_mem.h | 39 + + include/linux/cma.h | 9 + include/linux/fb.h | 2 + include/linux/gpio/driver.h | 1 + - include/linux/iommu.h | 8 +- + include/linux/iommu.h | 6 +- include/linux/leds.h | 3 + - include/linux/mfd/rpisense/core.h | 47 + - include/linux/mfd/rpisense/framebuffer.h | 32 + + include/linux/mfd/rpisense/framebuffer.h | 35 + include/linux/mfd/rpisense/joystick.h | 35 + include/linux/microchipphy.h | 8 + - include/linux/mmc/card.h | 2 + + include/linux/mmc/card.h | 3 + include/linux/mmc/sd.h | 12 + include/linux/module.h | 2 +- include/linux/platform_data/dma-bcm2708.h | 143 + - include/linux/pwm.h | 57 +- + include/linux/pwm.h | 29 +- include/linux/rp1_platform.h | 20 + include/linux/usb.h | 2 + include/linux/usb/hcd.h | 7 + @@ -1076,18 +1142,24 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) include/uapi/linux/bcm2835-isp.h | 347 + include/uapi/linux/fb.h | 12 + include/uapi/linux/media-bus-format.h | 3 + - include/uapi/linux/v4l2-controls.h | 5 + - include/uapi/linux/videodev2.h | 40 + - kernel/cgroup/cgroup.c | 38 + + .../linux/media/raspberrypi/pisp_be_config.h | 968 +++ + .../linux/media/raspberrypi/pisp_common.h | 202 + + include/uapi/linux/v4l2-controls.h | 11 + + include/uapi/linux/videodev2.h | 42 + + kernel/cgroup/cgroup.c | 25 + kernel/resource.c | 6 + + lib/earlycpio.c | 1 + + mm/cma.c | 36 + + mm/mempolicy.c | 49 +- mm/page_alloc.c | 28 +- - net/bluetooth/hci_sync.c | 4 +- + mm/vmscan.c | 2 +- + net/bluetooth/hci_sync.c | 5 +- net/bluetooth/smp.c | 16 +- net/wireless/certs/debian.hex | 1426 ++++ scripts/Makefile.dtbinst | 5 +- scripts/Makefile.lib | 19 + - sound/soc/bcm/Kconfig | 269 + - sound/soc/bcm/Makefile | 71 +- + sound/soc/bcm/Kconfig | 284 + + sound/soc/bcm/Makefile | 73 +- sound/soc/bcm/allo-boss-dac.c | 471 ++ sound/soc/bcm/allo-boss2-dac.c | 1130 +++ sound/soc/bcm/allo-katana-codec.c | 386 + @@ -1097,21 +1169,23 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) sound/soc/bcm/audioinjector-octo-soundcard.c | 347 + sound/soc/bcm/audioinjector-pi-soundcard.c | 190 + sound/soc/bcm/audiosense-pi.c | 248 + - sound/soc/bcm/bcm2835-i2s.c | 18 +- + sound/soc/bcm/bcm2835-i2s.c | 26 +- sound/soc/bcm/chipdip-dac.c | 275 + sound/soc/bcm/dacberry400.c | 259 + sound/soc/bcm/digidac1-soundcard.c | 421 + sound/soc/bcm/dionaudio_loco-v2.c | 118 + sound/soc/bcm/dionaudio_loco.c | 121 + sound/soc/bcm/fe-pi-audio.c | 154 + - sound/soc/bcm/googlevoicehat-codec.c | 214 + + sound/soc/bcm/googlevoicehat-codec.c | 213 + + sound/soc/bcm/hifiberry_adc.c | 174 + + sound/soc/bcm/hifiberry_adc_controls.h | 128 + sound/soc/bcm/hifiberry_dacplus.c | 563 ++ sound/soc/bcm/hifiberry_dacplusadc.c | 399 + - sound/soc/bcm/hifiberry_dacplusadcpro.c | 606 ++ + sound/soc/bcm/hifiberry_dacplusadcpro.c | 498 ++ sound/soc/bcm/hifiberry_dacplusdsp.c | 90 + sound/soc/bcm/hifiberry_dacplushd.c | 238 + sound/soc/bcm/i-sabre-q2m.c | 160 + - sound/soc/bcm/iqaudio-codec.c | 278 + + sound/soc/bcm/iqaudio-codec.c | 284 + sound/soc/bcm/iqaudio-dac.c | 224 + sound/soc/bcm/justboom-both.c | 267 + sound/soc/bcm/justboom-dac.c | 147 + @@ -1119,13 +1193,15 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) sound/soc/bcm/pisound.c | 1255 +++ sound/soc/bcm/rpi-cirrus.c | 1027 +++ sound/soc/bcm/rpi-proto.c | 147 + - sound/soc/bcm/rpi-simple-soundcard.c | 523 ++ + sound/soc/bcm/rpi-simple-soundcard.c | 560 ++ sound/soc/bcm/rpi-wm8804-soundcard.c | 549 ++ sound/soc/codecs/Kconfig | 26 +- sound/soc/codecs/Makefile | 8 + sound/soc/codecs/adau1977-i2c.c | 10 + sound/soc/codecs/cs42xx8-i2c.c | 9 +- sound/soc/codecs/cs42xx8.c | 10 + + sound/soc/codecs/da7213.c | 21 + + sound/soc/codecs/da7213.h | 1 + sound/soc/codecs/i-sabre-codec.c | 389 + sound/soc/codecs/i-sabre-codec.h | 42 + sound/soc/codecs/ma120x0p.c | 1380 ++++ @@ -1134,13 +1210,15 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) sound/soc/codecs/pcm512x.c | 38 +- sound/soc/codecs/tas5713.c | 360 + sound/soc/codecs/tas5713.h | 210 + - sound/soc/dwc/dwc-i2s.c | 169 +- - sound/soc/dwc/local.h | 12 + + sound/soc/dwc/dwc-i2s.c | 190 +- + sound/soc/dwc/local.h | 13 + sound/soc/soc-core.c | 14 +- sound/usb/card.c | 8 +- sound/usb/quirks.c | 2 + - 1135 files changed, 230272 insertions(+), 4326 deletions(-) + 1211 files changed, 246785 insertions(+), 4641 deletions(-) create mode 100644 Documentation/admin-guide/media/bcm2835-isp.rst + create mode 100644 Documentation/admin-guide/media/raspberrypi-pisp-be.dot + create mode 100644 Documentation/admin-guide/media/raspberrypi-pisp-be.rst create mode 100644 Documentation/devicetree/bindings/display/panel/panel-dsi.yaml create mode 100644 Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml create mode 100644 Documentation/devicetree/bindings/media/bcm2835-unicam.txt @@ -1154,7 +1232,9 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov64a40.yaml create mode 100644 Documentation/devicetree/bindings/media/i2c/rohm,bu64754.yaml rename Documentation/devicetree/bindings/media/i2c/{imx258.yaml => sony,imx258.yaml} (90%) + create mode 100644 Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml create mode 100644 Documentation/devicetree/bindings/media/i2c/sony,imx708.yaml + create mode 100644 Documentation/devicetree/bindings/media/raspberrypi,pispbe.yaml create mode 100644 Documentation/devicetree/bindings/media/rpivid_hevc.yaml create mode 100644 Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt create mode 100644 Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt @@ -1162,11 +1242,14 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 Documentation/devicetree/bindings/power/reset/gpio-poweroff.txt create mode 100644 Documentation/devicetree/bindings/pwm/pwm-rp1.yaml create mode 100644 Documentation/devicetree/bindings/rtc/rtc-rpi.txt + create mode 100644 Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml create mode 100644 Documentation/devicetree/bindings/vendor-prefixes.txt create mode 100644 Documentation/devicetree/configfs-overlays.txt + create mode 100644 Documentation/userspace-api/media/v4l/metafmt-pisp-be.rst create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-meta-bcm2835-isp-stats.rst create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-meta-sensor-data.rst create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-nv12-col128.rst + create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-srggb8-pisp-comp.rst create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-y12p.rst create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-y14p.rst create mode 100644 README.md @@ -1196,20 +1279,12 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts create mode 100644 arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts create mode 100644 arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi - create mode 100644 arch/arm/boot/dts/broadcom/bcm2712-rpi-5-b.dts - create mode 100644 arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts - create mode 100644 arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts - create mode 100644 arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi - create mode 100644 arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi - create mode 100644 arch/arm/boot/dts/broadcom/bcm2712.dtsi - create mode 100644 arch/arm/boot/dts/broadcom/bcm2712d0-rpi-5-b.dts create mode 100644 arch/arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi create mode 100644 arch/arm/boot/dts/broadcom/bcm283x-rpi-csi0-2lane.dtsi create mode 100644 arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi create mode 100644 arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-4lane.dtsi create mode 100644 arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_28.dtsi create mode 100644 arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_44.dtsi - create mode 100644 arch/arm/boot/dts/broadcom/rp1.dtsi create mode 100644 arch/arm/boot/dts/overlays/Makefile create mode 100644 arch/arm/boot/dts/overlays/README create mode 100644 arch/arm/boot/dts/overlays/act-led-overlay.dts @@ -1294,8 +1369,11 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hat_map.dts + create mode 100644 arch/arm/boot/dts/overlays/hd44780-i2c-lcd-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/hifiberry-adc-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/hifiberry-adc8x-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp100-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp3-overlay.dts @@ -1338,6 +1416,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm/boot/dts/overlays/i2c6-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/i2s-dac-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/i2s-master-dac-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/ilitek251x-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/imx219-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/imx219.dtsi @@ -1353,6 +1432,9 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm/boot/dts/overlays/imx477-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi create mode 100644 arch/arm/boot/dts/overlays/imx477_378.dtsi + create mode 100644 arch/arm/boot/dts/overlays/imx500-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/imx500-pi5-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/imx500.dtsi create mode 100644 arch/arm/boot/dts/overlays/imx519-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/imx519.dtsi create mode 100644 arch/arm/boot/dts/overlays/imx708-overlay.dts @@ -1417,6 +1499,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm/boot/dts/overlays/pcf857x-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pcie-32bit-dma-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pcie-32bit-dma-pi5-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/pciex1-compat-pi5-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pibell-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pifacedigital-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pifi-40-overlay.dts @@ -1425,6 +1508,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm/boot/dts/overlays/pifi-mini-210-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/piglow-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pineboards-hat-ai-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/pineboards-hatdrive-poe-plus-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/piscreen-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/piscreen2r-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pisound-overlay.dts @@ -1436,6 +1520,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm/boot/dts/overlays/pps-gpio-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/proto-codec-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/pwm-gpio-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pwm-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/pwm1-overlay.dts @@ -1452,6 +1537,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/rpi-poe-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/rpi-poe-plus-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/rpi-rp2040-gpio-bridge.dtsi create mode 100644 arch/arm/boot/dts/overlays/rpi-sense-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/rpi-sense-v2-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/rpi-tv-overlay.dts @@ -1502,6 +1588,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/ssd1331-spi-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/sunfounder-pipower3-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/sunfounder-pironman5-overlay.dts create mode 100755 arch/arm/boot/dts/overlays/superaudioboard-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/sx150x-overlay.dts @@ -1540,6 +1627,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-ili9881-7inch-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-v2-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-800x480-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts @@ -1577,15 +1665,25 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4.dts create mode 100644 arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4s.dts create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi-500.dts + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm4io.dtsi create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5io.dtsi + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l-cm4io.dts + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l-cm5io.dts + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l.dtsi + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712.dtsi create mode 100644 arch/arm64/boot/dts/broadcom/bcm2712d0-rpi-5-b.dts - create mode 120000 arch/arm64/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi - create mode 120000 arch/arm64/boot/dts/broadcom/bcm283x-rpi-lan7515.dtsi + create mode 100644 arch/arm64/boot/dts/broadcom/rp1.dtsi create mode 120000 arch/arm64/boot/dts/overlays create mode 100644 arch/arm64/configs/bcm2711_defconfig create mode 100644 arch/arm64/configs/bcm2712_defconfig create mode 100644 arch/arm64/configs/bcmrpi3_defconfig + create mode 100644 drivers/base/numa_emulation.c + create mode 100644 drivers/base/numa_emulation.h create mode 100644 drivers/char/broadcom/Kconfig create mode 100644 drivers/char/broadcom/Makefile create mode 100644 drivers/char/broadcom/bcm2835_smi_dev.c @@ -1629,7 +1727,6 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 drivers/gpu/drm/vc4/vc_image_types.h create mode 100644 drivers/hwmon/rp1-adc.c create mode 100644 drivers/i2c/busses/i2c-bcm2708.c - create mode 100644 drivers/input/joystick/rpisense-js.c create mode 100644 drivers/iommu/bcm2712-iommu-cache.c create mode 100644 drivers/iommu/bcm2712-iommu.c create mode 100644 drivers/iommu/bcm2712-iommu.h @@ -1642,12 +1739,51 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 drivers/media/i2c/arducam_64mp.c create mode 100644 drivers/media/i2c/bu64754.c create mode 100644 drivers/media/i2c/imx477.c + create mode 100644 drivers/media/i2c/imx500.c create mode 100644 drivers/media/i2c/imx519.c create mode 100644 drivers/media/i2c/imx708.c create mode 100644 drivers/media/i2c/irs1125.c create mode 100644 drivers/media/i2c/irs1125.h create mode 100644 drivers/media/i2c/ov2311.c create mode 100644 drivers/media/i2c/ov64a40.c + create mode 100644 drivers/media/pci/hailo/Kconfig + create mode 100644 drivers/media/pci/hailo/Makefile + create mode 100644 drivers/media/pci/hailo/common/fw_operation.c + create mode 100644 drivers/media/pci/hailo/common/fw_operation.h + create mode 100644 drivers/media/pci/hailo/common/fw_validation.c + create mode 100644 drivers/media/pci/hailo/common/fw_validation.h + create mode 100644 drivers/media/pci/hailo/common/hailo_ioctl_common.h + create mode 100644 drivers/media/pci/hailo/common/hailo_pcie_version.h + create mode 100644 drivers/media/pci/hailo/common/hailo_resource.c + create mode 100644 drivers/media/pci/hailo/common/hailo_resource.h + create mode 100644 drivers/media/pci/hailo/common/pcie_common.c + create mode 100644 drivers/media/pci/hailo/common/pcie_common.h + create mode 100644 drivers/media/pci/hailo/common/utils.h + create mode 100644 drivers/media/pci/hailo/common/vdma_common.c + create mode 100644 drivers/media/pci/hailo/common/vdma_common.h + create mode 100755 drivers/media/pci/hailo/include/hailo_pcie_version.h + create mode 100644 drivers/media/pci/hailo/src/fops.c + create mode 100644 drivers/media/pci/hailo/src/fops.h + create mode 100755 drivers/media/pci/hailo/src/pci_soc_ioctl.c + create mode 100755 drivers/media/pci/hailo/src/pci_soc_ioctl.h + create mode 100644 drivers/media/pci/hailo/src/pcie.c + create mode 100644 drivers/media/pci/hailo/src/pcie.h + create mode 100644 drivers/media/pci/hailo/src/sysfs.c + create mode 100644 drivers/media/pci/hailo/src/sysfs.h + create mode 100644 drivers/media/pci/hailo/src/utils.c + create mode 100644 drivers/media/pci/hailo/src/utils.h + create mode 100644 drivers/media/pci/hailo/utils/compact.h + create mode 100644 drivers/media/pci/hailo/utils/fw_common.h + create mode 100755 drivers/media/pci/hailo/utils/integrated_nnc_utils.c + create mode 100755 drivers/media/pci/hailo/utils/integrated_nnc_utils.h + create mode 100644 drivers/media/pci/hailo/utils/logs.c + create mode 100644 drivers/media/pci/hailo/utils/logs.h + create mode 100644 drivers/media/pci/hailo/vdma/ioctl.c + create mode 100644 drivers/media/pci/hailo/vdma/ioctl.h + create mode 100644 drivers/media/pci/hailo/vdma/memory.c + create mode 100644 drivers/media/pci/hailo/vdma/memory.h + create mode 100644 drivers/media/pci/hailo/vdma/vdma.c + create mode 100644 drivers/media/pci/hailo/vdma/vdma.h create mode 100644 drivers/media/platform/bcm2835/Kconfig create mode 100644 drivers/media/platform/bcm2835/Makefile create mode 100644 drivers/media/platform/bcm2835/bcm2835-unicam.c @@ -1657,7 +1793,6 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 drivers/media/platform/raspberrypi/pisp_be/Kconfig create mode 100644 drivers/media/platform/raspberrypi/pisp_be/Makefile create mode 100644 drivers/media/platform/raspberrypi/pisp_be/pisp_be.c - create mode 100644 drivers/media/platform/raspberrypi/pisp_be/pisp_be_config.h create mode 100644 drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h create mode 100644 drivers/media/platform/raspberrypi/rp1_cfe/Kconfig create mode 100644 drivers/media/platform/raspberrypi/rp1_cfe/Makefile @@ -1675,7 +1810,6 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 drivers/media/platform/raspberrypi/rp1_cfe/pisp_statistics.h create mode 100644 drivers/media/platform/raspberrypi/rp1_cfe/pisp_types.h create mode 100644 drivers/mfd/rp1.c - create mode 100644 drivers/mfd/rpisense-core.c create mode 100644 drivers/misc/bcm2835_smi.c create mode 100644 drivers/mmc/host/bcm2835-mmc.c create mode 100644 drivers/mmc/host/bcm2835-sdhost.c @@ -1686,9 +1820,11 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 drivers/pinctrl/bcm/pinctrl-bcm2712.c create mode 100644 drivers/pinctrl/pinctrl-rp1.c create mode 100644 drivers/power/supply/rpi_poe_power.c + create mode 100644 drivers/pwm/pwm-gpio.c create mode 100644 drivers/pwm/pwm-rp1.c create mode 100644 drivers/regulator/rpi-panel-v2-regulator.c create mode 100644 drivers/rtc/rtc-rpi.c + create mode 100644 drivers/spi/spi-rp2040-gpio-bridge.c create mode 100644 drivers/staging/media/rpivid/Kconfig create mode 100644 drivers/staging/media/rpivid/Makefile create mode 100644 drivers/staging/media/rpivid/rpivid.c @@ -1788,7 +1924,6 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 include/dt-bindings/mfd/rp1.h create mode 100644 include/linux/broadcom/bcm2835_smi.h create mode 100644 include/linux/broadcom/vc_mem.h - create mode 100644 include/linux/mfd/rpisense/core.h create mode 100644 include/linux/mfd/rpisense/framebuffer.h create mode 100644 include/linux/mfd/rpisense/joystick.h create mode 100644 include/linux/platform_data/dma-bcm2708.h @@ -1796,6 +1931,8 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 include/media/raspberrypi/pisp_common.h create mode 100644 include/media/raspberrypi/pisp_types.h create mode 100644 include/uapi/linux/bcm2835-isp.h + create mode 100644 include/uapi/linux/media/raspberrypi/pisp_be_config.h + create mode 100644 include/uapi/linux/media/raspberrypi/pisp_common.h create mode 100644 net/wireless/certs/debian.hex create mode 100644 sound/soc/bcm/allo-boss-dac.c create mode 100644 sound/soc/bcm/allo-boss2-dac.c @@ -1813,6 +1950,8 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) create mode 100644 sound/soc/bcm/dionaudio_loco.c create mode 100644 sound/soc/bcm/fe-pi-audio.c create mode 100644 sound/soc/bcm/googlevoicehat-codec.c + create mode 100644 sound/soc/bcm/hifiberry_adc.c + create mode 100644 sound/soc/bcm/hifiberry_adc_controls.h create mode 100644 sound/soc/bcm/hifiberry_dacplus.c create mode 100644 sound/soc/bcm/hifiberry_dacplusadc.c create mode 100644 sound/soc/bcm/hifiberry_dacplusadcpro.c @@ -1838,7 +1977,7 @@ Subject: [PATCH] apply RPi patch of 6.6.30 (openEuler 6.6.0-26.0.0) diff --git a/Documentation/admin-guide/media/bcm2835-isp.rst b/Documentation/admin-guide/media/bcm2835-isp.rst new file mode 100644 -index 000000000000..e1c19f78435e +index 0000000000000..e1c19f78435e6 --- /dev/null +++ b/Documentation/admin-guide/media/bcm2835-isp.rst @@ -0,0 +1,127 @@ @@ -1969,8 +2108,161 @@ index 000000000000..e1c19f78435e + bcm2835_isp_black_level bcm2835_isp_geq bcm2835_isp_gamma + bcm2835_isp_denoise bcm2835_isp_sharpen + bcm2835_isp_dpc_mode bcm2835_isp_dpc +diff --git a/Documentation/admin-guide/media/raspberrypi-pisp-be.dot b/Documentation/admin-guide/media/raspberrypi-pisp-be.dot +new file mode 100644 +index 0000000000000..55671dc1d4438 +--- /dev/null ++++ b/Documentation/admin-guide/media/raspberrypi-pisp-be.dot +@@ -0,0 +1,20 @@ ++digraph board { ++ rankdir=TB ++ n00000001 [label="{{ 0 | 1 | 2 | 7} | pispbe\n | { 3 | 4 | 5 | 6}}", shape=Mrecord, style=filled, fillcolor=green] ++ n00000001:port3 -> n0000001c [style=bold] ++ n00000001:port4 -> n00000022 [style=bold] ++ n00000001:port5 -> n00000028 [style=bold] ++ n00000001:port6 -> n0000002e [style=bold] ++ n0000000a [label="pispbe-input\n/dev/video0", shape=box, style=filled, fillcolor=yellow] ++ n0000000a -> n00000001:port0 [style=bold] ++ n00000010 [label="pispbe-tdn_input\n/dev/video1", shape=box, style=filled, fillcolor=yellow] ++ n00000010 -> n00000001:port1 [style=bold] ++ n00000016 [label="pispbe-stitch_input\n/dev/video2", shape=box, style=filled, fillcolor=yellow] ++ n00000016 -> n00000001:port2 [style=bold] ++ n0000001c [label="pispbe-output0\n/dev/video3", shape=box, style=filled, fillcolor=yellow] ++ n00000022 [label="pispbe-output1\n/dev/video4", shape=box, style=filled, fillcolor=yellow] ++ n00000028 [label="pispbe-tdn_output\n/dev/video5", shape=box, style=filled, fillcolor=yellow] ++ n0000002e [label="pispbe-stitch_output\n/dev/video6", shape=box, style=filled, fillcolor=yellow] ++ n00000034 [label="pispbe-config\n/dev/video7", shape=box, style=filled, fillcolor=yellow] ++ n00000034 -> n00000001:port7 [style=bold] ++} +diff --git a/Documentation/admin-guide/media/raspberrypi-pisp-be.rst b/Documentation/admin-guide/media/raspberrypi-pisp-be.rst +new file mode 100644 +index 0000000000000..0fcf46f262765 +--- /dev/null ++++ b/Documentation/admin-guide/media/raspberrypi-pisp-be.rst +@@ -0,0 +1,109 @@ ++.. SPDX-License-Identifier: GPL-2.0 ++ ++========================================================= ++Raspberry Pi PiSP Back End Memory-to-Memory ISP (pisp-be) ++========================================================= ++ ++The PiSP Back End ++================= ++ ++The PiSP Back End is a memory-to-memory Image Signal Processor (ISP) which reads ++image data from DRAM memory and performs image processing as specified by the ++application through the parameters in a configuration buffer, before writing ++pixel data back to memory through two distinct output channels. ++ ++The ISP registers and programming model are documented in the `Raspberry Pi ++Image Signal Processor (PiSP) Specification document`_ ++ ++The PiSP Back End ISP processes images in tiles. The handling of image ++tessellation and the computation of low-level configuration parameters is ++realized by a free software library called `libpisp ++`_. ++ ++The full image processing pipeline, which involves capturing RAW Bayer data from ++an image sensor through a MIPI CSI-2 compatible capture interface, storing them ++in DRAM memory and processing them in the PiSP Back End to obtain images usable ++by an application is implemented in `libcamera `_ as ++part of the Raspberry Pi platform support. ++ ++The pisp-be driver ++================== ++ ++The Raspberry Pi PiSP Back End (pisp-be) driver is located under ++drivers/media/platform/raspberrypi/pisp-be. It uses the `V4L2 API` to register ++a number of video capture and output devices, the `V4L2 subdev API` to register ++a subdevice for the ISP that connects the video devices in a single media graph ++realized using the `Media Controller (MC) API`. ++ ++The media topology registered by the `pisp-be` driver is represented below: ++ ++.. _pips-be-topology: ++ ++.. kernel-figure:: raspberrypi-pisp-be.dot ++ :alt: Diagram of the default media pipeline topology ++ :align: center ++ ++ ++The media graph registers the following video device nodes: ++ ++- pispbe-input: output device for images to be submitted to the ISP for ++ processing. ++- pispbe-tdn_input: output device for temporal denoise. ++- pispbe-stitch_input: output device for image stitching (HDR). ++- pispbe-output0: first capture device for processed images. ++- pispbe-output1: second capture device for processed images. ++- pispbe-tdn_output: capture device for temporal denoise. ++- pispbe-stitch_output: capture device for image stitching (HDR). ++- pispbe-config: output device for ISP configuration parameters. ++ ++pispbe-input ++------------ ++ ++Images to be processed by the ISP are queued to the `pispbe-input` output device ++node. For a list of image formats supported as input to the ISP refer to the ++`Raspberry Pi Image Signal Processor (PiSP) Specification document`_. ++ ++pispbe-tdn_input, pispbe-tdn_output ++----------------------------------- ++ ++The `pispbe-tdn_input` output video device receives images to be processed by ++the temporal denoise block which are captured from the `pispbe-tdn_output` ++capture video device. Userspace is responsible for maintaining queues on both ++devices, and ensuring that buffers completed on the output are queued to the ++input. ++ ++pispbe-stitch_input, pispbe-stitch_output ++----------------------------------------- ++ ++To realize HDR (high dynamic range) image processing the image stitching and ++tonemapping blocks are used. The `pispbe-stitch_output` writes images to memory ++and the `pispbe-stitch_input` receives the previously written frame to process ++it along with the current input image. Userspace is responsible for maintaining ++queues on both devices, and ensuring that buffers completed on the output are ++queued to the input. ++ ++pispbe-output0, pispbe-output1 ++------------------------------ ++ ++The two capture devices write to memory the pixel data as processed by the ISP. ++ ++pispbe-config ++------------- ++ ++The `pispbe-config` output video devices receives a buffer of configuration ++parameters that define the desired image processing to be performed by the ISP. ++ ++The format of the ISP configuration parameter is defined by ++:c:type:`pisp_be_tiles_config` C structure and the meaning of each parameter is ++described in the `Raspberry Pi Image Signal Processor (PiSP) Specification ++document`_. ++ ++ISP configuration ++================= ++ ++The ISP configuration is described solely by the content of the parameters ++buffer. The only parameter that userspace needs to configure using the V4L2 API ++is the image format on the output and capture video devices for validation of ++the content of the parameters buffer. ++ ++.. _Raspberry Pi Image Signal Processor (PiSP) Specification document: https://datasheets.raspberrypi.com/camera/raspberry-pi-image-signal-processor-specification.pdf +diff --git a/Documentation/admin-guide/media/v4l-drivers.rst b/Documentation/admin-guide/media/v4l-drivers.rst +index 1c41f87c39171..53e075cbdf706 100644 +--- a/Documentation/admin-guide/media/v4l-drivers.rst ++++ b/Documentation/admin-guide/media/v4l-drivers.rst +@@ -21,6 +21,7 @@ Video4Linux (V4L) driver-specific documentation + omap4_camera + philips + qcom_camss ++ raspberrypi-pisp-be + rcar-fdp1 + rkisp1 + saa7134 diff --git a/Documentation/devicetree/bindings/display/brcm,bcm2711-hdmi.yaml b/Documentation/devicetree/bindings/display/brcm,bcm2711-hdmi.yaml -index 5b35adf34c7b..6d11f5955b51 100644 +index 5b35adf34c7bd..6d11f5955b51a 100644 --- a/Documentation/devicetree/bindings/display/brcm,bcm2711-hdmi.yaml +++ b/Documentation/devicetree/bindings/display/brcm,bcm2711-hdmi.yaml @@ -14,6 +14,8 @@ properties: @@ -1983,7 +2275,7 @@ index 5b35adf34c7b..6d11f5955b51 100644 reg: items: diff --git a/Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml b/Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml -index c8b2459d64f6..af638b224619 100644 +index c8b2459d64f66..af638b2246192 100644 --- a/Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml +++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml @@ -21,6 +21,7 @@ properties: @@ -1995,7 +2287,7 @@ index c8b2459d64f6..af638b224619 100644 reg: maxItems: 1 diff --git a/Documentation/devicetree/bindings/display/brcm,bcm2835-hvs.yaml b/Documentation/devicetree/bindings/display/brcm,bcm2835-hvs.yaml -index 2e8566f47e63..f91c9dce2a44 100644 +index 2e8566f47e63c..f91c9dce2a44d 100644 --- a/Documentation/devicetree/bindings/display/brcm,bcm2835-hvs.yaml +++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-hvs.yaml @@ -13,6 +13,7 @@ properties: @@ -2018,7 +2310,7 @@ index 2e8566f47e63..f91c9dce2a44 100644 then: required: diff --git a/Documentation/devicetree/bindings/display/brcm,bcm2835-pixelvalve0.yaml b/Documentation/devicetree/bindings/display/brcm,bcm2835-pixelvalve0.yaml -index 4e1ba03f6477..6b5b1d3fbc0b 100644 +index 4e1ba03f6477f..6b5b1d3fbc0be 100644 --- a/Documentation/devicetree/bindings/display/brcm,bcm2835-pixelvalve0.yaml +++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-pixelvalve0.yaml @@ -20,6 +20,9 @@ properties: @@ -2032,7 +2324,7 @@ index 4e1ba03f6477..6b5b1d3fbc0b 100644 reg: maxItems: 1 diff --git a/Documentation/devicetree/bindings/display/brcm,bcm2835-txp.yaml b/Documentation/devicetree/bindings/display/brcm,bcm2835-txp.yaml -index bb186197e471..16f45afd2bad 100644 +index bb186197e471e..16f45afd2badc 100644 --- a/Documentation/devicetree/bindings/display/brcm,bcm2835-txp.yaml +++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-txp.yaml @@ -11,7 +11,10 @@ maintainers: @@ -2048,7 +2340,7 @@ index bb186197e471..16f45afd2bad 100644 reg: maxItems: 1 diff --git a/Documentation/devicetree/bindings/display/brcm,bcm2835-vc4.yaml b/Documentation/devicetree/bindings/display/brcm,bcm2835-vc4.yaml -index 49a5e041aa49..2aa9d5d2afff 100644 +index 49a5e041aa493..2aa9d5d2afff0 100644 --- a/Documentation/devicetree/bindings/display/brcm,bcm2835-vc4.yaml +++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-vc4.yaml @@ -18,6 +18,7 @@ properties: @@ -2060,7 +2352,7 @@ index 49a5e041aa49..2aa9d5d2afff 100644 - brcm,cygnus-vc4 diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml b/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml -index e7ab6224b52e..9bed316f6582 100644 +index e7ab6224b52e0..9bed316f65829 100644 --- a/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml +++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml @@ -20,6 +20,8 @@ properties: @@ -2074,7 +2366,7 @@ index e7ab6224b52e..9bed316f6582 100644 backlight: true diff --git a/Documentation/devicetree/bindings/display/panel/panel-dsi.yaml b/Documentation/devicetree/bindings/display/panel/panel-dsi.yaml new file mode 100644 -index 000000000000..0576541d9567 +index 0000000000000..0576541d95679 --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/panel-dsi.yaml @@ -0,0 +1,118 @@ @@ -2197,7 +2489,7 @@ index 000000000000..0576541d9567 + +... diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml -index 25b4589d4a58..209e8475b0a5 100644 +index 25b4589d4a581..209e8475b0a56 100644 --- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml +++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml @@ -158,6 +158,8 @@ properties: @@ -2219,7 +2511,7 @@ index 25b4589d4a58..209e8475b0a5 100644 - innolux,at070tn92 # Innolux G070ACE-L01 7" WVGA (800x480) TFT LCD panel diff --git a/Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml b/Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml -index dae55b8a267b..97c9afe7b4f8 100644 +index dae55b8a267b0..97c9afe7b4f8f 100644 --- a/Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml +++ b/Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml @@ -16,6 +16,7 @@ properties: @@ -2232,7 +2524,7 @@ index dae55b8a267b..97c9afe7b4f8 100644 - brcm,7278-v3d diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml new file mode 100644 -index 000000000000..efdc3cecb03d +index 0000000000000..efdc3cecb03db --- /dev/null +++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml @@ -0,0 +1,54 @@ @@ -2292,7 +2584,7 @@ index 000000000000..efdc3cecb03d + }; diff --git a/Documentation/devicetree/bindings/media/bcm2835-unicam.txt b/Documentation/devicetree/bindings/media/bcm2835-unicam.txt new file mode 100644 -index 000000000000..164d0377dcd2 +index 0000000000000..164d0377dcd24 --- /dev/null +++ b/Documentation/devicetree/bindings/media/bcm2835-unicam.txt @@ -0,0 +1,85 @@ @@ -2383,7 +2675,7 @@ index 000000000000..164d0377dcd2 + }; diff --git a/Documentation/devicetree/bindings/media/i2c/ad5398.txt b/Documentation/devicetree/bindings/media/i2c/ad5398.txt new file mode 100644 -index 000000000000..446ac9717598 +index 0000000000000..446ac9717598f --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/ad5398.txt @@ -0,0 +1,20 @@ @@ -2409,7 +2701,7 @@ index 000000000000..446ac9717598 + diff --git a/Documentation/devicetree/bindings/media/i2c/arducam,64mp.yaml b/Documentation/devicetree/bindings/media/i2c/arducam,64mp.yaml new file mode 100644 -index 000000000000..b71a19782f97 +index 0000000000000..b71a19782f97f --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/arducam,64mp.yaml @@ -0,0 +1,115 @@ @@ -2530,7 +2822,7 @@ index 000000000000..b71a19782f97 +... diff --git a/Documentation/devicetree/bindings/media/i2c/arducam-pivariety.yaml b/Documentation/devicetree/bindings/media/i2c/arducam-pivariety.yaml new file mode 100644 -index 000000000000..92bf4ff32eb4 +index 0000000000000..92bf4ff32eb4c --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/arducam-pivariety.yaml @@ -0,0 +1,112 @@ @@ -2647,7 +2939,7 @@ index 000000000000..92bf4ff32eb4 + +... diff --git a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml -index aae246ca3fcf..6de07543e973 100644 +index aae246ca3fcf5..6de07543e9731 100644 --- a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml +++ b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml @@ -5,22 +5,32 @@ @@ -2688,7 +2980,7 @@ index aae246ca3fcf..6de07543e973 100644 - reg diff --git a/Documentation/devicetree/bindings/media/i2c/imx378.yaml b/Documentation/devicetree/bindings/media/i2c/imx378.yaml new file mode 100644 -index 000000000000..f832b4bfab93 +index 0000000000000..f832b4bfab936 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/imx378.yaml @@ -0,0 +1,113 @@ @@ -2807,7 +3099,7 @@ index 000000000000..f832b4bfab93 +... diff --git a/Documentation/devicetree/bindings/media/i2c/imx477.yaml b/Documentation/devicetree/bindings/media/i2c/imx477.yaml new file mode 100644 -index 000000000000..0994e13e67f6 +index 0000000000000..0994e13e67f68 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/imx477.yaml @@ -0,0 +1,113 @@ @@ -2926,7 +3218,7 @@ index 000000000000..0994e13e67f6 +... diff --git a/Documentation/devicetree/bindings/media/i2c/imx519.yaml b/Documentation/devicetree/bindings/media/i2c/imx519.yaml new file mode 100644 -index 000000000000..717230a21764 +index 0000000000000..717230a21764c --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/imx519.yaml @@ -0,0 +1,113 @@ @@ -3045,7 +3337,7 @@ index 000000000000..717230a21764 +... diff --git a/Documentation/devicetree/bindings/media/i2c/irs1125.txt b/Documentation/devicetree/bindings/media/i2c/irs1125.txt new file mode 100644 -index 000000000000..25a48028c957 +index 0000000000000..25a48028c9577 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/irs1125.txt @@ -0,0 +1,48 @@ @@ -3099,7 +3391,7 @@ index 000000000000..25a48028c957 + }; diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov64a40.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov64a40.yaml new file mode 100644 -index 000000000000..15fbe86bba10 +index 0000000000000..15fbe86bba10d --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov64a40.yaml @@ -0,0 +1,98 @@ @@ -3203,7 +3495,7 @@ index 000000000000..15fbe86bba10 +... diff --git a/Documentation/devicetree/bindings/media/i2c/rohm,bu64754.yaml b/Documentation/devicetree/bindings/media/i2c/rohm,bu64754.yaml new file mode 100644 -index 000000000000..22da4a46bb0c +index 0000000000000..22da4a46bb0c0 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/rohm,bu64754.yaml @@ -0,0 +1,48 @@ @@ -3259,7 +3551,7 @@ diff --git a/Documentation/devicetree/bindings/media/i2c/imx258.yaml b/Documenta similarity index 90% rename from Documentation/devicetree/bindings/media/i2c/imx258.yaml rename to Documentation/devicetree/bindings/media/i2c/sony,imx258.yaml -index 80d24220baa0..3415b26b5991 100644 +index 80d24220baa07..3415b26b5991b 100644 --- a/Documentation/devicetree/bindings/media/i2c/imx258.yaml +++ b/Documentation/devicetree/bindings/media/i2c/sony,imx258.yaml @@ -1,7 +1,7 @@ @@ -3288,9 +3580,147 @@ index 80d24220baa0..3415b26b5991 100644 assigned-clocks: true assigned-clock-parents: true +diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml +new file mode 100644 +index 0000000000000..b8538ae6c80f2 +--- /dev/null ++++ b/Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml +@@ -0,0 +1,132 @@ ++# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) ++%YAML 1.2 ++--- ++$id: http://devicetree.org/schemas/media/i2c/sony,imx500.yaml# ++$schema: http://devicetree.org/meta-schemas/core.yaml# ++ ++title: Sony CMOS Digital Image Sensor and CNN ++ ++maintainers: ++ - Raspberry Pi ++ ++description: |- ++ The Sony IMX500 is a stacked 1/2.3-inch CMOS digital image sensor and inbuilt ++ AI processor with an active array CNN (Convolutional Neural Network) inference ++ engine. The native sensor size is 4056H x 3040V, and the module also contains ++ an in-built ISP for the CNN. The module is programmable through an I2C ++ interface with firmware and neural network uploads being made over SPI. The ++ default I2C address is 0x1A, with an address of 0x10 being selectable via ++ SLASEL. The module also has a second I2C interface available with a fixed ++ address of 0x36. Image data is sent through MIPI CSI-2, which is configured ++ as either 2 or 4 data lanes. ++ ++properties: ++ compatible: ++ const: sony,imx500 ++ ++ reg: ++ description: I2C device address ++ maxItems: 1 ++ ++ clocks: ++ maxItems: 1 ++ ++ clock-names: ++ description: |- ++ Input clock (12 to 27 MHz) ++ items: ++ - const: inck ++ ++ interrupts: ++ maxItems: 1 ++ ++ vana-supply: ++ description: Supply voltage (analog) - 2.7 V ++ ++ vdig-supply: ++ description: Supply voltage (digital) - 0.84 V ++ ++ vif-supply: ++ description: Supply voltage (interface) - 1.8 V ++ ++ reset-gpios: ++ description: |- ++ Sensor reset (XCLR) GPIO ++ ++ Chip clear in lieu of built-in power on reset. To be set 'High' after ++ power supplies are brought up and INCK supplied. ++ ++ port: ++ $ref: /schemas/graph.yaml#/$defs/port-base ++ additionalProperties: false ++ description: | ++ Video output port ++ ++ properties: ++ endpoint: ++ $ref: /schemas/media/video-interfaces.yaml# ++ type: object ++ unevaluatedProperties: false ++ properties: ++ data-lanes: ++ items: ++ - const: 2 ++ - const: 4 ++ clock-noncontinuous: true ++ link-frequencies: true ++ required: ++ - link-frequencies ++ - data-lanes ++ ++ spi: ++ $ref: /schemas/types.yaml#/definitions/phandle ++ description: |- ++ SPI peripheral ++ ++ Optional SPI peripheral for uploading firmware and network weights to AI ++ processor. ++ ++required: ++ - compatible ++ - reg ++ - clocks ++ - clock-names ++ - vana-supply ++ - vdig-supply ++ - vif-supply ++ - port ++ ++examples: ++ - | ++ #include ++ ++ i2c { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ imx500: sensor@1a { ++ compatible = "sony,imx500"; ++ reg = <0x1a>; ++ ++ clocks = <&imx500_clk>; ++ clock-names = "inck"; ++ ++ vana-supply = <&imx500_vana>; /* 2.7 +/- 0.1 V */ ++ vdig-supply = <&imx500_vdig>; /* 0.84 +/- 0.04 V */ ++ vif-supply = <&imx500_vif>; /* 1.8 +/- 0.1 V */ ++ ++ reset-gpios = <&gpio_sensor 0 GPIO_ACTIVE_LOW>; ++ ++ port { ++ imx500_0: endpoint { ++ remote-endpoint = <&csi1_ep>; ++ data-lanes = <1 2>; ++ clock-noncontinuous; ++ link-frequencies = /bits/ 64 <499500000>; ++ }; ++ }; ++ }; ++ }; ++ ++... ++ diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx708.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx708.yaml new file mode 100644 -index 000000000000..286aad2e8c69 +index 0000000000000..286aad2e8c697 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/sony,imx708.yaml @@ -0,0 +1,128 @@ @@ -3422,9 +3852,78 @@ index 000000000000..286aad2e8c69 + }; + }; +... +diff --git a/Documentation/devicetree/bindings/media/raspberrypi,pispbe.yaml b/Documentation/devicetree/bindings/media/raspberrypi,pispbe.yaml +new file mode 100644 +index 0000000000000..1fc62a1d8edaf +--- /dev/null ++++ b/Documentation/devicetree/bindings/media/raspberrypi,pispbe.yaml +@@ -0,0 +1,63 @@ ++# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) ++%YAML 1.2 ++--- ++$id: http://devicetree.org/schemas/media/raspberrypi,pispbe.yaml# ++$schema: http://devicetree.org/meta-schemas/core.yaml# ++ ++title: Raspberry Pi PiSP Image Signal Processor (ISP) Back End ++ ++maintainers: ++ - Raspberry Pi Kernel Maintenance ++ - Jacopo Mondi ++ ++description: | ++ The Raspberry Pi PiSP Image Signal Processor (ISP) Back End is an image ++ processor that fetches images in Bayer or Grayscale format from DRAM memory ++ in tiles and produces images consumable by applications. ++ ++ The full ISP documentation is available at ++ https://datasheets.raspberrypi.com/camera/raspberry-pi-image-signal-processor-specification.pdf ++ ++properties: ++ compatible: ++ items: ++ - enum: ++ - brcm,bcm2712-pispbe ++ - const: raspberrypi,pispbe ++ ++ reg: ++ maxItems: 1 ++ ++ interrupts: ++ maxItems: 1 ++ ++ clocks: ++ maxItems: 1 ++ ++ iommus: ++ maxItems: 1 ++ ++required: ++ - compatible ++ - reg ++ - interrupts ++ - clocks ++ ++additionalProperties: false ++ ++examples: ++ - | ++ #include ++ ++ soc { ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ++ isp@880000 { ++ compatible = "brcm,bcm2712-pispbe", "raspberrypi,pispbe"; ++ reg = <0x10 0x00880000 0x0 0x4000>; ++ interrupts = ; ++ clocks = <&firmware_clocks 7>; ++ iommus = <&iommu2>; ++ }; ++ }; diff --git a/Documentation/devicetree/bindings/media/rpivid_hevc.yaml b/Documentation/devicetree/bindings/media/rpivid_hevc.yaml new file mode 100644 -index 000000000000..ce6b81a10303 +index 0000000000000..ce6b81a103030 --- /dev/null +++ b/Documentation/devicetree/bindings/media/rpivid_hevc.yaml @@ -0,0 +1,72 @@ @@ -3502,7 +4001,7 @@ index 000000000000..ce6b81a10303 +... diff --git a/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt b/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt new file mode 100644 -index 000000000000..68cc8ebc3392 +index 0000000000000..68cc8ebc3392d --- /dev/null +++ b/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt @@ -0,0 +1,17 @@ @@ -3525,7 +4024,7 @@ index 000000000000..68cc8ebc3392 + diff --git a/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt b/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt new file mode 100644 -index 000000000000..b76dc694f1ac +index 0000000000000..b76dc694f1ac0 --- /dev/null +++ b/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt @@ -0,0 +1,48 @@ @@ -3578,7 +4077,7 @@ index 000000000000..b76dc694f1ac +}; + diff --git a/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml b/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml -index a43eb837f8da..fb0eb5bb53a5 100644 +index a43eb837f8dae..fb0eb5bb53a52 100644 --- a/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml +++ b/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml @@ -16,6 +16,7 @@ allOf: @@ -3608,7 +4107,7 @@ index a43eb837f8da..fb0eb5bb53a5 100644 resets: maxItems: 5 diff --git a/Documentation/devicetree/bindings/net/cdns,macb.yaml b/Documentation/devicetree/bindings/net/cdns,macb.yaml -index bf8894a0257e..a9edfe6c1254 100644 +index bf8894a0257e9..a9edfe6c12540 100644 --- a/Documentation/devicetree/bindings/net/cdns,macb.yaml +++ b/Documentation/devicetree/bindings/net/cdns,macb.yaml @@ -131,6 +131,22 @@ properties: @@ -3635,7 +4134,7 @@ index bf8894a0257e..a9edfe6c1254 100644 "^ethernet-phy@[0-9a-f]$": type: object diff --git a/Documentation/devicetree/bindings/net/microchip,lan78xx.txt b/Documentation/devicetree/bindings/net/microchip,lan78xx.txt -index 11a679530ae6..104768b85bbc 100644 +index 11a679530ae65..104768b85bbc5 100644 --- a/Documentation/devicetree/bindings/net/microchip,lan78xx.txt +++ b/Documentation/devicetree/bindings/net/microchip,lan78xx.txt @@ -14,6 +14,9 @@ Optional properties of the embedded PHY: @@ -3649,7 +4148,7 @@ index 11a679530ae6..104768b85bbc 100644 Example: diff --git a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml -index 7e15aae7d69e..ad313d76eb7c 100644 +index 7e15aae7d69e9..ad313d76eb7c4 100644 --- a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml +++ b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml @@ -77,6 +77,14 @@ properties: @@ -3669,7 +4168,7 @@ index 7e15aae7d69e..ad313d76eb7c 100644 - reg diff --git a/Documentation/devicetree/bindings/pci/brcmstb-pcie.txt b/Documentation/devicetree/bindings/pci/brcmstb-pcie.txt new file mode 100644 -index 000000000000..a1a9ad5e70ca +index 0000000000000..a1a9ad5e70cab --- /dev/null +++ b/Documentation/devicetree/bindings/pci/brcmstb-pcie.txt @@ -0,0 +1,59 @@ @@ -3734,7 +4233,7 @@ index 000000000000..a1a9ad5e70ca + }; diff --git a/Documentation/devicetree/bindings/power/reset/gpio-poweroff.txt b/Documentation/devicetree/bindings/power/reset/gpio-poweroff.txt new file mode 100644 -index 000000000000..76dd7b06e26a +index 0000000000000..76dd7b06e26a1 --- /dev/null +++ b/Documentation/devicetree/bindings/power/reset/gpio-poweroff.txt @@ -0,0 +1,42 @@ @@ -3782,7 +4281,7 @@ index 000000000000..76dd7b06e26a +}; diff --git a/Documentation/devicetree/bindings/pwm/pwm-rp1.yaml b/Documentation/devicetree/bindings/pwm/pwm-rp1.yaml new file mode 100644 -index 000000000000..db9d7085f1c3 +index 0000000000000..db9d7085f1c3b --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/pwm-rp1.yaml @@ -0,0 +1,38 @@ @@ -3826,7 +4325,7 @@ index 000000000000..db9d7085f1c3 + }; diff --git a/Documentation/devicetree/bindings/rtc/rtc-rpi.txt b/Documentation/devicetree/bindings/rtc/rtc-rpi.txt new file mode 100644 -index 000000000000..ed0d0d0a8464 +index 0000000000000..ed0d0d0a84649 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/rtc-rpi.txt @@ -0,0 +1,22 @@ @@ -3853,7 +4352,7 @@ index 000000000000..ed0d0d0a8464 + trickle-charge-microvolt = <3000000>; + }; diff --git a/Documentation/devicetree/bindings/serial/pl011.yaml b/Documentation/devicetree/bindings/serial/pl011.yaml -index 9571041030b7..f34e2f66d1a3 100644 +index 9571041030b78..f34e2f66d1a37 100644 --- a/Documentation/devicetree/bindings/serial/pl011.yaml +++ b/Documentation/devicetree/bindings/serial/pl011.yaml @@ -101,6 +101,12 @@ properties: @@ -3870,7 +4369,7 @@ index 9571041030b7..f34e2f66d1a3 100644 - compatible - reg diff --git a/Documentation/devicetree/bindings/sound/pcm512x.txt b/Documentation/devicetree/bindings/sound/pcm512x.txt -index 3aae3b41bd8e..77006a4aec4a 100644 +index 3aae3b41bd8e8..77006a4aec4ad 100644 --- a/Documentation/devicetree/bindings/sound/pcm512x.txt +++ b/Documentation/devicetree/bindings/sound/pcm512x.txt @@ -1,12 +1,12 @@ @@ -3898,8 +4397,106 @@ index 3aae3b41bd8e..77006a4aec4a 100644 Examples: +diff --git a/Documentation/devicetree/bindings/sound/snps,designware-i2s.yaml b/Documentation/devicetree/bindings/sound/snps,designware-i2s.yaml +index a48d040b0a4fb..6e50851ff70f4 100644 +--- a/Documentation/devicetree/bindings/sound/snps,designware-i2s.yaml ++++ b/Documentation/devicetree/bindings/sound/snps,designware-i2s.yaml +@@ -69,6 +69,10 @@ properties: + - description: RX DMA Channel + minItems: 1 + ++ dma-maxburst: ++ description: FIFO DMA burst threshold limit ++ maxItems: 1 ++ + dma-names: + items: + - const: tx +diff --git a/Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml b/Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml +new file mode 100644 +index 0000000000000..d6af6db169d51 +--- /dev/null ++++ b/Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml +@@ -0,0 +1,77 @@ ++# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) ++%YAML 1.2 ++--- ++$id: http://devicetree.org/schemas/spi/raspberrypi,rp2040-gpio-bridge.yaml# ++$schema: http://devicetree.org/meta-schemas/core.yaml# ++ ++title: Raspberry Pi RP2040 GPIO Bridge ++ ++maintainers: ++ - Raspberry Pi ++ ++description: |- ++ The Raspberry Pi PR2040 GPIO bridge can be used as a GPIO expander and ++ Tx-only SPI master. ++ ++properties: ++ reg: ++ description: I2C slave address ++ const: 0x40 ++ ++ compatible: ++ const: raspberrypi,rp2040-gpio-bridge ++ ++ power-supply: ++ description: Phandle to the regulator that powers the RP2040. ++ ++ '#address-cells': ++ const: 1 ++ ++ '#size-cells': ++ const: 0 ++ ++ '#gpio-cells': ++ const: 2 ++ ++ gpio-controller: true ++ ++ fast_xfer_requires_i2c_lock: ++ description: Set if I2C bus should be locked during fast transfer. ++ ++ fast_xfer_recv_gpio_base: ++ description: RP2040 GPIO base for fast transfer pair. ++ ++ fast_xfer-gpios: ++ description: RP1 GPIOs to use for fast transfer clock and data. ++ ++required: ++ - reg ++ - compatible ++ - power-supply ++ - '#gpio-cells' ++ - gpio-controller ++ ++additionalProperties: false ++ ++examples: ++ - | ++ i2c { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ spi@40 { ++ reg = <0x40>; ++ compatible = "raspberrypi,rp2040-gpio-bridge"; ++ status = "disabled"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ power-supply = <&cam_dummy_reg>; ++ ++ #gpio-cells = <2>; ++ gpio-controller; ++ }; ++ }; ++ ++... ++ diff --git a/Documentation/devicetree/bindings/spi/spi-gpio.yaml b/Documentation/devicetree/bindings/spi/spi-gpio.yaml -index 9ce1df93d4c3..d911c203fa45 100644 +index 9ce1df93d4c30..d911c203fa459 100644 --- a/Documentation/devicetree/bindings/spi/spi-gpio.yaml +++ b/Documentation/devicetree/bindings/spi/spi-gpio.yaml @@ -43,6 +43,10 @@ properties: @@ -3914,7 +4511,7 @@ index 9ce1df93d4c3..d911c203fa45 100644 gpio-sck: false gpio-miso: false diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml -index a696f23730d3..d516979b0681 100644 +index a696f23730d3e..d516979b0681f 100644 --- a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml +++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml @@ -233,12 +233,17 @@ properties: @@ -3939,7 +4536,7 @@ index a696f23730d3..d516979b0681 100644 snps,dis_metastability_quirk: diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt new file mode 100644 -index 000000000000..f8d32547195b +index 0000000000000..f8d32547195b3 --- /dev/null +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt @@ -0,0 +1,463 @@ @@ -4407,7 +5004,7 @@ index 000000000000..f8d32547195b +zte ZTE Corp. +zyxel ZyXEL Communications Corp. diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml -index 133cfb2bb05c..d5805b33bd0e 100644 +index 133cfb2bb05ce..d5805b33bd0eb 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -133,6 +133,8 @@ patternProperties: @@ -4439,7 +5036,7 @@ index 133cfb2bb05c..d5805b33bd0e 100644 "^GEFanuc,.*": diff --git a/Documentation/devicetree/configfs-overlays.txt b/Documentation/devicetree/configfs-overlays.txt new file mode 100644 -index 000000000000..5fa43e064307 +index 0000000000000..5fa43e0643072 --- /dev/null +++ b/Documentation/devicetree/configfs-overlays.txt @@ -0,0 +1,31 @@ @@ -4474,17 +5071,29 @@ index 000000000000..5fa43e064307 +better suited to different use patterns. The firmware interface is what's +intended to be used by hardware managers in the kernel, while the copy interface +make sense for developers (since it avoids problems with namespaces). +diff --git a/Documentation/driver-api/gpio/drivers-on-gpio.rst b/Documentation/driver-api/gpio/drivers-on-gpio.rst +index af632d764ac6a..95572d2a94ce0 100644 +--- a/Documentation/driver-api/gpio/drivers-on-gpio.rst ++++ b/Documentation/driver-api/gpio/drivers-on-gpio.rst +@@ -27,7 +27,12 @@ hardware descriptions such as device tree or ACPI: + to the lines for a more permanent solution of this type. + + - gpio-beeper: drivers/input/misc/gpio-beeper.c is used to provide a beep from +- an external speaker connected to a GPIO line. ++ an external speaker connected to a GPIO line. (If the beep is controlled by ++ off/on, for an actual PWM waveform, see pwm-gpio below.) ++ ++- pwm-gpio: drivers/pwm/pwm-gpio.c is used to toggle a GPIO with a high ++ resolution timer producing a PWM waveform on the GPIO line, as well as ++ Linux high resolution timers can do. + + - extcon-gpio: drivers/extcon/extcon-gpio.c is used when you need to read an + external connector status, such as a headset line for an audio driver or an diff --git a/Documentation/driver-api/pwm.rst b/Documentation/driver-api/pwm.rst -index 3fdc95f7a1d1..c68ed828fba9 100644 +index ed5ec98165381..c68ed828fba9c 100644 --- a/Documentation/driver-api/pwm.rst +++ b/Documentation/driver-api/pwm.rst -@@ -41,11 +41,20 @@ the getter, devm_pwm_get() and devm_fwnode_pwm_get(), also exist. - - After being requested, a PWM has to be configured using:: - -- int pwm_apply_state(struct pwm_device *pwm, struct pwm_state *state); -+ int pwm_apply_might_sleep(struct pwm_device *pwm, struct pwm_state *state); - +@@ -46,6 +46,15 @@ After being requested, a PWM has to be configured using:: This API controls both the PWM period/duty_cycle config and the enable/disable state. @@ -4500,25 +5109,8 @@ index 3fdc95f7a1d1..c68ed828fba9 100644 As a consumer, don't rely on the output's state for a disabled PWM. If it's easily possible, drivers are supposed to emit the inactive state, but some drivers cannot. If you rely on getting the inactive state, use .duty_cycle=0, -@@ -57,13 +66,13 @@ If supported by the driver, the signal can be optimized, for example to improve - EMI by phase shifting the individual channels of a chip. - - The pwm_config(), pwm_enable() and pwm_disable() functions are just wrappers --around pwm_apply_state() and should not be used if the user wants to change -+around pwm_apply_might_sleep() and should not be used if the user wants to change - several parameter at once. For example, if you see pwm_config() and - pwm_{enable,disable}() calls in the same function, this probably means you --should switch to pwm_apply_state(). -+should switch to pwm_apply_might_sleep(). - - The PWM user API also allows one to query the PWM state that was passed to the --last invocation of pwm_apply_state() using pwm_get_state(). Note this is -+last invocation of pwm_apply_might_sleep() using pwm_get_state(). Note this is - different to what the driver has actually implemented if the request cannot be - satisfied exactly with the hardware in use. There is currently no way for - consumers to get the actually implemented settings. diff --git a/Documentation/userspace-api/media/drivers/index.rst b/Documentation/userspace-api/media/drivers/index.rst -index 6708d649afd7..65de8ab99c58 100644 +index 6708d649afd75..65de8ab99c58c 100644 --- a/Documentation/userspace-api/media/drivers/index.rst +++ b/Documentation/userspace-api/media/drivers/index.rst @@ -36,6 +36,7 @@ For more details see the file COPYING in the source distribution of Linux. @@ -4530,24 +5122,99 @@ index 6708d649afd7..65de8ab99c58 100644 omap3isp-uapi st-vgxy61 diff --git a/Documentation/userspace-api/media/v4l/meta-formats.rst b/Documentation/userspace-api/media/v4l/meta-formats.rst -index 0bb61fc5bc00..d421ccdfccfc 100644 +index 0bb61fc5bc008..178653874e44b 100644 --- a/Documentation/userspace-api/media/v4l/meta-formats.rst +++ b/Documentation/userspace-api/media/v4l/meta-formats.rst -@@ -12,9 +12,11 @@ These formats are used for the :ref:`metadata` interface only. +@@ -12,9 +12,12 @@ These formats are used for the :ref:`metadata` interface only. .. toctree:: :maxdepth: 1 + metafmt-bcm2835-isp-stats metafmt-d4xx metafmt-intel-ipu3 ++ metafmt-pisp-be metafmt-rkisp1 + metafmt-sensor-data metafmt-uvc metafmt-vsp1-hgo metafmt-vsp1-hgt +diff --git a/Documentation/userspace-api/media/v4l/metafmt-pisp-be.rst b/Documentation/userspace-api/media/v4l/metafmt-pisp-be.rst +new file mode 100644 +index 0000000000000..3281fe366c869 +--- /dev/null ++++ b/Documentation/userspace-api/media/v4l/metafmt-pisp-be.rst +@@ -0,0 +1,56 @@ ++.. SPDX-License-Identifier: GPL-2.0 ++ ++.. _v4l2-meta-fmt-rpi-be-cfg: ++ ++************************ ++V4L2_META_FMT_RPI_BE_CFG ++************************ ++ ++Raspberry Pi PiSP Back End configuration format ++=============================================== ++ ++The Raspberry Pi PiSP Back End memory-to-memory image signal processor is ++configured by userspace by providing a buffer of configuration parameters ++to the `pispbe-config` output video device node using the ++:c:type:`v4l2_meta_format` interface. ++ ++The PiSP Back End processes images in tiles, and its configuration requires ++specifying two different sets of parameters by populating the members of ++:c:type:`pisp_be_tiles_config` defined in the ``pisp_be_config.h`` header file. ++ ++The `Raspberry Pi PiSP technical specification ++`_ ++provide detailed description of the ISP back end configuration and programming ++model. ++ ++Global configuration data ++------------------------- ++ ++The global configuration data describe how the pixels in a particular image are ++to be processed and is therefore shared across all the tiles of the image. So ++for example, LSC (Lens Shading Correction) or Denoise parameters would be common ++across all tiles from the same frame. ++ ++Global configuration data are passed to the ISP by populating the member of ++:c:type:`pisp_be_config`. ++ ++Tile parameters ++--------------- ++ ++As the ISP processes images in tiles, each set of tiles parameters describe how ++a single tile in an image is going to be processed. A single set of tile ++parameters consist of 160 bytes of data and to process a batch of tiles several ++sets of tiles parameters are required. ++ ++Tiles parameters are passed to the ISP by populating the member of ++``pisp_tile`` and the ``num_tiles`` fields of :c:type:`pisp_be_tiles_config`. ++ ++Raspberry Pi PiSP Back End uAPI data types ++========================================== ++ ++This section describes the data types exposed to userspace by the Raspberry Pi ++PiSP Back End. The section is informative only, for a detailed description of ++each field refer to the `Raspberry Pi PiSP technical specification ++`_. ++ ++.. kernel-doc:: include/uapi/linux/media/raspberrypi/pisp_be_config.h +diff --git a/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst b/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst +index 2500413e5f43e..ed3eb432967d9 100644 +--- a/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst ++++ b/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst +@@ -20,6 +20,7 @@ orders. See also `the Wikipedia article on Bayer filter + :maxdepth: 1 + + pixfmt-srggb8 ++ pixfmt-srggb8-pisp-comp + pixfmt-srggb10 + pixfmt-srggb10p + pixfmt-srggb10alaw8 diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-bcm2835-isp-stats.rst b/Documentation/userspace-api/media/v4l/pixfmt-meta-bcm2835-isp-stats.rst new file mode 100644 -index 000000000000..f974774c8252 +index 0000000000000..f974774c82527 --- /dev/null +++ b/Documentation/userspace-api/media/v4l/pixfmt-meta-bcm2835-isp-stats.rst @@ -0,0 +1,41 @@ @@ -4594,7 +5261,7 @@ index 000000000000..f974774c8252 + diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-sensor-data.rst b/Documentation/userspace-api/media/v4l/pixfmt-meta-sensor-data.rst new file mode 100644 -index 000000000000..4a67e204d08a +index 0000000000000..4a67e204d08a3 --- /dev/null +++ b/Documentation/userspace-api/media/v4l/pixfmt-meta-sensor-data.rst @@ -0,0 +1,32 @@ @@ -4632,7 +5299,7 @@ index 000000000000..4a67e204d08a + diff --git a/Documentation/userspace-api/media/v4l/pixfmt-nv12-col128.rst b/Documentation/userspace-api/media/v4l/pixfmt-nv12-col128.rst new file mode 100644 -index 000000000000..196ca33a5dff +index 0000000000000..196ca33a5dff8 --- /dev/null +++ b/Documentation/userspace-api/media/v4l/pixfmt-nv12-col128.rst @@ -0,0 +1,215 @@ @@ -4851,9 +5518,154 @@ index 000000000000..196ca33a5dff + + + +diff --git a/Documentation/userspace-api/media/v4l/pixfmt-rgb.rst b/Documentation/userspace-api/media/v4l/pixfmt-rgb.rst +index b71b80d634d6f..5ed4d62df9096 100644 +--- a/Documentation/userspace-api/media/v4l/pixfmt-rgb.rst ++++ b/Documentation/userspace-api/media/v4l/pixfmt-rgb.rst +@@ -996,6 +996,60 @@ arranged in little endian order. + + \normalsize + ++16 Bits Per Component ++===================== ++ ++These formats store an RGB triplet in six bytes, with 16 bits per component ++stored in memory in little endian byte order. They are named based on the order ++of the RGB components as stored in memory. For instance, RGB48 stores R\ ++:sub:`7:0` and R\ :sub:`15:8` in bytes 0 and 1 respectively. This differs from ++the DRM format nomenclature that instead uses the order of components as seen in ++the 48-bits little endian word. ++ ++.. raw:: latex ++ ++ \small ++ ++.. flat-table:: RGB Formats With 16 Bits Per Component ++ :header-rows: 1 ++ ++ * - Identifier ++ - Code ++ - Byte 0 ++ - Byte 1 ++ - Byte 2 ++ - Byte 3 ++ - Byte 4 ++ - Byte 5 ++ ++ * .. _V4L2-PIX-FMT-BGR48: ++ ++ - ``V4L2_PIX_FMT_BGR48`` ++ - 'BGR6' ++ ++ - B\ :sub:`7-0` ++ - B\ :sub:`15-8` ++ - G\ :sub:`7-0` ++ - G\ :sub:`15-8` ++ - R\ :sub:`7-0` ++ - R\ :sub:`15-8` ++ ++ * .. _V4L2-PIX-FMT-RGB48: ++ ++ - ``V4L2_PIX_FMT_RGB48`` ++ - 'RGB6' ++ ++ - R\ :sub:`7-0` ++ - R\ :sub:`15-8` ++ - G\ :sub:`7-0` ++ - G\ :sub:`15-8` ++ - B\ :sub:`7-0` ++ - B\ :sub:`15-8` ++ ++.. raw:: latex ++ ++ \normalsize ++ + Deprecated RGB Formats + ====================== + +diff --git a/Documentation/userspace-api/media/v4l/pixfmt-srggb8-pisp-comp.rst b/Documentation/userspace-api/media/v4l/pixfmt-srggb8-pisp-comp.rst +new file mode 100644 +index 0000000000000..5a82a15559d6d +--- /dev/null ++++ b/Documentation/userspace-api/media/v4l/pixfmt-srggb8-pisp-comp.rst +@@ -0,0 +1,74 @@ ++.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later ++ ++.. _v4l2-pix-fmt-pisp-comp1-rggb: ++.. _v4l2-pix-fmt-pisp-comp1-grbg: ++.. _v4l2-pix-fmt-pisp-comp1-gbrg: ++.. _v4l2-pix-fmt-pisp-comp1-bggr: ++.. _v4l2-pix-fmt-pisp-comp1-mono: ++.. _v4l2-pix-fmt-pisp-comp2-rggb: ++.. _v4l2-pix-fmt-pisp-comp2-grbg: ++.. _v4l2-pix-fmt-pisp-comp2-gbrg: ++.. _v4l2-pix-fmt-pisp-comp2-bggr: ++.. _v4l2-pix-fmt-pisp-comp2-mono: ++ ++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ++V4L2_PIX_FMT_PISP_COMP1_RGGB ('PC1R'), V4L2_PIX_FMT_PISP_COMP1_GRBG ('PC1G'), V4L2_PIX_FMT_PISP_COMP1_GBRG ('PC1g'), V4L2_PIX_FMT_PISP_COMP1_BGGR ('PC1B), V4L2_PIX_FMT_PISP_COMP1_MONO ('PC1M'), V4L2_PIX_FMT_PISP_COMP2_RGGB ('PC2R'), V4L2_PIX_FMT_PISP_COMP2_GRBG ('PC2G'), V4L2_PIX_FMT_PISP_COMP2_GBRG ('PC2g'), V4L2_PIX_FMT_PISP_COMP2_BGGR ('PC2B), V4L2_PIX_FMT_PISP_COMP2_MONO ('PC2M') ++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ++ ++================================================ ++Raspberry Pi PiSP compressed 8-bit Bayer formats ++================================================ ++ ++Description ++=========== ++ ++The Raspberry Pi ISP (PiSP) uses a family of three fixed-rate compressed Bayer ++formats. A black-level offset may be subtracted to improve compression ++efficiency; the nominal black level and amount of offset must be signalled out ++of band. Each scanline is padded to a multiple of 8 pixels wide, and each block ++of 8 horizontally-contiguous pixels is coded using 8 bytes. ++ ++Mode 1 uses a quantization and delta-based coding scheme which preserves up to ++12 significant bits. Mode 2 is a simple sqrt-like companding scheme with 6 PWL ++chords, preserving up to 12 significant bits. Mode 3 combines both companding ++(with 4 chords) and the delta scheme, preserving up to 14 significant bits. ++ ++The remainder of this description applies to Modes 1 and 3. ++ ++Each block of 8 pixels is separated into even and odd phases of 4 pixels, ++coded independently by 32-bit words at successive locations in memory. ++The two LS bits of each 32-bit word give its "quantization mode". ++ ++In quantization mode 0, the lowest 321 quantization levels are multiples of ++FSD/4096 and the remaining levels are successive multiples of FSD/2048. ++Quantization modes 1 and 2 use linear quantization with step sizes of ++FSD/1024 and FSD/512 respectively. Each of the four pixels is quantized ++independently, with rounding to the nearest level. ++In quantization mode 2 where the middle two samples have quantized values ++(q1,q2) both in the range [384..511], they are coded using 9 bits for q1 ++followed by 7 bits for (q2 & 127). Otherwise, for quantization modes ++0, 1 and 2: a 9-bit field encodes MIN(q1,q2) which must be in the range ++[0..511] and a 7-bit field encodes (q2-q1+64) which must be in [0..127]. ++ ++Each of the outer samples (q0,q3) is encoded using a 7-bit field based ++on its inner neighbour q1 or q2. In quantization mode 2 where the inner ++sample has a quantized value in the range [448..511], the field value is ++(q0-384). Otherwise for quantization modes 0, 1 and 2: The outer sample ++is encoded as (q0-MAX(0,q1-64)). q3 is likewise coded based on q2. ++Each of these values must be in the range [0..127]. All these fields ++of 2, 9, 7, 7, 7 bits respectively are packed in little-endian order ++to give a 32-bit word with LE byte order. ++ ++Quantization mode 3 has a "7.5-bit" escape, used when none of the above ++encodings will fit. Each pixel value is quantized to the nearest of 176 ++levels, where the lowest 95 levels are multiples of FSD/256 and the ++remaining levels are multiples of FSD/128 (level 175 represents values ++very close to FSD and may require saturating arithmetic to decode). ++ ++Each pair of quantized pixels (q0,q1) or (q2,q3) is jointly coded ++by a 15-bit field: 2816*(q0>>4) + 16*q1 + (q0&15). ++Three fields of 2, 15, 15 bits are packed in LE order {15,15,2}. ++ ++An implementation of a software decoder of compressed formats is available ++in `Raspberry Pi camera applications code base ++`_. diff --git a/Documentation/userspace-api/media/v4l/pixfmt-y12p.rst b/Documentation/userspace-api/media/v4l/pixfmt-y12p.rst new file mode 100644 -index 000000000000..3704f9180fd7 +index 0000000000000..3704f9180fd77 --- /dev/null +++ b/Documentation/userspace-api/media/v4l/pixfmt-y12p.rst @@ -0,0 +1,45 @@ @@ -4904,7 +5716,7 @@ index 000000000000..3704f9180fd7 + diff --git a/Documentation/userspace-api/media/v4l/pixfmt-y14p.rst b/Documentation/userspace-api/media/v4l/pixfmt-y14p.rst new file mode 100644 -index 000000000000..27fe14c9a9eb +index 0000000000000..27fe14c9a9ebd --- /dev/null +++ b/Documentation/userspace-api/media/v4l/pixfmt-y14p.rst @@ -0,0 +1,54 @@ @@ -4962,8 +5774,20 @@ index 000000000000..27fe14c9a9eb + - Y'\ :sub:`03low bits 5--0`\ (bits 7--2) + + Y'\ :sub:`02low bits 5--4`\ (bits 1--0) +diff --git a/Documentation/userspace-api/media/v4l/pixfmt-yuv-luma.rst b/Documentation/userspace-api/media/v4l/pixfmt-yuv-luma.rst +index cf8e4dfbfbd41..93514bd773987 100644 +--- a/Documentation/userspace-api/media/v4l/pixfmt-yuv-luma.rst ++++ b/Documentation/userspace-api/media/v4l/pixfmt-yuv-luma.rst +@@ -161,3 +161,7 @@ are often referred to as greyscale formats. + For Y012 and Y12 formats, Y012 places its data in the 12 high bits, with + padding zeros in the 4 low bits, in contrast to the Y12 format, which has + its padding located in the most significant bits of the 16 bit word. ++ ++ The 'P' variations of the Y10, Y12 and Y14 formats are packed according to ++ the RAW10, RAW12 and RAW14 packing scheme as defined by the MIPI CSI-2 ++ specification. diff --git a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst -index 1840224faa41..56ef9ee9c0e1 100644 +index 1840224faa412..56ef9ee9c0e12 100644 --- a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst +++ b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst @@ -697,6 +697,18 @@ Data in the 12 high bits, zeros in the 4 low bits, arranged in little endian ord @@ -4986,7 +5810,7 @@ index 1840224faa41..56ef9ee9c0e1 100644 ======================== diff --git a/Documentation/userspace-api/media/v4l/subdev-formats.rst b/Documentation/userspace-api/media/v4l/subdev-formats.rst -index a3a35eeed708..d7250b6a1695 100644 +index a3a35eeed7084..d7250b6a16954 100644 --- a/Documentation/userspace-api/media/v4l/subdev-formats.rst +++ b/Documentation/userspace-api/media/v4l/subdev-formats.rst @@ -624,6 +624,43 @@ The following tables list existing packed RGB formats. @@ -5158,7 +5982,7 @@ index a3a35eeed708..d7250b6a1695 100644 + `_ + diff --git a/Documentation/userspace-api/media/v4l/yuv-formats.rst b/Documentation/userspace-api/media/v4l/yuv-formats.rst -index 24b34cdfa6fe..44589ac3e909 100644 +index 24b34cdfa6fea..44589ac3e9095 100644 --- a/Documentation/userspace-api/media/v4l/yuv-formats.rst +++ b/Documentation/userspace-api/media/v4l/yuv-formats.rst @@ -267,7 +267,28 @@ image. @@ -5191,10 +6015,10 @@ index 24b34cdfa6fe..44589ac3e909 100644 + pixfmt-nv24 pixfmt-m420 diff --git a/MAINTAINERS b/MAINTAINERS -index 1c70622103e0..2e813db650d1 100644 +index 379a23308af59..e8b4eb99927d1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -1563,6 +1563,22 @@ S: Maintained +@@ -1569,6 +1569,22 @@ S: Maintained F: drivers/net/arcnet/ F: include/uapi/linux/if_arcnet.h @@ -5217,7 +6041,7 @@ index 1c70622103e0..2e813db650d1 100644 ARM AND ARM64 SoC SUB-ARCHITECTURES (COMMON PARTS) M: Arnd Bergmann M: Olof Johansson -@@ -3916,6 +3932,29 @@ N: bcm113* +@@ -3922,6 +3938,29 @@ N: bcm113* N: bcm216* N: kona @@ -5247,7 +6071,7 @@ index 1c70622103e0..2e813db650d1 100644 BROADCOM BCM47XX MIPS ARCHITECTURE M: Hauke Mehrtens M: Rafał Miłecki -@@ -15868,6 +15907,14 @@ S: Maintained +@@ -15892,6 +15931,14 @@ S: Maintained T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/ov5695.c @@ -5262,16 +6086,44 @@ index 1c70622103e0..2e813db650d1 100644 OMNIVISION OV7670 SENSOR DRIVER L: linux-media@vger.kernel.org S: Orphan -@@ -17426,7 +17473,7 @@ F: drivers/video/backlight/pwm_bl.c +@@ -17461,7 +17508,7 @@ F: drivers/video/backlight/pwm_bl.c F: include/dt-bindings/pwm/ F: include/linux/pwm.h F: include/linux/pwm_backlight.h --K: pwm_(config|apply_state|ops) +-K: pwm_(config|apply_might_sleep|ops) +K: pwm_(config|apply_might_sleep|apply_atomic|ops) PXA GPIO DRIVER M: Robert Jarzmik -@@ -18618,6 +18665,13 @@ S: Supported +@@ -18051,6 +18098,12 @@ F: drivers/ras/ + F: include/linux/ras.h + F: include/ras/ras_event.h + ++RASPBERRY PI RP2040 GPIO BRIDGE DRIVER ++M: Raspberry Pi Kernel Maintenance ++S: Maintained ++F: Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml ++F: drivers/spi/spi-rp2040-gpio-bridge.c ++ + RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER + L: linux-wireless@vger.kernel.org + S: Orphan +@@ -18062,6 +18115,14 @@ L: linux-edac@vger.kernel.org + S: Maintained + F: drivers/ras/amd/fmpm.c + ++RASPBERRY PI PISP BACK END ++M: Jacopo Mondi ++L: Raspberry Pi Kernel Maintenance ++L: linux-media@vger.kernel.org ++S: Maintained ++F: Documentation/devicetree/bindings/media/raspberrypi,pispbe.yaml ++F: include/uapi/linux/media/raspberrypi/ ++ + RC-CORE / LIRC FRAMEWORK + M: Sean Young + L: linux-media@vger.kernel.org +@@ -18659,6 +18720,13 @@ S: Supported F: drivers/iio/light/rohm-bu27008.c F: drivers/iio/light/rohm-bu27034.c @@ -5285,7 +6137,7 @@ index 1c70622103e0..2e813db650d1 100644 ROHM MULTIFUNCTION BD9571MWV-M PMIC DEVICE DRIVERS M: Marek Vasut L: linux-kernel@vger.kernel.org -@@ -20011,7 +20065,7 @@ M: Sakari Ailus +@@ -20052,7 +20120,7 @@ M: Sakari Ailus L: linux-media@vger.kernel.org S: Maintained T: git git://linuxtv.org/media_tree.git @@ -5294,7 +6146,7 @@ index 1c70622103e0..2e813db650d1 100644 F: drivers/media/i2c/imx258.c SONY IMX274 SENSOR DRIVER -@@ -20088,6 +20142,31 @@ T: git git://linuxtv.org/media_tree.git +@@ -20129,6 +20197,39 @@ T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/sony,imx415.yaml F: drivers/media/i2c/imx415.c @@ -5307,6 +6159,14 @@ index 1c70622103e0..2e813db650d1 100644 +F: Documentation/devicetree/bindings/media/i2c/imx477.yaml +F: drivers/media/i2c/imx477.c + ++SONY IMX500 SENSOR DRIVER ++M: Raspberry Pi Kernel Maintenance ++L: linux-media@vger.kernel.org ++S: Maintained ++T: git git://linuxtv.org/media_tree.git ++F: Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml ++F: drivers/media/i2c/imx500.c ++ +SONY IMX519 SENSOR DRIVER +M: Arducam Kernel Maintenance +L: linux-media@vger.kernel.org @@ -5328,7 +6188,7 @@ index 1c70622103e0..2e813db650d1 100644 M: Alex Dubov diff --git a/README.md b/README.md new file mode 100644 -index 000000000000..e33ba1b6c950 +index 0000000000000..e33ba1b6c9501 --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ @@ -5363,7 +6223,7 @@ index 000000000000..e33ba1b6c950 +[![Pi kernel build tests](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml/badge.svg?branch=rpi-6.6.y)](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml) +[![dtoverlaycheck](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml/badge.svg?branch=rpi-6.6.y)](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml) diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index efe38eb25301..a2a407fb5b28 100644 +index efe38eb253016..a2a407fb5b281 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -39,3 +39,8 @@ subdir-y += unisoc @@ -5376,7 +6236,7 @@ index efe38eb25301..a2a407fb5b28 100644 + +subdir-y += overlays diff --git a/arch/arm/boot/dts/broadcom/Makefile b/arch/arm/boot/dts/broadcom/Makefile -index 7099d9560033..4af351c7f7b2 100644 +index 7099d95600330..4af351c7f7b23 100644 --- a/arch/arm/boot/dts/broadcom/Makefile +++ b/arch/arm/boot/dts/broadcom/Makefile @@ -35,6 +35,41 @@ dtb-$(CONFIG_ARCH_BCM2835) += \ @@ -5423,7 +6283,7 @@ index 7099d9560033..4af351c7f7b2 100644 bcm963138.dtb \ diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-plus.dts new file mode 100644 -index 000000000000..ee72fdac6663 +index 0000000000000..ee72fdac66636 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-plus.dts @@ -0,0 +1,210 @@ @@ -5639,7 +6499,7 @@ index 000000000000..ee72fdac6663 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-rev1.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-rev1.dts new file mode 100644 -index 000000000000..9301e345aea2 +index 0000000000000..9301e345aea22 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-rev1.dts @@ -0,0 +1,223 @@ @@ -5868,7 +6728,7 @@ index 000000000000..9301e345aea2 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-b.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b.dts new file mode 100644 -index 000000000000..b8459fd0f497 +index 0000000000000..b8459fd0f4970 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b.dts @@ -0,0 +1,198 @@ @@ -6072,10 +6932,10 @@ index 000000000000..b8459fd0f497 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-bt.dtsi b/arch/arm/boot/dts/broadcom/bcm2708-rpi-bt.dtsi new file mode 100644 -index 000000000000..98555528adae +index 0000000000000..87a6c00bd0562 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-bt.dtsi -@@ -0,0 +1,38 @@ +@@ -0,0 +1,42 @@ +// SPDX-License-Identifier: GPL-2.0 + +&uart0 { @@ -6101,6 +6961,10 @@ index 000000000000..98555528adae +}; + +/ { ++ chosen { ++ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory"; ++ }; ++ + aliases { + bluetooth = &bt; + }; @@ -6116,7 +6980,7 @@ index 000000000000..98555528adae +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dts new file mode 100644 -index 000000000000..fde85c8c7dca +index 0000000000000..fde85c8c7dca2 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dts @@ -0,0 +1,174 @@ @@ -6296,10 +7160,10 @@ index 000000000000..fde85c8c7dca +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dtsi new file mode 100644 -index 000000000000..10fd4475dd5e +index 0000000000000..8d3e42bfe4f08 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dtsi -@@ -0,0 +1,27 @@ +@@ -0,0 +1,23 @@ +#include "bcm2708.dtsi" +#include "bcm2708-rpi.dtsi" +#include "bcm283x-rpi-led-deprecated.dtsi" @@ -6321,18 +7185,14 @@ index 000000000000..10fd4475dd5e + act_led_gpio = <&led_act>,"gpios:4"; + act_led_activelow = <&led_act>,"gpios:8"; + act_led_trigger = <&led_act>,"linux,default-trigger"; -+ cam0_reg = <&cam0_reg>,"status"; -+ cam0_reg_gpio = <&cam0_reg>,"gpio:4"; -+ cam1_reg = <&cam1_reg>,"status"; -+ cam1_reg_gpio = <&cam1_reg>,"gpio:4"; + }; +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero-w.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero-w.dts new file mode 100644 -index 000000000000..011d0fa4c9c0 +index 0000000000000..f6d4e2c73df98 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero-w.dts -@@ -0,0 +1,254 @@ +@@ -0,0 +1,250 @@ +/dts-v1/; + +#include "bcm2708.dtsi" @@ -6346,10 +7206,6 @@ index 000000000000..011d0fa4c9c0 + compatible = "raspberrypi,model-zero-w", "brcm,bcm2835"; + model = "Raspberry Pi Zero W"; + -+ chosen { -+ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0"; -+ }; -+ + aliases { + serial0 = &uart1; + serial1 = &uart0; @@ -6589,7 +7445,7 @@ index 000000000000..011d0fa4c9c0 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero.dts new file mode 100644 -index 000000000000..1721be8dbe20 +index 0000000000000..1721be8dbe20a --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero.dts @@ -0,0 +1,189 @@ @@ -6784,10 +7640,10 @@ index 000000000000..1721be8dbe20 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi b/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi new file mode 100644 -index 000000000000..f4949a07272b +index 0000000000000..f4aedb5c532b5 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi -@@ -0,0 +1,57 @@ +@@ -0,0 +1,63 @@ +/* Downstream modifications common to bcm2835, bcm2836, bcm2837 */ + +#define i2c0 i2c0mux @@ -6816,18 +7672,24 @@ index 000000000000..f4949a07272b +}; + +&soc { -+ nvmem_otp: nvmem_otp { -+ compatible = "raspberrypi,rpi-otp"; -+ firmware = <&firmware>; -+ reg = <0 192>; -+ status = "okay"; -+ }; ++ nvmem { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <1>; + -+ nvmem_cust: nvmem_cust { -+ compatible = "raspberrypi,rpi-otp"; -+ firmware = <&firmware>; -+ reg = <1 8>; -+ status = "okay"; ++ nvmem_otp: nvmem_otp { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <0 192>; ++ status = "okay"; ++ }; ++ ++ nvmem_cust: nvmem_cust { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <1 8>; ++ status = "okay"; ++ }; + }; +}; + @@ -6847,7 +7709,7 @@ index 000000000000..f4949a07272b +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2708.dtsi b/arch/arm/boot/dts/broadcom/bcm2708.dtsi new file mode 100644 -index 000000000000..fdc7f2423bbe +index 0000000000000..fdc7f2423bbe6 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2708.dtsi @@ -0,0 +1,19 @@ @@ -6872,7 +7734,7 @@ index 000000000000..fdc7f2423bbe +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/broadcom/bcm2709-rpi-2-b.dts new file mode 100644 -index 000000000000..7796e545da43 +index 0000000000000..7796e545da43f --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2709-rpi-2-b.dts @@ -0,0 +1,204 @@ @@ -7082,10 +7944,10 @@ index 000000000000..7796e545da43 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2709-rpi-cm2.dts b/arch/arm/boot/dts/broadcom/bcm2709-rpi-cm2.dts new file mode 100644 -index 000000000000..5a5f910edba1 +index 0000000000000..36d00aa889a39 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2709-rpi-cm2.dts -@@ -0,0 +1,219 @@ +@@ -0,0 +1,215 @@ +/dts-v1/; + +#include "bcm2709.dtsi" @@ -7299,15 +8161,11 @@ index 000000000000..5a5f910edba1 + act_led_gpio = <&led_act>,"gpios:4"; + act_led_activelow = <&led_act>,"gpios:8"; + act_led_trigger = <&led_act>,"linux,default-trigger"; -+ cam0_reg = <&cam0_reg>,"status"; -+ cam0_reg_gpio = <&cam0_reg>,"gpio:4"; -+ cam1_reg = <&cam1_reg>,"status"; -+ cam1_reg_gpio = <&cam1_reg>,"gpio:4"; + }; +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2709-rpi.dtsi b/arch/arm/boot/dts/broadcom/bcm2709-rpi.dtsi new file mode 100644 -index 000000000000..7335e7fbcb71 +index 0000000000000..7335e7fbcb714 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2709-rpi.dtsi @@ -0,0 +1,8 @@ @@ -7321,7 +8179,7 @@ index 000000000000..7335e7fbcb71 +i2c_vc: &i2c0 {}; diff --git a/arch/arm/boot/dts/broadcom/bcm2709.dtsi b/arch/arm/boot/dts/broadcom/bcm2709.dtsi new file mode 100644 -index 000000000000..868f65f922ff +index 0000000000000..868f65f922ff4 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2709.dtsi @@ -0,0 +1,29 @@ @@ -7356,10 +8214,10 @@ index 000000000000..868f65f922ff +}; diff --git a/arch/arm/boot/dts/broadcom/bcm270x-rpi.dtsi b/arch/arm/boot/dts/broadcom/bcm270x-rpi.dtsi new file mode 100644 -index 000000000000..bc533f329640 +index 0000000000000..d4a4e97c18b40 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm270x-rpi.dtsi -@@ -0,0 +1,201 @@ +@@ -0,0 +1,208 @@ +/* Downstream modifications to bcm2835-rpi.dtsi */ + +/ { @@ -7462,16 +8320,23 @@ index 000000000000..bc533f329640 + + cam1_sync = <&csi1>, "sync-gpios:0=", <&gpio>, + <&csi1>, "sync-gpios:4", -+ <&csi1>, "sync-gpios:8=0", ; ++ <&csi1>, "sync-gpios:8=", ; + cam1_sync_inverted = <&csi1>, "sync-gpios:0=", <&gpio>, + <&csi1>, "sync-gpios:4", -+ <&csi1>, "sync-gpios:8=0", ; ++ <&csi1>, "sync-gpios:8=", ; + cam0_sync = <&csi0>, "sync-gpios:0=", <&gpio>, + <&csi0>, "sync-gpios:4", -+ <&csi0>, "sync-gpios:8=0", ; ++ <&csi0>, "sync-gpios:8=", ; + cam0_sync_inverted = <&csi0>, "sync-gpios:0=", <&gpio>, + <&csi0>, "sync-gpios:4", -+ <&csi0>, "sync-gpios:8=0", ; ++ <&csi0>, "sync-gpios:8=", ; ++ ++ cam0_reg = <&cam0_reg>,"status"; ++ cam0_reg_gpio = <&cam0_reg>,"gpio:4", ++ <&cam0_reg>,"gpio:0=", <&gpio>; ++ cam1_reg = <&cam1_reg>,"status"; ++ cam1_reg_gpio = <&cam1_reg>,"gpio:4", ++ <&cam1_reg>,"gpio:0=", <&gpio>; + + strict_gpiod = <&chosen>, "bootargs=pinctrl_bcm2835.persist_gpio_outputs=n"; + }; @@ -7563,7 +8428,7 @@ index 000000000000..bc533f329640 +#endif diff --git a/arch/arm/boot/dts/broadcom/bcm270x.dtsi b/arch/arm/boot/dts/broadcom/bcm270x.dtsi new file mode 100644 -index 000000000000..c318080eb883 +index 0000000000000..e077bd2711230 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm270x.dtsi @@ -0,0 +1,294 @@ @@ -7573,7 +8438,7 @@ index 000000000000..c318080eb883 +/ { + chosen: chosen { + // Disable audio by default -+ bootargs = "coherent_pool=1M snd_bcm2835.enable_headphones=0"; ++ bootargs = "coherent_pool=1M snd_bcm2835.enable_headphones=0 cgroup_disable=memory"; + stdout-path = "serial0:115200n8"; + }; + @@ -7863,7 +8728,7 @@ index 000000000000..c318080eb883 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-2-b.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-2-b.dts new file mode 100644 -index 000000000000..ce48eb6073f0 +index 0000000000000..ce48eb6073f0c --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-2-b.dts @@ -0,0 +1,204 @@ @@ -8073,10 +8938,10 @@ index 000000000000..ce48eb6073f0 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts new file mode 100644 -index 000000000000..1afbb9011702 +index 0000000000000..8973985e99028 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts -@@ -0,0 +1,299 @@ +@@ -0,0 +1,295 @@ +/dts-v1/; + +#include "bcm2710.dtsi" @@ -8091,10 +8956,307 @@ index 000000000000..1afbb9011702 + compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837"; + model = "Raspberry Pi 3 Model B+"; + -+ chosen { -+ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0"; ++ aliases { ++ serial0 = &uart1; ++ serial1 = &uart0; ++ mmc1 = &mmcnr; ++ }; ++}; ++ ++&gpio { ++ /* ++ * Taken from rpi_SCH_3bplus_1p0_reduced.pdf and ++ * the official GPU firmware DT blob. ++ * ++ * Legend: ++ * "NC" = not connected (no rail from the SoC) ++ * "FOO" = GPIO line named "FOO" on the schematic ++ * "FOO_N" = GPIO line named "FOO" on schematic, active low ++ */ ++ gpio-line-names = "ID_SDA", ++ "ID_SCL", ++ "GPIO2", ++ "GPIO3", ++ "GPIO4", ++ "GPIO5", ++ "GPIO6", ++ "GPIO7", ++ "GPIO8", ++ "GPIO9", ++ "GPIO10", ++ "GPIO11", ++ "GPIO12", ++ "GPIO13", ++ "GPIO14", ++ "GPIO15", ++ "GPIO16", ++ "GPIO17", ++ "GPIO18", ++ "GPIO19", ++ "GPIO20", ++ "GPIO21", ++ "GPIO22", ++ "GPIO23", ++ "GPIO24", ++ "GPIO25", ++ "GPIO26", ++ "GPIO27", ++ "HDMI_HPD_N", ++ "STATUS_LED_G", ++ /* Used by BT module */ ++ "CTS0", ++ "RTS0", ++ "TXD0", ++ "RXD0", ++ /* Used by Wifi */ ++ "SD1_CLK", ++ "SD1_CMD", ++ "SD1_DATA0", ++ "SD1_DATA1", ++ "SD1_DATA2", ++ "SD1_DATA3", ++ "PWM0_OUT", ++ "PWM1_OUT", ++ "ETH_CLK", ++ "WIFI_CLK", ++ "SDA0", ++ "SCL0", ++ "SMPS_SCL", ++ "SMPS_SDA", ++ /* Used by SD Card */ ++ "SD_CLK_R", ++ "SD_CMD_R", ++ "SD_DATA0_R", ++ "SD_DATA1_R", ++ "SD_DATA2_R", ++ "SD_DATA3_R"; ++ ++ spi0_pins: spi0_pins { ++ brcm,pins = <9 10 11>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ ++ spi0_cs_pins: spi0_cs_pins { ++ brcm,pins = <8 7>; ++ brcm,function = <1>; /* output */ ++ }; ++ ++ i2c0_pins: i2c0 { ++ brcm,pins = <0 1>; ++ brcm,function = <4>; ++ }; ++ ++ i2c1_pins: i2c1 { ++ brcm,pins = <2 3>; ++ brcm,function = <4>; ++ }; ++ ++ i2s_pins: i2s { ++ brcm,pins = <18 19 20 21>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ ++ sdio_pins: sdio_pins { ++ brcm,pins = <34 35 36 37 38 39>; ++ brcm,function = <7>; // alt3 = SD1 ++ brcm,pull = <0 2 2 2 2 2>; ++ }; ++ ++ bt_pins: bt_pins { ++ brcm,pins = <43>; ++ brcm,function = <4>; /* alt0:GPCLK2 */ ++ brcm,pull = <0>; ++ }; ++ ++ uart0_pins: uart0_pins { ++ brcm,pins = <32 33>; ++ brcm,function = <7>; /* alt3=UART0 */ ++ brcm,pull = <0 2>; ++ }; ++ ++ uart1_pins: uart1_pins { ++ brcm,pins; ++ brcm,function; ++ brcm,pull; + }; + ++ uart1_bt_pins: uart1_bt_pins { ++ brcm,pins = <32 33 30 31>; ++ brcm,function = ; /* alt5=UART1 */ ++ brcm,pull = <0 2 2 0>; ++ }; ++ ++ audio_pins: audio_pins { ++ brcm,pins = <40 41>; ++ brcm,function = <4>; ++ brcm,pull = <0>; ++ }; ++}; ++ ++&mmcnr { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdio_pins>; ++ bus-width = <4>; ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ brcmf: wifi@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ }; ++}; ++ ++&firmware { ++ expgpio: expgpio { ++ compatible = "raspberrypi,firmware-gpio"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ gpio-line-names = "BT_ON", ++ "WL_ON", ++ "PWR_LED_R", ++ "LAN_RUN", ++ "NC", ++ "CAM_GPIO0", ++ "CAM_GPIO1", ++ "NC"; ++ status = "okay"; ++ }; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pins &bt_pins>; ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>; ++ status = "okay"; ++}; ++ ++&spi0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&spi0_pins &spi0_cs_pins>; ++ cs-gpios = <&gpio 8 1>, <&gpio 7 1>; ++ ++ spidev0: spidev@0{ ++ compatible = "spidev"; ++ reg = <0>; /* CE0 */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spi-max-frequency = <125000000>; ++ }; ++ ++ spidev1: spidev@1{ ++ compatible = "spidev"; ++ reg = <1>; /* CE1 */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spi-max-frequency = <125000000>; ++ }; ++}; ++ ++&i2c0if { ++ clock-frequency = <100000>; ++}; ++ ++&i2c1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c1_pins>; ++ clock-frequency = <100000>; ++}; ++ ++&i2c2 { ++ clock-frequency = <100000>; ++}; ++ ++&i2s { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s_pins>; ++}; ++ ++&led_act { ++ gpios = <&gpio 29 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ linux,default-trigger = "mmc0"; ++}; ++ ++&leds { ++ led_pwr: led-pwr { ++ label = "PWR"; ++ gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; ++ default-state = "off"; ++ linux,default-trigger = "default-on"; ++ }; ++}; ++ ++&hdmi { ++ hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>; ++}; ++ ++&vchiq { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&audio_pins>; ++}; ++ ++ð_phy { ++ microchip,eee-enabled; ++ microchip,tx-lpi-timer = <600>; /* non-aggressive*/ ++ microchip,downshift-after = <2>; ++}; ++ ++&cam1_reg { ++ gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>; ++}; ++ ++cam0_reg: &cam_dummy_reg { ++}; ++ ++i2c_csi_dsi0: &i2c0 { ++}; ++ ++/ { ++ __overrides__ { ++ audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0'}"; ++ ++ act_led_gpio = <&led_act>,"gpios:4"; ++ act_led_activelow = <&led_act>,"gpios:8"; ++ act_led_trigger = <&led_act>,"linux,default-trigger"; ++ ++ pwr_led_gpio = <&led_pwr>,"gpios:4"; ++ pwr_led_activelow = <&led_pwr>,"gpios:8"; ++ pwr_led_trigger = <&led_pwr>,"linux,default-trigger"; ++ ++ eee = <ð_phy>,"microchip,eee-enabled?"; ++ tx_lpi_timer = <ð_phy>,"microchip,tx-lpi-timer:0"; ++ eth_led0 = <ð_phy>,"microchip,led-modes:0"; ++ eth_led1 = <ð_phy>,"microchip,led-modes:4"; ++ eth_downshift_after = <ð_phy>,"microchip,downshift-after:0"; ++ eth_max_speed = <ð_phy>,"max-speed:0"; ++ }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts +new file mode 100644 +index 0000000000000..35e6e99000834 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts +@@ -0,0 +1,293 @@ ++/dts-v1/; ++ ++#include "bcm2710.dtsi" ++#include "bcm2709-rpi.dtsi" ++#include "bcm283x-rpi-smsc9514.dtsi" ++#include "bcm283x-rpi-csi1-2lane.dtsi" ++#include "bcm283x-rpi-i2c0mux_0_44.dtsi" ++#include "bcm271x-rpi-bt.dtsi" ++#include "bcm283x-rpi-led-deprecated.dtsi" ++ ++/ { ++ compatible = "raspberrypi,3-model-b", "brcm,bcm2837"; ++ model = "Raspberry Pi 3 Model B"; ++ + aliases { + serial0 = &uart1; + serial1 = &uart0; @@ -8104,312 +9266,7 @@ index 000000000000..1afbb9011702 + +&gpio { + /* -+ * Taken from rpi_SCH_3bplus_1p0_reduced.pdf and -+ * the official GPU firmware DT blob. -+ * -+ * Legend: -+ * "NC" = not connected (no rail from the SoC) -+ * "FOO" = GPIO line named "FOO" on the schematic -+ * "FOO_N" = GPIO line named "FOO" on schematic, active low -+ */ -+ gpio-line-names = "ID_SDA", -+ "ID_SCL", -+ "GPIO2", -+ "GPIO3", -+ "GPIO4", -+ "GPIO5", -+ "GPIO6", -+ "GPIO7", -+ "GPIO8", -+ "GPIO9", -+ "GPIO10", -+ "GPIO11", -+ "GPIO12", -+ "GPIO13", -+ "GPIO14", -+ "GPIO15", -+ "GPIO16", -+ "GPIO17", -+ "GPIO18", -+ "GPIO19", -+ "GPIO20", -+ "GPIO21", -+ "GPIO22", -+ "GPIO23", -+ "GPIO24", -+ "GPIO25", -+ "GPIO26", -+ "GPIO27", -+ "HDMI_HPD_N", -+ "STATUS_LED_G", -+ /* Used by BT module */ -+ "CTS0", -+ "RTS0", -+ "TXD0", -+ "RXD0", -+ /* Used by Wifi */ -+ "SD1_CLK", -+ "SD1_CMD", -+ "SD1_DATA0", -+ "SD1_DATA1", -+ "SD1_DATA2", -+ "SD1_DATA3", -+ "PWM0_OUT", -+ "PWM1_OUT", -+ "ETH_CLK", -+ "WIFI_CLK", -+ "SDA0", -+ "SCL0", -+ "SMPS_SCL", -+ "SMPS_SDA", -+ /* Used by SD Card */ -+ "SD_CLK_R", -+ "SD_CMD_R", -+ "SD_DATA0_R", -+ "SD_DATA1_R", -+ "SD_DATA2_R", -+ "SD_DATA3_R"; -+ -+ spi0_pins: spi0_pins { -+ brcm,pins = <9 10 11>; -+ brcm,function = <4>; /* alt0 */ -+ }; -+ -+ spi0_cs_pins: spi0_cs_pins { -+ brcm,pins = <8 7>; -+ brcm,function = <1>; /* output */ -+ }; -+ -+ i2c0_pins: i2c0 { -+ brcm,pins = <0 1>; -+ brcm,function = <4>; -+ }; -+ -+ i2c1_pins: i2c1 { -+ brcm,pins = <2 3>; -+ brcm,function = <4>; -+ }; -+ -+ i2s_pins: i2s { -+ brcm,pins = <18 19 20 21>; -+ brcm,function = <4>; /* alt0 */ -+ }; -+ -+ sdio_pins: sdio_pins { -+ brcm,pins = <34 35 36 37 38 39>; -+ brcm,function = <7>; // alt3 = SD1 -+ brcm,pull = <0 2 2 2 2 2>; -+ }; -+ -+ bt_pins: bt_pins { -+ brcm,pins = <43>; -+ brcm,function = <4>; /* alt0:GPCLK2 */ -+ brcm,pull = <0>; -+ }; -+ -+ uart0_pins: uart0_pins { -+ brcm,pins = <32 33>; -+ brcm,function = <7>; /* alt3=UART0 */ -+ brcm,pull = <0 2>; -+ }; -+ -+ uart1_pins: uart1_pins { -+ brcm,pins; -+ brcm,function; -+ brcm,pull; -+ }; -+ -+ uart1_bt_pins: uart1_bt_pins { -+ brcm,pins = <32 33 30 31>; -+ brcm,function = ; /* alt5=UART1 */ -+ brcm,pull = <0 2 2 0>; -+ }; -+ -+ audio_pins: audio_pins { -+ brcm,pins = <40 41>; -+ brcm,function = <4>; -+ brcm,pull = <0>; -+ }; -+}; -+ -+&mmcnr { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sdio_pins>; -+ bus-width = <4>; -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ brcmf: wifi@1 { -+ reg = <1>; -+ compatible = "brcm,bcm4329-fmac"; -+ }; -+}; -+ -+&firmware { -+ expgpio: expgpio { -+ compatible = "raspberrypi,firmware-gpio"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ gpio-line-names = "BT_ON", -+ "WL_ON", -+ "PWR_LED_R", -+ "LAN_RUN", -+ "NC", -+ "CAM_GPIO0", -+ "CAM_GPIO1", -+ "NC"; -+ status = "okay"; -+ }; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins &bt_pins>; -+ status = "okay"; -+}; -+ -+&uart1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart1_pins>; -+ status = "okay"; -+}; -+ -+&spi0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi0_pins &spi0_cs_pins>; -+ cs-gpios = <&gpio 8 1>, <&gpio 7 1>; -+ -+ spidev0: spidev@0{ -+ compatible = "spidev"; -+ reg = <0>; /* CE0 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <125000000>; -+ }; -+ -+ spidev1: spidev@1{ -+ compatible = "spidev"; -+ reg = <1>; /* CE1 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <125000000>; -+ }; -+}; -+ -+&i2c0if { -+ clock-frequency = <100000>; -+}; -+ -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins>; -+ clock-frequency = <100000>; -+}; -+ -+&i2c2 { -+ clock-frequency = <100000>; -+}; -+ -+&i2s { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s_pins>; -+}; -+ -+&led_act { -+ gpios = <&gpio 29 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ linux,default-trigger = "mmc0"; -+}; -+ -+&leds { -+ led_pwr: led-pwr { -+ label = "PWR"; -+ gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; -+ default-state = "off"; -+ linux,default-trigger = "default-on"; -+ }; -+}; -+ -+&hdmi { -+ hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>; -+}; -+ -+&vchiq { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&audio_pins>; -+}; -+ -+ð_phy { -+ microchip,eee-enabled; -+ microchip,tx-lpi-timer = <600>; /* non-aggressive*/ -+ microchip,downshift-after = <2>; -+}; -+ -+&cam1_reg { -+ gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>; -+}; -+ -+cam0_reg: &cam_dummy_reg { -+}; -+ -+i2c_csi_dsi0: &i2c0 { -+}; -+ -+/ { -+ __overrides__ { -+ audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0'}"; -+ -+ act_led_gpio = <&led_act>,"gpios:4"; -+ act_led_activelow = <&led_act>,"gpios:8"; -+ act_led_trigger = <&led_act>,"linux,default-trigger"; -+ -+ pwr_led_gpio = <&led_pwr>,"gpios:4"; -+ pwr_led_activelow = <&led_pwr>,"gpios:8"; -+ pwr_led_trigger = <&led_pwr>,"linux,default-trigger"; -+ -+ eee = <ð_phy>,"microchip,eee-enabled?"; -+ tx_lpi_timer = <ð_phy>,"microchip,tx-lpi-timer:0"; -+ eth_led0 = <ð_phy>,"microchip,led-modes:0"; -+ eth_led1 = <ð_phy>,"microchip,led-modes:4"; -+ eth_downshift_after = <ð_phy>,"microchip,downshift-after:0"; -+ eth_max_speed = <ð_phy>,"max-speed:0"; -+ }; -+}; -diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts -new file mode 100644 -index 000000000000..b893affe6997 ---- /dev/null -+++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts -@@ -0,0 +1,297 @@ -+/dts-v1/; -+ -+#include "bcm2710.dtsi" -+#include "bcm2709-rpi.dtsi" -+#include "bcm283x-rpi-smsc9514.dtsi" -+#include "bcm283x-rpi-csi1-2lane.dtsi" -+#include "bcm283x-rpi-i2c0mux_0_44.dtsi" -+#include "bcm271x-rpi-bt.dtsi" -+#include "bcm283x-rpi-led-deprecated.dtsi" -+ -+/ { -+ compatible = "raspberrypi,3-model-b", "brcm,bcm2837"; -+ model = "Raspberry Pi 3 Model B"; -+ -+ chosen { -+ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0"; -+ }; -+ -+ aliases { -+ serial0 = &uart1; -+ serial1 = &uart0; -+ mmc1 = &mmcnr; -+ }; -+}; -+ -+&gpio { -+ /* -+ * Taken from rpi_SCH_3b_1p2_reduced.pdf and ++ * Taken from rpi_SCH_3b_1p2_reduced.pdf and + * the official GPU firmware DT blob. + * + * Legend: @@ -8681,10 +9538,10 @@ index 000000000000..b893affe6997 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-cm3.dts new file mode 100644 -index 000000000000..8206368b0aff +index 0000000000000..0d6e9e61f8775 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-cm3.dts -@@ -0,0 +1,219 @@ +@@ -0,0 +1,215 @@ +/dts-v1/; + +#include "bcm2710.dtsi" @@ -8898,18 +9755,14 @@ index 000000000000..8206368b0aff + act_led_gpio = <&led_act>,"gpios:4"; + act_led_activelow = <&led_act>,"gpios:8"; + act_led_trigger = <&led_act>,"linux,default-trigger"; -+ cam0_reg = <&cam0_reg>,"status"; -+ cam0_reg_gpio = <&cam0_reg>,"gpio:4"; -+ cam1_reg = <&cam1_reg>,"status"; -+ cam1_reg_gpio = <&cam1_reg>,"gpio:4"; + }; +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts new file mode 100644 -index 000000000000..25182d73f244 +index 0000000000000..16971e50229f0 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts -@@ -0,0 +1,261 @@ +@@ -0,0 +1,257 @@ +/dts-v1/; + +#include "bcm2710.dtsi" @@ -8923,10 +9776,6 @@ index 000000000000..25182d73f244 + compatible = "raspberrypi,model-zero-2-w", "brcm,bcm2837"; + model = "Raspberry Pi Zero 2 W"; + -+ chosen { -+ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0"; -+ }; -+ + aliases { + serial0 = &uart1; + serial1 = &uart0; @@ -9173,14 +10022,14 @@ index 000000000000..25182d73f244 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2.dts new file mode 100644 -index 000000000000..daa12bd30d6b +index 0000000000000..daa12bd30d6b6 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2.dts @@ -0,0 +1 @@ +#include "bcm2710-rpi-zero-2-w.dts" diff --git a/arch/arm/boot/dts/broadcom/bcm2710.dtsi b/arch/arm/boot/dts/broadcom/bcm2710.dtsi new file mode 100644 -index 000000000000..bdcdbb51fab8 +index 0000000000000..bdcdbb51fab83 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2710.dtsi @@ -0,0 +1,32 @@ @@ -9217,7 +10066,7 @@ index 000000000000..bdcdbb51fab8 + status = "disabled"; +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts -index d5f8823230db..d3a3a1e4d4c6 100644 +index d5f8823230db9..75ce412a85dd7 100644 --- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts @@ -1,10 +1,16 @@ @@ -9280,7 +10129,7 @@ index d5f8823230db..d3a3a1e4d4c6 100644 "GPIO16", "GPIO17", "GPIO18", -@@ -241,3 +247,233 @@ &vec { +@@ -241,3 +247,229 @@ &vec { &wifi_pwrseq { reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>; }; @@ -9302,10 +10151,6 @@ index d5f8823230db..d3a3a1e4d4c6 100644 +#include "bcm283x-rpi-i2c0mux_0_44.dtsi" + +/ { -+ chosen { -+ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0"; -+ }; -+ + /delete-node/ wifi-pwrseq; +}; + @@ -9515,7 +10360,7 @@ index d5f8823230db..d3a3a1e4d4c6 100644 + }; +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-400.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-400.dts -index 5a2869a18bd5..d5b81b889018 100644 +index 5a2869a18bd55..d5b81b8890182 100644 --- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-400.dts +++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-400.dts @@ -36,8 +36,53 @@ &led_pwr { @@ -9576,10 +10421,10 @@ index 5a2869a18bd5..d5b81b889018 100644 +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts new file mode 100644 -index 000000000000..9fdb9278c5a2 +index 0000000000000..678b37518fdc1 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts -@@ -0,0 +1,510 @@ +@@ -0,0 +1,499 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +#define BCM2711 @@ -9856,10 +10701,6 @@ index 000000000000..9fdb9278c5a2 +#include "bcm283x-rpi-i2c0mux_0_44.dtsi" + +/ { -+ chosen { -+ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0"; -+ }; -+ + /delete-node/ wifi-pwrseq; +}; + @@ -10080,22 +10921,15 @@ index 000000000000..9fdb9278c5a2 + <&ant2>, "output-high?=off", + <&ant2>, "output-low?=on"; + -+ cam0_reg = <&cam0_reg>,"status"; -+ cam0_reg_gpio = <&cam0_reg>,"gpio:4", -+ <&cam0_reg>,"gpio:0=", <&gpio>; -+ cam1_reg = <&cam1_reg>,"status"; -+ cam1_reg_gpio = <&cam1_reg>,"gpio:4", -+ <&cam1_reg>,"gpio:0=", <&gpio>; -+ + pcie_tperst_clk_ms = <&pcie0>,"brcm,tperst-clk-ms:0"; + }; +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts new file mode 100644 -index 000000000000..e62932f1a5a1 +index 0000000000000..71d228414b760 --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts -@@ -0,0 +1,298 @@ +@@ -0,0 +1,293 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +#define BCM2711 @@ -10246,7 +11080,7 @@ index 000000000000..e62932f1a5a1 + +/ { + chosen { -+ bootargs = "coherent_pool=1M snd_bcm2835.enable_headphones=0"; ++ bootargs = "coherent_pool=1M snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=interleave"; + }; + + aliases { @@ -10387,24 +11221,20 @@ index 000000000000..e62932f1a5a1 + act_led_gpio = <&led_act>,"gpios:4"; + act_led_activelow = <&led_act>,"gpios:8"; + act_led_trigger = <&led_act>,"linux,default-trigger"; -+ -+ cam0_reg = <&cam0_reg>,"status"; -+ cam0_reg_gpio = <&cam0_reg>,"gpio:4"; -+ cam1_reg = <&cam1_reg>,"status"; -+ cam1_reg_gpio = <&cam1_reg>,"gpio:4"; + }; +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi new file mode 100644 -index 000000000000..c45685339992 +index 0000000000000..eb3abcdbae6ba --- /dev/null +++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi -@@ -0,0 +1,561 @@ +@@ -0,0 +1,567 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "bcm270x-rpi.dtsi" + +/ { -+ chosen: chosen { ++ chosen { ++ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=interleave"; + }; + + __overrides__ { @@ -10492,26 +11322,31 @@ index 000000000000..c45685339992 + /* Add the physical <-> DMA mapping for the I/O space */ + dma-ranges = <0xc0000000 0x0 0x00000000 0x40000000>, + <0x7c000000 0x0 0xfc000000 0x03800000>; ++ nvmem { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <1>; + -+ nvmem_otp: nvmem_otp { -+ compatible = "raspberrypi,rpi-otp"; -+ firmware = <&firmware>; -+ reg = <0 166>; -+ status = "okay"; -+ }; ++ nvmem_otp: nvmem_otp { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <0 166>; ++ status = "okay"; ++ }; + -+ nvmem_cust: nvmem_cust { -+ compatible = "raspberrypi,rpi-otp"; -+ firmware = <&firmware>; -+ reg = <1 8>; -+ status = "okay"; -+ }; ++ nvmem_cust: nvmem_cust { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <1 8>; ++ status = "okay"; ++ }; + -+ nvmem_priv: nvmem_priv { -+ compatible = "raspberrypi,rpi-otp"; -+ firmware = <&firmware>; -+ reg = <3 8>; -+ status = "okay"; ++ nvmem_priv: nvmem_priv { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <3 8>; ++ status = "okay"; ++ }; + }; +}; + @@ -10520,7 +11355,7 @@ index 000000000000..c45685339992 + + ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>, + <0x0 0x40000000 0x0 0xff800000 0x0 0x00800000>, -+ <0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>, ++ <0x6 0x00000000 0x6 0x00000000 0x0 0x80000000>, + <0x0 0x00000000 0x0 0x00000000 0x0 0xfc000000>; + dma-ranges = <0x4 0x7c000000 0x0 0xfc000000 0x0 0x03800000>, + <0x0 0x00000000 0x0 0x00000000 0x4 0x00000000>; @@ -10564,8 +11399,8 @@ index 000000000000..c45685339992 + +&pcie0 { + reg = <0x0 0x7d500000 0x0 0x9310>; -+ ranges = <0x02000000 0x0 0xc0000000 0x6 0x00000000 -+ 0x0 0x40000000>; ++ ranges = <0x02000000 0x0 0x80000000 0x6 0x00000000 ++ 0x0 0x80000000>; +}; + +&genet { @@ -10962,7 +11797,7 @@ index 000000000000..c45685339992 + }; +}; diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi b/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi -index 98817a6675b9..7b9e946db985 100644 +index 98817a6675b9d..7b9e946db9853 100644 --- a/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi +++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi @@ -15,6 +15,7 @@ aliases { @@ -10993,7 +11828,7 @@ index 98817a6675b9..7b9e946db985 100644 &v3d { diff --git a/arch/arm/boot/dts/broadcom/bcm2711.dtsi b/arch/arm/boot/dts/broadcom/bcm2711.dtsi -index 4a379a14966d..09dbe7b3ca39 100644 +index 4a379a14966d8..09dbe7b3ca395 100644 --- a/arch/arm/boot/dts/broadcom/bcm2711.dtsi +++ b/arch/arm/boot/dts/broadcom/bcm2711.dtsi @@ -277,7 +277,7 @@ pwm1: pwm@7e20c800 { @@ -11005,5972 +11840,3403 @@ index 4a379a14966d..09dbe7b3ca39 100644 #pwm-cells = <3>; status = "disabled"; }; -diff --git a/arch/arm/boot/dts/broadcom/bcm2712-rpi-5-b.dts b/arch/arm/boot/dts/broadcom/bcm2712-rpi-5-b.dts +diff --git a/arch/arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi b/arch/arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi new file mode 100644 -index 000000000000..84edb08b1197 +index 0000000000000..c77e280ccd163 --- /dev/null -+++ b/arch/arm/boot/dts/broadcom/bcm2712-rpi-5-b.dts -@@ -0,0 +1,863 @@ ++++ b/arch/arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi +@@ -0,0 +1,42 @@ +// SPDX-License-Identifier: GPL-2.0 -+/dts-v1/; -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define i2c0 _i2c0 -+#define i2c3 _i2c3 -+#define i2c4 _i2c4 -+#define i2c5 _i2c5 -+#define i2c6 _i2c6 -+#define i2c8 _i2c8 -+#define i2s _i2s -+#define pwm0 _pwm0 -+#define pwm1 _pwm1 -+#define spi0 _spi0 -+#define spi3 _spi3 -+#define spi4 _spi4 -+#define spi5 _spi5 -+#define spi6 _spi6 -+#define uart0 _uart0 -+#define uart2 _uart2 -+#define uart5 _uart5 + -+#include "bcm2712.dtsi" ++&uart0 { ++ bt: bluetooth { ++ compatible = "brcm,bcm43438-bt"; ++ max-speed = <3000000>; ++ shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>; ++ local-bd-address = [ 00 00 00 00 00 00 ]; ++ fallback-bd-address; // Don't override a valid address ++ status = "okay"; ++ }; ++}; + -+#undef i2c0 -+#undef i2c3 -+#undef i2c4 -+#undef i2c5 -+#undef i2c6 -+#undef i2c8 -+#undef i2s -+#undef pwm0 -+#undef pwm1 -+#undef spi0 -+#undef spi3 -+#undef spi4 -+#undef spi5 -+#undef spi6 -+#undef uart0 -+#undef uart2 -+#undef uart3 -+#undef uart4 -+#undef uart5 ++&uart1 { ++ minibt: bluetooth { ++ compatible = "brcm,bcm43438-bt"; ++ max-speed = <230400>; ++ shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>; ++ local-bd-address = [ 00 00 00 00 00 00 ]; ++ fallback-bd-address; // Don't override a valid address ++ status = "disabled"; ++ }; ++}; + +/ { -+ compatible = "raspberrypi,5-model-b", "brcm,bcm2712"; -+ model = "Raspberry Pi 5"; -+ -+ /* Will be filled by the bootloader */ -+ memory@0 { -+ device_type = "memory"; -+ reg = <0 0 0x28000000>; ++ chosen { ++ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory"; + }; + -+ leds: leds { -+ compatible = "gpio-leds"; -+ -+ led_pwr: led-pwr { -+ label = "PWR"; -+ gpios = <&rp1_gpio 44 GPIO_ACTIVE_LOW>; -+ default-state = "off"; -+ linux,default-trigger = "none"; -+ }; -+ -+ led_act: led-act { -+ label = "ACT"; -+ gpios = <&gio_aon 9 GPIO_ACTIVE_LOW>; -+ default-state = "off"; -+ linux,default-trigger = "mmc0"; -+ }; ++ aliases { ++ bluetooth = &bt; + }; + -+ sd_io_1v8_reg: sd_io_1v8_reg { -+ compatible = "regulator-gpio"; -+ regulator-name = "vdd-sd-io"; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-boot-on; -+ regulator-always-on; -+ regulator-settling-time-us = <5000>; -+ gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>; -+ states = <1800000 0x1 -+ 3300000 0x0>; -+ status = "okay"; ++ __overrides__ { ++ bdaddr = <&bt>,"local-bd-address[", ++ <&bt>,"fallback-bd-address?=0", ++ <&minibt>,"local-bd-address[", ++ <&minibt>,"fallback-bd-address?=0"; ++ krnbt = <&bt>,"status"; ++ krnbt_baudrate = <&bt>,"max-speed:0", <&minibt>,"max-speed:0"; + }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi0-2lane.dtsi b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi0-2lane.dtsi +new file mode 100644 +index 0000000000000..6e4ce8622b477 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi0-2lane.dtsi +@@ -0,0 +1,4 @@ ++// SPDX-License-Identifier: GPL-2.0-only ++&csi0 { ++ brcm,num-data-lanes = <2>; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi +new file mode 100644 +index 0000000000000..6938f4daacdc2 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi +@@ -0,0 +1,4 @@ ++// SPDX-License-Identifier: GPL-2.0-only ++&csi1 { ++ brcm,num-data-lanes = <2>; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-4lane.dtsi b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-4lane.dtsi +new file mode 100644 +index 0000000000000..b37037437beed +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-4lane.dtsi +@@ -0,0 +1,4 @@ ++// SPDX-License-Identifier: GPL-2.0-only ++&csi1 { ++ brcm,num-data-lanes = <4>; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_28.dtsi b/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_28.dtsi +new file mode 100644 +index 0000000000000..38f0074bce3ff +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_28.dtsi +@@ -0,0 +1,4 @@ ++&i2c0mux { ++ pinctrl-0 = <&i2c0_gpio0>; ++ pinctrl-1 = <&i2c0_gpio28>; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_44.dtsi b/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_44.dtsi +new file mode 100644 +index 0000000000000..119946d878dbf +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_44.dtsi +@@ -0,0 +1,4 @@ ++&i2c0mux { ++ pinctrl-0 = <&i2c0_gpio0>; ++ pinctrl-1 = <&i2c0_gpio44>; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm283x.dtsi b/arch/arm/boot/dts/broadcom/bcm283x.dtsi +index 2ca8a2505a4db..6f09d96e11926 100644 +--- a/arch/arm/boot/dts/broadcom/bcm283x.dtsi ++++ b/arch/arm/boot/dts/broadcom/bcm283x.dtsi +@@ -363,7 +363,7 @@ dsi0: dsi@7e209000 { + #size-cells = <0>; + #clock-cells = <1>; + +- clocks = <&clocks BCM2835_PLLA_DSI0>, ++ clocks = <&clocks BCM2835_PLLD_DSI0>, + <&clocks BCM2835_CLOCK_DSI0E>, + <&clocks BCM2835_CLOCK_DSI0P>; + clock-names = "phy", "escape", "pixel"; +@@ -415,7 +415,7 @@ pwm: pwm@7e20c000 { + reg = <0x7e20c000 0x28>; + clocks = <&clocks BCM2835_CLOCK_PWM>; + assigned-clocks = <&clocks BCM2835_CLOCK_PWM>; +- assigned-clock-rates = <10000000>; ++ assigned-clock-rates = <50000000>; + #pwm-cells = <3>; + status = "disabled"; + }; +@@ -478,6 +478,10 @@ usb: usb@7e980000 { + }; + + clocks { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <0>; + -+ sd_vcc_reg: sd_vcc_reg { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc-sd"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-boot-on; -+ enable-active-high; -+ gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>; -+ status = "okay"; -+ }; + /* The oscillator is the root of the clock tree. */ + clk_osc: clk-osc { + compatible = "fixed-clock"; +diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile +new file mode 100644 +index 0000000000000..6b60068b125c1 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/Makefile +@@ -0,0 +1,347 @@ ++# Overlays for the Raspberry Pi platform + -+ wl_on_reg: wl_on_reg { -+ compatible = "regulator-fixed"; -+ regulator-name = "wl-on-regulator"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ pinctrl-0 = <&wl_on_pins>; -+ pinctrl-names = "default"; ++dtb-$(CONFIG_ARCH_BCM2835) += overlay_map.dtb hat_map.dtb + -+ gpio = <&gio 28 GPIO_ACTIVE_HIGH>; ++dtbo-$(CONFIG_ARCH_BCM2835) += \ ++ act-led.dtbo \ ++ adafruit-st7735r.dtbo \ ++ adafruit18.dtbo \ ++ adau1977-adc.dtbo \ ++ adau7002-simple.dtbo \ ++ ads1015.dtbo \ ++ ads1115.dtbo \ ++ ads7846.dtbo \ ++ adv7282m.dtbo \ ++ adv728x-m.dtbo \ ++ akkordion-iqdacplus.dtbo \ ++ allo-boss-dac-pcm512x-audio.dtbo \ ++ allo-boss2-dac-audio.dtbo \ ++ allo-digione.dtbo \ ++ allo-katana-dac-audio.dtbo \ ++ allo-piano-dac-pcm512x-audio.dtbo \ ++ allo-piano-dac-plus-pcm512x-audio.dtbo \ ++ anyspi.dtbo \ ++ apds9960.dtbo \ ++ applepi-dac.dtbo \ ++ arducam-64mp.dtbo \ ++ arducam-pivariety.dtbo \ ++ at86rf233.dtbo \ ++ audioinjector-addons.dtbo \ ++ audioinjector-bare-i2s.dtbo \ ++ audioinjector-isolated-soundcard.dtbo \ ++ audioinjector-ultra.dtbo \ ++ audioinjector-wm8731-audio.dtbo \ ++ audiosense-pi.dtbo \ ++ audremap.dtbo \ ++ balena-fin.dtbo \ ++ bcm2712d0.dtbo \ ++ camera-mux-2port.dtbo \ ++ camera-mux-4port.dtbo \ ++ cap1106.dtbo \ ++ chipdip-dac.dtbo \ ++ cirrus-wm5102.dtbo \ ++ cm-swap-i2c0.dtbo \ ++ cma.dtbo \ ++ crystalfontz-cfa050_pi_m.dtbo \ ++ cutiepi-panel.dtbo \ ++ dacberry400.dtbo \ ++ dht11.dtbo \ ++ dionaudio-kiwi.dtbo \ ++ dionaudio-loco.dtbo \ ++ dionaudio-loco-v2.dtbo \ ++ disable-bt.dtbo \ ++ disable-bt-pi5.dtbo \ ++ disable-emmc2.dtbo \ ++ disable-wifi.dtbo \ ++ disable-wifi-pi5.dtbo \ ++ dpi18.dtbo \ ++ dpi18cpadhi.dtbo \ ++ dpi24.dtbo \ ++ draws.dtbo \ ++ dwc-otg.dtbo \ ++ dwc2.dtbo \ ++ edt-ft5406.dtbo \ ++ enc28j60.dtbo \ ++ enc28j60-spi2.dtbo \ ++ exc3000.dtbo \ ++ fbtft.dtbo \ ++ fe-pi-audio.dtbo \ ++ fsm-demo.dtbo \ ++ gc9a01.dtbo \ ++ ghost-amp.dtbo \ ++ goodix.dtbo \ ++ googlevoicehat-soundcard.dtbo \ ++ gpio-charger.dtbo \ ++ gpio-fan.dtbo \ ++ gpio-hog.dtbo \ ++ gpio-ir.dtbo \ ++ gpio-ir-tx.dtbo \ ++ gpio-key.dtbo \ ++ gpio-led.dtbo \ ++ gpio-no-bank0-irq.dtbo \ ++ gpio-no-irq.dtbo \ ++ gpio-poweroff.dtbo \ ++ gpio-shutdown.dtbo \ ++ hd44780-i2c-lcd.dtbo \ ++ hd44780-lcd.dtbo \ ++ hdmi-backlight-hwhack-gpio.dtbo \ ++ hifiberry-adc.dtbo \ ++ hifiberry-adc8x.dtbo \ ++ hifiberry-amp.dtbo \ ++ hifiberry-amp100.dtbo \ ++ hifiberry-amp3.dtbo \ ++ hifiberry-amp4pro.dtbo \ ++ hifiberry-dac.dtbo \ ++ hifiberry-dac8x.dtbo \ ++ hifiberry-dacplus.dtbo \ ++ hifiberry-dacplus-pro.dtbo \ ++ hifiberry-dacplus-std.dtbo \ ++ hifiberry-dacplusadc.dtbo \ ++ hifiberry-dacplusadcpro.dtbo \ ++ hifiberry-dacplusdsp.dtbo \ ++ hifiberry-dacplushd.dtbo \ ++ hifiberry-digi.dtbo \ ++ hifiberry-digi-pro.dtbo \ ++ highperi.dtbo \ ++ hy28a.dtbo \ ++ hy28b.dtbo \ ++ hy28b-2017.dtbo \ ++ i-sabre-q2m.dtbo \ ++ i2c-bcm2708.dtbo \ ++ i2c-fan.dtbo \ ++ i2c-gpio.dtbo \ ++ i2c-mux.dtbo \ ++ i2c-pwm-pca9685a.dtbo \ ++ i2c-rtc.dtbo \ ++ i2c-rtc-gpio.dtbo \ ++ i2c-sensor.dtbo \ ++ i2c0.dtbo \ ++ i2c0-pi5.dtbo \ ++ i2c1.dtbo \ ++ i2c1-pi5.dtbo \ ++ i2c2-pi5.dtbo \ ++ i2c3.dtbo \ ++ i2c3-pi5.dtbo \ ++ i2c4.dtbo \ ++ i2c5.dtbo \ ++ i2c6.dtbo \ ++ i2s-dac.dtbo \ ++ i2s-gpio28-31.dtbo \ ++ i2s-master-dac.dtbo \ ++ ilitek251x.dtbo \ ++ imx219.dtbo \ ++ imx258.dtbo \ ++ imx290.dtbo \ ++ imx296.dtbo \ ++ imx327.dtbo \ ++ imx378.dtbo \ ++ imx462.dtbo \ ++ imx477.dtbo \ ++ imx500.dtbo \ ++ imx500-pi5.dtbo \ ++ imx519.dtbo \ ++ imx708.dtbo \ ++ interludeaudio-analog.dtbo \ ++ interludeaudio-digital.dtbo \ ++ iqaudio-codec.dtbo \ ++ iqaudio-dac.dtbo \ ++ iqaudio-dacplus.dtbo \ ++ iqaudio-digi-wm8804-audio.dtbo \ ++ iqs550.dtbo \ ++ irs1125.dtbo \ ++ jedec-spi-nor.dtbo \ ++ justboom-both.dtbo \ ++ justboom-dac.dtbo \ ++ justboom-digi.dtbo \ ++ ltc294x.dtbo \ ++ max98357a.dtbo \ ++ maxtherm.dtbo \ ++ mbed-dac.dtbo \ ++ mcp23017.dtbo \ ++ mcp23s17.dtbo \ ++ mcp2515.dtbo \ ++ mcp2515-can0.dtbo \ ++ mcp2515-can1.dtbo \ ++ mcp251xfd.dtbo \ ++ mcp3008.dtbo \ ++ mcp3202.dtbo \ ++ mcp342x.dtbo \ ++ media-center.dtbo \ ++ merus-amp.dtbo \ ++ midi-uart0.dtbo \ ++ midi-uart0-pi5.dtbo \ ++ midi-uart1.dtbo \ ++ midi-uart1-pi5.dtbo \ ++ midi-uart2.dtbo \ ++ midi-uart2-pi5.dtbo \ ++ midi-uart3.dtbo \ ++ midi-uart3-pi5.dtbo \ ++ midi-uart4.dtbo \ ++ midi-uart4-pi5.dtbo \ ++ midi-uart5.dtbo \ ++ minipitft13.dtbo \ ++ miniuart-bt.dtbo \ ++ mipi-dbi-spi.dtbo \ ++ mlx90640.dtbo \ ++ mmc.dtbo \ ++ mz61581.dtbo \ ++ ov2311.dtbo \ ++ ov5647.dtbo \ ++ ov64a40.dtbo \ ++ ov7251.dtbo \ ++ ov9281.dtbo \ ++ papirus.dtbo \ ++ pca953x.dtbo \ ++ pcf857x.dtbo \ ++ pcie-32bit-dma.dtbo \ ++ pcie-32bit-dma-pi5.dtbo \ ++ pciex1-compat-pi5.dtbo \ ++ pibell.dtbo \ ++ pifacedigital.dtbo \ ++ pifi-40.dtbo \ ++ pifi-dac-hd.dtbo \ ++ pifi-dac-zero.dtbo \ ++ pifi-mini-210.dtbo \ ++ piglow.dtbo \ ++ pineboards-hat-ai.dtbo \ ++ pineboards-hatdrive-poe-plus.dtbo \ ++ piscreen.dtbo \ ++ piscreen2r.dtbo \ ++ pisound.dtbo \ ++ pisound-pi5.dtbo \ ++ pitft22.dtbo \ ++ pitft28-capacitive.dtbo \ ++ pitft28-resistive.dtbo \ ++ pitft35-resistive.dtbo \ ++ pps-gpio.dtbo \ ++ proto-codec.dtbo \ ++ pwm.dtbo \ ++ pwm-2chan.dtbo \ ++ pwm-gpio.dtbo \ ++ pwm-ir-tx.dtbo \ ++ pwm1.dtbo \ ++ qca7000.dtbo \ ++ qca7000-uart0.dtbo \ ++ ramoops.dtbo \ ++ ramoops-pi4.dtbo \ ++ rotary-encoder.dtbo \ ++ rpi-backlight.dtbo \ ++ rpi-codeczero.dtbo \ ++ rpi-dacplus.dtbo \ ++ rpi-dacpro.dtbo \ ++ rpi-digiampplus.dtbo \ ++ rpi-ft5406.dtbo \ ++ rpi-poe.dtbo \ ++ rpi-poe-plus.dtbo \ ++ rpi-sense.dtbo \ ++ rpi-sense-v2.dtbo \ ++ rpi-tv.dtbo \ ++ rra-digidac1-wm8741-audio.dtbo \ ++ sainsmart18.dtbo \ ++ sc16is750-i2c.dtbo \ ++ sc16is750-spi0.dtbo \ ++ sc16is752-i2c.dtbo \ ++ sc16is752-spi0.dtbo \ ++ sc16is752-spi1.dtbo \ ++ sdhost.dtbo \ ++ sdio.dtbo \ ++ sdio-pi5.dtbo \ ++ seeed-can-fd-hat-v1.dtbo \ ++ seeed-can-fd-hat-v2.dtbo \ ++ sh1106-spi.dtbo \ ++ si446x-spi0.dtbo \ ++ smi.dtbo \ ++ smi-dev.dtbo \ ++ smi-nand.dtbo \ ++ spi-gpio35-39.dtbo \ ++ spi-gpio40-45.dtbo \ ++ spi-rtc.dtbo \ ++ spi0-0cs.dtbo \ ++ spi0-1cs.dtbo \ ++ spi0-2cs.dtbo \ ++ spi1-1cs.dtbo \ ++ spi1-2cs.dtbo \ ++ spi1-3cs.dtbo \ ++ spi2-1cs.dtbo \ ++ spi2-1cs-pi5.dtbo \ ++ spi2-2cs.dtbo \ ++ spi2-2cs-pi5.dtbo \ ++ spi2-3cs.dtbo \ ++ spi3-1cs.dtbo \ ++ spi3-1cs-pi5.dtbo \ ++ spi3-2cs.dtbo \ ++ spi3-2cs-pi5.dtbo \ ++ spi4-1cs.dtbo \ ++ spi4-2cs.dtbo \ ++ spi5-1cs.dtbo \ ++ spi5-1cs-pi5.dtbo \ ++ spi5-2cs.dtbo \ ++ spi5-2cs-pi5.dtbo \ ++ spi6-1cs.dtbo \ ++ spi6-2cs.dtbo \ ++ ssd1306.dtbo \ ++ ssd1306-spi.dtbo \ ++ ssd1331-spi.dtbo \ ++ ssd1351-spi.dtbo \ ++ sunfounder-pipower3.dtbo \ ++ sunfounder-pironman5.dtbo \ ++ superaudioboard.dtbo \ ++ sx150x.dtbo \ ++ tc358743.dtbo \ ++ tc358743-audio.dtbo \ ++ tinylcd35.dtbo \ ++ tpm-slb9670.dtbo \ ++ tpm-slb9673.dtbo \ ++ uart0.dtbo \ ++ uart0-pi5.dtbo \ ++ uart1.dtbo \ ++ uart1-pi5.dtbo \ ++ uart2.dtbo \ ++ uart2-pi5.dtbo \ ++ uart3.dtbo \ ++ uart3-pi5.dtbo \ ++ uart4.dtbo \ ++ uart4-pi5.dtbo \ ++ uart5.dtbo \ ++ udrc.dtbo \ ++ ugreen-dabboard.dtbo \ ++ upstream.dtbo \ ++ upstream-pi4.dtbo \ ++ vc4-fkms-v3d.dtbo \ ++ vc4-fkms-v3d-pi4.dtbo \ ++ vc4-kms-dpi-generic.dtbo \ ++ vc4-kms-dpi-hyperpixel2r.dtbo \ ++ vc4-kms-dpi-hyperpixel4.dtbo \ ++ vc4-kms-dpi-hyperpixel4sq.dtbo \ ++ vc4-kms-dpi-panel.dtbo \ ++ vc4-kms-dsi-7inch.dtbo \ ++ vc4-kms-dsi-generic.dtbo \ ++ vc4-kms-dsi-ili9881-5inch.dtbo \ ++ vc4-kms-dsi-ili9881-7inch.dtbo \ ++ vc4-kms-dsi-lt070me05000.dtbo \ ++ vc4-kms-dsi-lt070me05000-v2.dtbo \ ++ vc4-kms-dsi-waveshare-800x480.dtbo \ ++ vc4-kms-dsi-waveshare-panel.dtbo \ ++ vc4-kms-kippah-7inch.dtbo \ ++ vc4-kms-v3d.dtbo \ ++ vc4-kms-v3d-pi4.dtbo \ ++ vc4-kms-v3d-pi5.dtbo \ ++ vc4-kms-vga666.dtbo \ ++ vga666.dtbo \ ++ vl805.dtbo \ ++ w1-gpio.dtbo \ ++ w1-gpio-pi5.dtbo \ ++ w1-gpio-pullup.dtbo \ ++ w1-gpio-pullup-pi5.dtbo \ ++ w5500.dtbo \ ++ watterott-display.dtbo \ ++ waveshare-can-fd-hat-mode-a.dtbo \ ++ waveshare-can-fd-hat-mode-b.dtbo \ ++ wittypi.dtbo \ ++ wm8960-soundcard.dtbo + -+ startup-delay-us = <150000>; -+ enable-active-high; -+ }; ++targets += dtbs dtbs_install ++targets += $(dtbo-y) + -+ clocks: clocks { -+ }; ++always-y := $(dtbo-y) ++clean-files := *.dtbo +diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README +new file mode 100644 +index 0000000000000..5c6344eb6f987 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/README +@@ -0,0 +1,5516 @@ ++Introduction ++============ + -+ cam1_clk: cam1_clk { -+ compatible = "fixed-clock"; -+ #clock-cells = <0>; -+ status = "disabled"; -+ }; ++This directory contains Device Tree overlays. Device Tree makes it possible ++to support many hardware configurations with a single kernel and without the ++need to explicitly load or blacklist kernel modules. Note that this isn't a ++"pure" Device Tree configuration (c.f. MACH_BCM2835) - some on-board devices ++are still configured by the board support code, but the intention is to ++eventually reach that goal. + -+ cam0_clk: cam0_clk { -+ compatible = "fixed-clock"; -+ #clock-cells = <0>; -+ status = "disabled"; -+ }; ++On Raspberry Pi, Device Tree usage is controlled from /boot/config.txt. By ++default, the Raspberry Pi kernel boots with device tree enabled. You can ++completely disable DT usage (for now) by adding: + -+ cam0_reg: cam0_reg { -+ compatible = "regulator-fixed"; -+ regulator-name = "cam0_reg"; -+ enable-active-high; -+ status = "okay"; -+ gpio = <&rp1_gpio 34 0>; // CD0_IO0_MICCLK, to MIPI 0 connector -+ }; ++ device_tree= + -+ cam1_reg: cam1_reg { -+ compatible = "regulator-fixed"; -+ regulator-name = "cam1_reg"; -+ enable-active-high; -+ status = "okay"; -+ gpio = <&rp1_gpio 46 0>; // CD1_IO0_MICCLK, to MIPI 1 connector -+ }; ++to your config.txt, which should cause your Pi to revert to the old way of ++doing things after a reboot. + -+ cam_dummy_reg: cam_dummy_reg { -+ compatible = "regulator-fixed"; -+ regulator-name = "cam-dummy-reg"; -+ status = "okay"; -+ }; ++In /boot you will find a .dtb for each base platform. This describes the ++hardware that is part of the Raspberry Pi board. The loader (start.elf and its ++siblings) selects the .dtb file appropriate for the platform by name, and reads ++it into memory. At this point, all of the optional interfaces (i2c, i2s, spi) ++are disabled, but they can be enabled using Device Tree parameters: + -+ dummy: dummy { -+ // A target for unwanted overlay fragments -+ }; ++ dtparam=i2c=on,i2s=on,spi=on + ++However, this shouldn't be necessary in many use cases because loading an ++overlay that requires one of those interfaces will cause it to be enabled ++automatically, and it is advisable to only enable interfaces if they are ++needed. + -+ // A few extra labels to keep overlays happy ++Configuring additional, optional hardware is done using Device Tree overlays ++(see below). + -+ i2c0if: i2c0if {}; -+ i2c0mux: i2c0mux {}; -+}; ++GPIO numbering uses the hardware pin numbering scheme (aka BCM scheme) and ++not the physical pin numbers. + -+rp1_target: &pcie2 { -+ brcm,enable-mps-rcb; -+ brcm,vdm-qos-map = <0xbbaa9888>; -+ aspm-no-l0s; -+ status = "okay"; -+}; ++raspi-config ++============ + -+// Add some labels to 2712 device ++The Advanced Options section of the raspi-config utility can enable and disable ++Device Tree use, as well as toggling the I2C and SPI interfaces. Note that it ++is possible to both enable an interface and blacklist the driver, if for some ++reason you should want to defer the loading. + -+// The system UART -+uart10: &_uart0 { status = "okay"; }; ++Modules ++======= + -+// The system SPI for the bootloader EEPROM -+spi10: &_spi0 { status = "okay"; }; ++As well as describing the hardware, Device Tree also gives enough information ++to allow suitable driver modules to be located and loaded, with the corollary ++that unneeded modules are not loaded. As a result it should be possible to ++remove lines from /etc/modules, and /etc/modprobe.d/raspi-blacklist.conf can ++have its contents deleted (or commented out). + -+i2c_rp1boot: &_i2c3 { }; ++Using Overlays ++============== + -+#include "rp1.dtsi" ++Overlays are loaded using the "dtoverlay" config.txt setting. As an example, ++consider I2C Real Time Clock drivers. In the pre-DT world these would be loaded ++by writing a magic string comprising a device identifier and an I2C address to ++a special file in /sys/class/i2c-adapter, having first loaded the driver for ++the I2C interface and the RTC device - something like this: + -+&rp1 { -+ // PCIe address space layout: -+ // 00_00000000-00_00xxxxxx = RP1 peripherals -+ // 10_00000000-1x_xxxxxxxx = up to 64GB system RAM ++ modprobe i2c-bcm2835 ++ modprobe rtc-ds1307 ++ echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device + -+ // outbound access aimed at PCIe 0_00xxxxxx -> RP1 c0_40xxxxxx -+ // This is the RP1 peripheral space -+ ranges = <0xc0 0x40000000 -+ 0x02000000 0x00 0x00000000 -+ 0x00 0x00400000>; ++With DT enabled, this becomes a line in config.txt: + -+ dma-ranges = -+ // inbound RP1 1x_xxxxxxxx -> PCIe 1x_xxxxxxxx -+ <0x10 0x00000000 -+ 0x43000000 0x10 0x00000000 -+ 0x10 0x00000000>, ++ dtoverlay=i2c-rtc,ds1307 + -+ // inbound RP1 c0_40xxxxxx -> PCIe 00_00xxxxxx -+ // This allows the RP1 DMA controller to address RP1 hardware -+ <0xc0 0x40000000 -+ 0x02000000 0x0 0x00000000 -+ 0x0 0x00400000>, ++This causes the file /boot/overlays/i2c-rtc.dtbo to be loaded and a "node" ++describing the DS1307 I2C device to be added to the Device Tree for the Pi. By ++default it usees address 0x68, but this can be modified with an additional DT ++parameter: + -+ // inbound RP1 0x_xxxxxxxx -> PCIe 1x_xxxxxxxx -+ <0x00 0x00000000 -+ 0x02000000 0x10 0x00000000 -+ 0x10 0x00000000>; -+}; ++ dtoverlay=i2c-rtc,ds1307,addr=0x68 + -+// Expose RP1 nodes as system nodes with labels ++Parameters usually have default values, although certain parameters are ++mandatory. See the list of overlays below for a description of the parameters ++and their defaults. + -+&rp1_dma { -+ status = "okay"; -+}; ++Making new Overlays based on existing Overlays ++============================================== + -+&rp1_eth { -+ status = "okay"; -+ phy-handle = <&phy1>; -+ phy-reset-gpios = <&rp1_gpio 32 GPIO_ACTIVE_LOW>; -+ phy-reset-duration = <5>; ++Recent overlays have been designed in a more general way, so that they can be ++adapted to hardware by changing their parameters. When you have additional ++hardware with more than one device of a kind, you end up using the same overlay ++multiple times with other parameters, e.g. + -+ phy1: ethernet-phy@1 { -+ reg = <0x1>; -+ brcm,powerdown-enable; -+ }; -+}; ++ # 2 CAN FD interfaces on spi but with different pins ++ dtoverlay=mcp251xfd,spi0-0,interrupt=25 ++ dtoverlay=mcp251xfd,spi0-1,interrupt=24 + -+gpio: &rp1_gpio { -+ status = "okay"; -+}; ++ # a realtime clock on i2c ++ dtoverlay=i2c-rtc,pcf85063 + -+aux: &dummy {}; ++While this approach does work, it requires knowledge about the hardware design. ++It is more feasible to simplify things for the end user by providing a single ++overlay as it is done the traditional way. + -+&rp1_usb0 { -+ pinctrl-0 = <&usb_vbus_pins>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; ++A new overlay can be generated by using ovmerge utility. ++https://github.com/raspberrypi/utils/blob/master/ovmerge/ovmerge + -+&rp1_usb1 { -+ status = "okay"; -+}; ++To generate an overlay for the above configuration we pass the configuration ++to ovmerge and add the -c flag. + -+#include "bcm2712-rpi.dtsi" ++ ovmerge -c mcp251xfd-overlay.dts,spi0-0,interrupt=25 \ ++ mcp251xfd-overlay.dts,spi0-1,interrupt=24 \ ++ i2c-rtc-overlay.dts,pcf85063 \ ++ >> merged-overlay.dts + -+i2c_csi_dsi0: &i2c6 { // Note: This is for MIPI0 connector only -+ pinctrl-0 = <&rp1_i2c6_38_39>; -+ pinctrl-names = "default"; -+ clock-frequency = <100000>; -+}; ++The -c option writes the command above as a comment into the overlay as ++a marker that this overlay is generated and how it was generated. ++After compiling the overlay it can be loaded in a single line. + -+i2c_csi_dsi1: &i2c4 { // Note: This is for MIPI1 connector only -+ pinctrl-0 = <&rp1_i2c4_40_41>; -+ pinctrl-names = "default"; -+ clock-frequency = <100000>; -+}; ++ dtoverlay=merged + -+i2c_csi_dsi: &i2c_csi_dsi1 { }; // An alias for compatibility ++It does the same as the original configuration but without parameters. + -+csi0: &rp1_csi0 { }; -+csi1: &rp1_csi1 { }; -+dsi0: &rp1_dsi0 { }; -+dsi1: &rp1_dsi1 { }; -+dpi: &rp1_dpi { }; -+vec: &rp1_vec { }; -+dpi_gpio0: &rp1_dpi_24bit_gpio0 { }; -+dpi_gpio1: &rp1_dpi_24bit_gpio2 { }; -+dpi_18bit_cpadhi_gpio0: &rp1_dpi_18bit_cpadhi_gpio0 { }; -+dpi_18bit_cpadhi_gpio2: &rp1_dpi_18bit_cpadhi_gpio2 { }; -+dpi_18bit_gpio0: &rp1_dpi_18bit_gpio0 { }; -+dpi_18bit_gpio2: &rp1_dpi_18bit_gpio2 { }; -+dpi_16bit_cpadhi_gpio0: &rp1_dpi_16bit_cpadhi_gpio0 { }; -+dpi_16bit_cpadhi_gpio2: &rp1_dpi_16bit_cpadhi_gpio2 { }; -+dpi_16bit_gpio0: &rp1_dpi_16bit_gpio0 { }; -+dpi_16bit_gpio2: &rp1_dpi_16bit_gpio2 { }; ++The Overlay and Parameter Reference ++=================================== + -+/* Add the IOMMUs for some RP1 bus masters */ ++N.B. When editing this file, please preserve the indentation levels to make it ++simple to parse programmatically. NO HARD TABS. + -+&csi0 { -+ iommus = <&iommu5>; -+}; + -+&csi1 { -+ iommus = <&iommu5>; -+}; ++Name: ++Info: Configures the base Raspberry Pi hardware ++Load: ++Params: ++ act_led_trigger Choose which activity the LED tracks. ++ Use "heartbeat" for a nice load indicator. ++ (default "mmc") + -+&dsi0 { -+ iommus = <&iommu5>; -+}; ++ act_led_activelow Set to "on" to invert the sense of the LED ++ (default "off") ++ N.B. For Pi 3B, 3B+, 3A+ and 4B, use the act-led ++ overlay. + -+&dsi1 { -+ iommus = <&iommu5>; -+}; ++ act_led_gpio Set which GPIO to use for the activity LED ++ (in case you want to connect it to an external ++ device) ++ (default "16" on a non-Plus board, "47" on a ++ Plus or Pi 2) ++ N.B. For Pi 3B, 3B+, 3A+ and 4B, use the act-led ++ overlay. + -+&dpi { -+ iommus = <&iommu5>; -+}; ++ ant1 Select antenna 1 (default). CM4/5 only. + -+&vec { -+ iommus = <&iommu5>; -+}; ++ ant2 Select antenna 2. CM4/5 only. + -+&ddc0 { -+ status = "disabled"; -+}; ++ noant Disable both antennas. CM4/5 only. + -+&ddc1 { -+ status = "disabled"; -+}; ++ audio Set to "on" to enable the onboard ALSA audio ++ interface (default "off") + -+&hdmi0 { -+ clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>; -+ clock-names = "hdmi", "bvb", "audio", "cec"; -+ status = "disabled"; -+}; ++ axiperf Set to "on" to enable the AXI bus performance ++ monitors. ++ See /sys/kernel/debug/raspberrypi_axi_monitor ++ for the results. + -+&hdmi1 { -+ clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>; -+ clock-names = "hdmi", "bvb", "audio", "cec"; -+ status = "disabled"; -+}; ++ bdaddr Set an alternative Bluetooth address (BDADDR). ++ The value should be a 6-byte hexadecimal value, ++ with or without colon separators, written least- ++ significant-byte first. For example, ++ bdaddr=06:05:04:03:02:01 ++ will set the BDADDR to 01:02:03:04:05:06. + -+&hvs { -+ clocks = <&firmware_clocks 4>, <&firmware_clocks 16>; -+ clock-names = "core", "disp"; -+}; ++ button_debounce Set the debounce delay (in ms) on the power/ ++ shutdown button (default 50ms) + -+&mop { -+ status = "disabled"; -+}; ++ cam0_reg Controls CAM 0 regulator. ++ Disabled by default on CM1 & 3. ++ Enabled by default on all other boards. + -+&moplet { -+ status = "disabled"; -+}; ++ cam0_reg_gpio Set GPIO for CAM 0 regulator. ++ NB override switches to the normal GPIO driver, ++ even if the original was on the GPIO expander. + -+&pixelvalve0 { -+ status = "disabled"; -+}; ++ cam1_reg Controls CAM 1 regulator. ++ Disabled by default on CM1 & 3. ++ Enabled by default on all other boards. + -+&pixelvalve1 { -+ status = "disabled"; -+}; ++ cam1_reg_gpio Set GPIO for CAM 1 regulator. ++ NB override switches to the normal GPIO driver, ++ even if the original was on the GPIO expander. + -+&disp_intr { -+ status = "disabled"; -+}; ++ cam0_sync Enable a GPIO to reflect frame sync from CSI0, ++ going high on frame start, and low on frame end. + -+/* SDIO1 is used to drive the SD card */ -+&sdio1 { -+ pinctrl-0 = <&emmc_sd_pulls>, <&emmc_aon_cd_pins>; -+ pinctrl-names = "default"; -+ vqmmc-supply = <&sd_io_1v8_reg>; -+ vmmc-supply = <&sd_vcc_reg>; -+ bus-width = <4>; -+ sd-uhs-sdr50; -+ sd-uhs-ddr50; -+ sd-uhs-sdr104; -+ cd-gpios = <&gio_aon 5 GPIO_ACTIVE_LOW>; -+ //no-1-8-v; -+ status = "okay"; -+}; ++ cam0_sync_inverted Enable a GPIO to reflect frame sync from CSI0 ++ going low on frame start, and high on frame end. + -+&pinctrl_aon { -+ emmc_aon_cd_pins: emmc_aon_cd_pins { -+ function = "sd_card_g"; -+ pins = "aon_gpio5"; -+ bias-pull-up; -+ }; ++ cam1_sync Enable a GPIO to reflect frame sync from CSI1, ++ going high on frame start, and low on frame end. + -+ /* Slight hack - only one PWM pin (status LED) is usable */ -+ aon_pwm_1pin: aon_pwm_1pin { -+ function = "aon_pwm"; -+ pins = "aon_gpio9"; -+ }; -+}; ++ cam1_sync_inverted Enable a GPIO to reflect frame sync from CSI1 ++ going low on frame start, and high on frame end. + -+&pinctrl { -+ pwr_button_pins: pwr_button_pins { -+ function = "gpio"; -+ pins = "gpio20"; -+ bias-pull-up; -+ }; ++ cooling_fan Enables the Pi 5 cooling fan (enabled ++ automatically by the firmware) + -+ wl_on_pins: wl_on_pins { -+ function = "gpio"; -+ pins = "gpio28"; -+ }; ++ drm_fb0_rp1_dpi Assign /dev/fb0 to the RP1 DPI output + -+ bt_shutdown_pins: bt_shutdown_pins { -+ function = "gpio"; -+ pins = "gpio29"; -+ }; ++ drm_fb0_rp1_dsi0 Assign /dev/fb0 to the RP1 DSI0 output + -+ emmc_sd_pulls: emmc_sd_pulls { -+ pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3"; -+ bias-pull-up; -+ }; -+}; ++ drm_fb0_rp1_dsi1 Assign /dev/fb0 to the RP1 DSI1 output + -+/* uarta communicates with the BT module */ -+&uarta { -+ uart-has-rtscts; -+ auto-flow-control; -+ status = "okay"; -+ clock-frequency = <96000000>; -+ pinctrl-0 = <&uarta_24_pins &bt_shutdown_pins>; -+ pinctrl-names = "default"; ++ drm_fb0_vc4 Assign /dev/fb0 to the vc4 outputs + -+ bluetooth: bluetooth { -+ compatible = "brcm,bcm43438-bt"; -+ max-speed = <3000000>; -+ shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>; -+ local-bd-address = [ 00 00 00 00 00 00 ]; -+ }; -+}; ++ drm_fb1_rp1_dpi Assign /dev/fb1 to the RP1 DPI output + -+&i2c_rp1boot { -+ clock-frequency = <400000>; -+ pinctrl-0 = <&i2c3_m4_agpio0_pins>; -+ pinctrl-names = "default"; -+}; ++ drm_fb1_rp1_dsi0 Assign /dev/fb1 to the RP1 DSI0 output + -+/ { -+ chosen: chosen { -+ bootargs = "reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe"; -+ stdout-path = "serial10:115200n8"; -+ }; ++ drm_fb1_rp1_dsi1 Assign /dev/fb1 to the RP1 DSI1 output + -+ fan: cooling_fan { -+ status = "disabled"; -+ compatible = "pwm-fan"; -+ #cooling-cells = <2>; -+ cooling-min-state = <0>; -+ cooling-max-state = <3>; -+ cooling-levels = <0 75 125 175 250>; -+ pwms = <&rp1_pwm1 3 41566 PWM_POLARITY_INVERTED>; -+ rpm-regmap = <&rp1_pwm1>; -+ rpm-offset = <0x3c>; -+ }; ++ drm_fb1_vc4 Assign /dev/fb1 to the vc4 outputs + -+ pwr_button { -+ compatible = "gpio-keys"; ++ drm_fb2_rp1_dpi Assign /dev/fb2 to the RP1 DPI output + -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwr_button_pins>; -+ status = "okay"; ++ drm_fb2_rp1_dsi0 Assign /dev/fb2 to the RP1 DSI0 output + -+ pwr_key: pwr { -+ label = "pwr_button"; -+ // linux,code = <205>; // KEY_SUSPEND -+ linux,code = <116>; // KEY_POWER -+ gpios = <&gio 20 GPIO_ACTIVE_LOW>; -+ debounce-interval = <50>; // ms -+ }; -+ }; -+}; ++ drm_fb2_rp1_dsi1 Assign /dev/fb2 to the RP1 DSI1 output + -+&usb { -+ power-domains = <&power RPI_POWER_DOMAIN_USB>; -+}; ++ drm_fb2_vc4 Assign /dev/fb2 to the vc4 outputs + -+/* SDIO2 drives the WLAN interface */ -+&sdio2 { -+ pinctrl-0 = <&sdio2_30_pins>; -+ pinctrl-names = "default"; -+ bus-width = <4>; -+ vmmc-supply = <&wl_on_reg>; -+ sd-uhs-ddr50; -+ non-removable; -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ wifi: wifi@1 { -+ reg = <1>; -+ compatible = "brcm,bcm4329-fmac"; -+ local-mac-address = [00 00 00 00 00 00]; -+ }; -+}; ++ eee Enable Energy Efficient Ethernet support for ++ compatible devices (default "on"). See also ++ "tx_lpi_timer". Pi3B+ only. + -+&rpivid { -+ status = "okay"; -+}; ++ eth_downshift_after Set the number of auto-negotiation failures ++ after which the 1000Mbps modes are disabled. ++ Legal values are 2, 3, 4, 5 and 0, where ++ 0 means never downshift (default 2). Pi3B+ only. + -+&pinctrl { -+ spi10_gpio2: spi10_gpio2 { -+ function = "vc_spi0"; -+ pins = "gpio2", "gpio3", "gpio4"; -+ bias-disable; -+ }; ++ eth_led0 Set mode of LED0 - amber on Pi3B+ (default "1"), ++ green on Pi4/5 (default "0"). ++ The legal values are: + -+ spi10_cs_gpio1: spi10_cs_gpio1 { -+ function = "gpio"; -+ pins = "gpio1"; -+ bias-pull-up; -+ }; -+}; ++ Pi3B+ + -+spi10_pins: &spi10_gpio2 {}; -+spi10_cs_pins: &spi10_cs_gpio1 {}; ++ 0=link/activity 1=link1000/activity ++ 2=link100/activity 3=link10/activity ++ 4=link100/1000/activity 5=link10/1000/activity ++ 6=link10/100/activity 14=off 15=on + -+&spi10 { -+ pinctrl-names = "default"; -+ cs-gpios = <&gio 1 1>; -+ pinctrl-0 = <&spi10_pins &spi10_cs_pins>; ++ Pi4/5 + -+ spidev10: spidev@0 { -+ compatible = "spidev"; -+ reg = <0>; /* CE0 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <20000000>; -+ status = "okay"; -+ }; -+}; ++ 0=Speed/Activity 1=Speed ++ 2=Flash activity 3=FDX ++ 4=Off 5=On ++ 6=Alt 7=Speed/Flash ++ 8=Link 9=Activity + -+// ============================================= -+// Board specific stuff here ++ eth_led1 Set mode of LED1 - green on Pi3B+ (default "6"), ++ amber on Pi4/5 (default "8"). See eth_led0 for ++ legal values. + -+&gio_aon { -+ // Don't use GIO_AON as an interrupt controller because it will -+ // clash with the firmware monitoring the PMIC interrupt via the VPU. ++ eth_max_speed Set the maximum speed a link is allowed ++ to negotiate. Legal values are 10, 100 and ++ 1000 (default 1000). Pi3B+ only. + -+ /delete-property/ interrupt-controller; -+}; ++ fan_temp0 Temperature threshold (in millicelcius) for ++ 1st cooling level (default 50000). Pi5 only. ++ fan_temp0_hyst Temperature hysteresis (in millicelcius) for ++ 1st cooling level (default 5000). Pi5 only. ++ fan_temp0_speed Fan PWM setting for 1st cooling level (0-255, ++ default 75). Pi5 only. ++ fan_temp1 Temperature threshold (in millicelcius) for ++ 2nd cooling level (default 60000). Pi5 only. ++ fan_temp1_hyst Temperature hysteresis (in millicelcius) for ++ 2nd cooling level (default 5000). Pi5 only. ++ fan_temp1_speed Fan PWM setting for 2nd cooling level (0-255, ++ default 125). Pi5 only. ++ fan_temp2 Temperature threshold (in millicelcius) for ++ 3rd cooling level (default 67500). Pi5 only. ++ fan_temp2_hyst Temperature hysteresis (in millicelcius) for ++ 3rd cooling level (default 5000). Pi5 only. ++ fan_temp2_speed Fan PWM setting for 3rd cooling level (0-255, ++ default 175). Pi5 only. ++ fan_temp3 Temperature threshold (in millicelcius) for ++ 4th cooling level (default 75000). Pi5 only. ++ fan_temp3_hyst Temperature hysteresis (in millicelcius) for ++ 4th cooling level (default 5000). Pi5 only. ++ fan_temp3_speed Fan PWM setting for 4th cooling level (0-255, ++ default 250). Pi5 only. + -+&main_aon_irq { -+ // Don't use the MAIN_AON_IRQ interrupt controller because it will -+ // clash with the firmware monitoring the PMIC interrupt via the VPU. ++ hdmi Set to "off" to disable the HDMI interface ++ (default "on") + -+ status = "disabled"; -+}; ++ i2c An alias for i2c_arm + -+&rp1_pwm1 { -+ status = "disabled"; -+ pinctrl-0 = <&rp1_pwm1_gpio45>; -+ pinctrl-names = "default"; -+}; ++ i2c_arm Set to "on" to enable the ARM's i2c interface ++ (default "off") + -+&thermal_trips { -+ cpu_tepid: cpu-tepid { -+ temperature = <50000>; -+ hysteresis = <5000>; -+ type = "active"; -+ }; ++ i2c_arm_baudrate Set the baudrate of the ARM's i2c interface ++ (default "100000") + -+ cpu_warm: cpu-warm { -+ temperature = <60000>; -+ hysteresis = <5000>; -+ type = "active"; -+ }; ++ i2c_baudrate An alias for i2c_arm_baudrate + -+ cpu_hot: cpu-hot { -+ temperature = <67500>; -+ hysteresis = <5000>; -+ type = "active"; -+ }; ++ i2c_csi_dsi Set to "on" to enable the i2c_csi_dsi interface + -+ cpu_vhot: cpu-vhot { -+ temperature = <75000>; -+ hysteresis = <5000>; -+ type = "active"; -+ }; -+}; ++ i2c_csi_dsi0 Set to "on" to enable the i2c_csi_dsi0 interface + -+&cooling_maps { -+ tepid { -+ trip = <&cpu_tepid>; -+ cooling-device = <&fan 1 1>; -+ }; ++ i2c_csi_dsi1 Set to "on" to enable the i2c_csi_dsi1 interface + -+ warm { -+ trip = <&cpu_warm>; -+ cooling-device = <&fan 2 2>; -+ }; ++ i2c_vc Set to "on" to enable the i2c interface ++ usually reserved for the VideoCore processor ++ (default "off") + -+ hot { -+ trip = <&cpu_hot>; -+ cooling-device = <&fan 3 3>; -+ }; ++ i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface ++ (default "100000") + -+ vhot { -+ trip = <&cpu_vhot>; -+ cooling-device = <&fan 4 4>; -+ }; ++ i2s Set to "on" to enable the i2s interface ++ (default "off") + -+ melt { -+ trip = <&cpu_crit>; -+ cooling-device = <&fan 4 4>; -+ }; -+}; ++ i2s_dma4 Use to enable 40-bit DMA on the i2s interface ++ (the assigned value doesn't matter) ++ (2711 only) + -+&gio { -+ // The GPIOs above 35 are not used on Pi 5, so shrink the upper bank -+ // to reduce the clutter in gpioinfo/pinctrl -+ brcm,gpio-bank-widths = <32 4>; ++ krnbt Set to "off" to disable autoprobing of Bluetooth ++ driver without need of hciattach/btattach ++ (default "on") + -+ gpio-line-names = -+ "-", // GPIO_000 -+ "2712_BOOT_CS_N", // GPIO_001 -+ "2712_BOOT_MISO", // GPIO_002 -+ "2712_BOOT_MOSI", // GPIO_003 -+ "2712_BOOT_SCLK", // GPIO_004 -+ "-", // GPIO_005 -+ "-", // GPIO_006 -+ "-", // GPIO_007 -+ "-", // GPIO_008 -+ "-", // GPIO_009 -+ "-", // GPIO_010 -+ "-", // GPIO_011 -+ "-", // GPIO_012 -+ "-", // GPIO_013 -+ "PCIE_SDA", // GPIO_014 -+ "PCIE_SCL", // GPIO_015 -+ "-", // GPIO_016 -+ "-", // GPIO_017 -+ "-", // GPIO_018 -+ "-", // GPIO_019 -+ "PWR_GPIO", // GPIO_020 -+ "2712_G21_FS", // GPIO_021 -+ "-", // GPIO_022 -+ "-", // GPIO_023 -+ "BT_RTS", // GPIO_024 -+ "BT_CTS", // GPIO_025 -+ "BT_TXD", // GPIO_026 -+ "BT_RXD", // GPIO_027 -+ "WL_ON", // GPIO_028 -+ "BT_ON", // GPIO_029 -+ "WIFI_SDIO_CLK", // GPIO_030 -+ "WIFI_SDIO_CMD", // GPIO_031 -+ "WIFI_SDIO_D0", // GPIO_032 -+ "WIFI_SDIO_D1", // GPIO_033 -+ "WIFI_SDIO_D2", // GPIO_034 -+ "WIFI_SDIO_D3"; // GPIO_035 -+}; ++ krnbt_baudrate Set the baudrate of the PL011 UART when used ++ with krnbt=on + -+&gio_aon { -+ gpio-line-names = -+ "RP1_SDA", // AON_GPIO_00 -+ "RP1_SCL", // AON_GPIO_01 -+ "RP1_RUN", // AON_GPIO_02 -+ "SD_IOVDD_SEL", // AON_GPIO_03 -+ "SD_PWR_ON", // AON_GPIO_04 -+ "SD_CDET_N", // AON_GPIO_05 -+ "SD_FLG_N", // AON_GPIO_06 -+ "-", // AON_GPIO_07 -+ "2712_WAKE", // AON_GPIO_08 -+ "2712_STAT_LED", // AON_GPIO_09 -+ "-", // AON_GPIO_10 -+ "-", // AON_GPIO_11 -+ "PMIC_INT", // AON_GPIO_12 -+ "UART_TX_FS", // AON_GPIO_13 -+ "UART_RX_FS", // AON_GPIO_14 -+ "-", // AON_GPIO_15 -+ "-", // AON_GPIO_16 ++ nvme Alias for "pciex1" (2712 only) + -+ // Pad bank0 out to 32 entries -+ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ++ nvmem_cust_rw Allow read/write access to customer otp + -+ "HDMI0_SCL", // AON_SGPIO_00 -+ "HDMI0_SDA", // AON_SGPIO_01 -+ "HDMI1_SCL", // AON_SGPIO_02 -+ "HDMI1_SDA", // AON_SGPIO_03 -+ "PMIC_SCL", // AON_SGPIO_04 -+ "PMIC_SDA"; // AON_SGPIO_05 ++ nvmem_mac_rw Allow read/write access to mac addresses otp + -+ rp1_run_hog { -+ gpio-hog; -+ gpios = <2 GPIO_ACTIVE_HIGH>; -+ output-high; -+ line-name = "RP1 RUN pin"; -+ }; -+}; ++ nvmem_priv_rw Allow read/write access to customer private otp + -+&rp1_gpio { -+ gpio-line-names = -+ "ID_SDA", // GPIO0 -+ "ID_SCL", // GPIO1 -+ "GPIO2", // GPIO2 -+ "GPIO3", // GPIO3 -+ "GPIO4", // GPIO4 -+ "GPIO5", // GPIO5 -+ "GPIO6", // GPIO6 -+ "GPIO7", // GPIO7 -+ "GPIO8", // GPIO8 -+ "GPIO9", // GPIO9 -+ "GPIO10", // GPIO10 -+ "GPIO11", // GPIO11 -+ "GPIO12", // GPIO12 -+ "GPIO13", // GPIO13 -+ "GPIO14", // GPIO14 -+ "GPIO15", // GPIO15 -+ "GPIO16", // GPIO16 -+ "GPIO17", // GPIO17 -+ "GPIO18", // GPIO18 -+ "GPIO19", // GPIO19 -+ "GPIO20", // GPIO20 -+ "GPIO21", // GPIO21 -+ "GPIO22", // GPIO22 -+ "GPIO23", // GPIO23 -+ "GPIO24", // GPIO24 -+ "GPIO25", // GPIO25 -+ "GPIO26", // GPIO26 -+ "GPIO27", // GPIO27 ++ pcie Set to "off" to disable the PCIe interface ++ (default "on") ++ (2711 only, but not applicable on CM4S) ++ N.B. USB-A ports on 4B are subsequently disabled + -+ "PCIE_RP1_WAKE", // GPIO28 -+ "FAN_TACH", // GPIO29 -+ "HOST_SDA", // GPIO30 -+ "HOST_SCL", // GPIO31 -+ "ETH_RST_N", // GPIO32 -+ "-", // GPIO33 ++ pcie_tperst_clk_ms Add N milliseconds between PCIe reference clock ++ activation and PERST# deassertion ++ (CM4 and 2712, default "0") + -+ "CD0_IO0_MICCLK", // GPIO34 -+ "CD0_IO0_MICDAT0", // GPIO35 -+ "RP1_PCIE_CLKREQ_N", // GPIO36 -+ "-", // GPIO37 -+ "CD0_SDA", // GPIO38 -+ "CD0_SCL", // GPIO39 -+ "CD1_SDA", // GPIO40 -+ "CD1_SCL", // GPIO41 -+ "USB_VBUS_EN", // GPIO42 -+ "USB_OC_N", // GPIO43 -+ "RP1_STAT_LED", // GPIO44 -+ "FAN_PWM", // GPIO45 -+ "CD1_IO0_MICCLK", // GPIO46 -+ "2712_WAKE", // GPIO47 -+ "CD1_IO1_MICDAT1", // GPIO48 -+ "EN_MAX_USB_CUR", // GPIO49 -+ "-", // GPIO50 -+ "-", // GPIO51 -+ "-", // GPIO52 -+ "-"; // GPIO53 ++ pciex1 Set to "on" to enable the external PCIe link ++ (2712 only, default "off") + -+ usb_vbus_pins: usb_vbus_pins { -+ function = "vbus1"; -+ pins = "gpio42", "gpio43"; -+ }; -+}; ++ pciex1_gen Sets the PCIe "GEN"/speed for the external PCIe ++ link (2712 only, default "2") + -+/ { -+ aliases: aliases { -+ blconfig = &blconfig; -+ blpubkey = &blpubkey; -+ bluetooth = &bluetooth; -+ console = &uart10; -+ ethernet0 = &rp1_eth; -+ wifi0 = &wifi; -+ fb = &fb; -+ mailbox = &mailbox; -+ mmc0 = &sdio1; -+ uart0 = &uart0; -+ uart1 = &uart1; -+ uart2 = &uart2; -+ uart3 = &uart3; -+ uart4 = &uart4; -+ uart10 = &uart10; -+ serial0 = &uart0; -+ serial1 = &uart1; -+ serial2 = &uart2; -+ serial3 = &uart3; -+ serial4 = &uart4; -+ serial10 = &uart10; -+ i2c = &i2c_arm; -+ i2c0 = &i2c0; -+ i2c1 = &i2c1; -+ i2c2 = &i2c2; -+ i2c3 = &i2c3; -+ i2c4 = &i2c4; -+ i2c5 = &i2c5; -+ i2c6 = &i2c6; -+ i2c10 = &i2c_rp1boot; -+ // Bit-bashed i2c_gpios start at 10 -+ spi0 = &spi0; -+ spi1 = &spi1; -+ spi2 = &spi2; -+ spi3 = &spi3; -+ spi4 = &spi4; -+ spi5 = &spi5; -+ spi10 = &spi10; -+ gpio0 = &gpio; -+ gpio1 = &gio; -+ gpio2 = &gio_aon; -+ gpio3 = &pinctrl; -+ gpio4 = &pinctrl_aon; -+ usb0 = &rp1_usb0; -+ usb1 = &rp1_usb1; -+ drm-dsi1 = &dsi0; -+ drm-dsi2 = &dsi1; -+ }; ++ pciex1_no_l0s Set to "on" to disable ASPM L0s on the external ++ PCIe link for devices that have broken ++ implementations (2712 only, default "off") + -+ __overrides__ { -+ bdaddr = <&bluetooth>, "local-bd-address["; -+ button_debounce = <&pwr_key>, "debounce-interval:0"; -+ cooling_fan = <&fan>, "status", <&rp1_pwm1>, "status"; -+ uart0_console = <&uart0>,"status", <&aliases>, "console=",&uart0; -+ i2c0 = <&i2c0>, "status"; -+ i2c1 = <&i2c1>, "status"; -+ i2c = <&i2c1>, "status"; -+ i2c_arm = <&i2c_arm>, "status"; -+ i2c_vc = <&i2c_vc>, "status"; -+ i2c_csi_dsi = <&i2c_csi_dsi>, "status"; -+ i2c_csi_dsi0 = <&i2c_csi_dsi0>, "status"; -+ i2c_csi_dsi1 = <&i2c_csi_dsi1>, "status"; -+ i2c0_baudrate = <&i2c0>, "clock-frequency:0"; -+ i2c1_baudrate = <&i2c1>, "clock-frequency:0"; -+ i2c_baudrate = <&i2c_arm>, "clock-frequency:0"; -+ i2c_arm_baudrate = <&i2c_arm>, "clock-frequency:0"; -+ i2c_vc_baudrate = <&i2c_vc>, "clock-frequency:0"; -+ krnbt = <&bluetooth>, "status"; -+ nvme = <&pciex1>, "status"; -+ pciex1 = <&pciex1>, "status"; -+ pciex1_gen = <&pciex1> , "max-link-speed:0"; -+ pciex1_no_l0s = <&pciex1>, "aspm-no-l0s?"; -+ pciex1_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0"; -+ pcie_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0"; -+ random = <&random>, "status"; -+ rtc = <&rpi_rtc>, "status"; -+ rtc_bbat_vchg = <&rpi_rtc>, "trickle-charge-microvolt:0"; -+ sd_cqe = <&sdio1>, "supports-cqe?"; -+ spi = <&spi0>, "status"; -+ suspend = <&pwr_key>, "linux,code:0=205"; -+ uart0 = <&uart0>, "status"; -+ wifiaddr = <&wifi>, "local-mac-address["; ++ pciex1_tperst_clk_ms Alias for pcie_tperst_clk_ms ++ (2712 only, default "0") + -+ act_led_gpio = <&led_act>,"gpios:4",<&led_act>,"gpios:0=",<&gpio>; -+ act_led_activelow = <&led_act>,"gpios:8"; -+ act_led_trigger = <&led_act>, "linux,default-trigger"; -+ pwr_led_gpio = <&led_pwr>,"gpios:4"; -+ pwr_led_activelow = <&led_pwr>, "gpios:8"; -+ pwr_led_trigger = <&led_pwr>, "linux,default-trigger"; -+ eth_led0 = <&phy1>,"led-modes:0"; -+ eth_led1 = <&phy1>,"led-modes:4"; -+ drm_fb0_rp1_dsi0 = <&aliases>, "drm-fb0=",&dsi0; -+ drm_fb0_rp1_dsi1 = <&aliases>, "drm-fb0=",&dsi1; -+ drm_fb0_rp1_dpi = <&aliases>, "drm-fb0=",&dpi; -+ drm_fb0_vc4 = <&aliases>, "drm-fb0=",&vc4; -+ drm_fb1_rp1_dsi0 = <&aliases>, "drm-fb1=",&dsi0; -+ drm_fb1_rp1_dsi1 = <&aliases>, "drm-fb1=",&dsi1; -+ drm_fb1_rp1_dpi = <&aliases>, "drm-fb1=",&dpi; -+ drm_fb1_vc4 = <&aliases>, "drm-fb1=",&vc4; -+ drm_fb2_rp1_dsi0 = <&aliases>, "drm-fb2=",&dsi0; -+ drm_fb2_rp1_dsi1 = <&aliases>, "drm-fb2=",&dsi1; -+ drm_fb2_rp1_dpi = <&aliases>, "drm-fb2=",&dpi; -+ drm_fb2_vc4 = <&aliases>, "drm-fb2=",&vc4; ++ pwr_led_trigger ++ pwr_led_activelow ++ pwr_led_gpio ++ As for act_led_*, but using the PWR LED. ++ Not available on Model A/B boards. + -+ fan_temp0 = <&cpu_tepid>,"temperature:0"; -+ fan_temp1 = <&cpu_warm>,"temperature:0"; -+ fan_temp2 = <&cpu_hot>,"temperature:0"; -+ fan_temp3 = <&cpu_vhot>,"temperature:0"; -+ fan_temp0_hyst = <&cpu_tepid>,"hysteresis:0"; -+ fan_temp1_hyst = <&cpu_warm>,"hysteresis:0"; -+ fan_temp2_hyst = <&cpu_hot>,"hysteresis:0"; -+ fan_temp3_hyst = <&cpu_vhot>,"hysteresis:0"; -+ fan_temp0_speed = <&fan>, "cooling-levels:4"; -+ fan_temp1_speed = <&fan>, "cooling-levels:8"; -+ fan_temp2_speed = <&fan>, "cooling-levels:12"; -+ fan_temp3_speed = <&fan>, "cooling-levels:16"; -+ }; -+}; -diff --git a/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts b/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts -new file mode 100644 -index 000000000000..f89321921f27 ---- /dev/null -+++ b/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts -@@ -0,0 +1,20 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/dts-v1/; ++ random Set to "on" to enable the hardware random ++ number generator (default "on") + -+#include "bcm2712-rpi-cm5.dtsi" ++ rtc Set to "off" to disable the onboard Real Time ++ Clock (2712 only, default "on") + -+// The RP1 USB3 interfaces are not usable on CM4IO ++ rtc_bbat_vchg Set the RTC backup battery charging voltage in ++ microvolts. If set to 0 or not specified, the ++ trickle charger is disabled. ++ (2712 only, default "0") + -+&rp1_usb0 { -+ status = "disabled"; -+}; ++ sd Set to "off" to disable the SD card (or eMMC on ++ non-lite SKU of CM4). ++ (default "on") + -+&rp1_usb1 { -+ status = "disabled"; -+}; ++ sd_cqe Set to "off" to disable Command Queueing if you ++ have an incompatible Class A2 SD card ++ (Pi 5 only, default "on") + -+/ { -+ __overrides__ { -+ i2c_csi_dsi = <&i2c_csi_dsi>, "status"; -+ }; -+}; -diff --git a/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts b/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts -new file mode 100644 -index 000000000000..47ce4ff5049a ---- /dev/null -+++ b/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts -@@ -0,0 +1,10 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/dts-v1/; ++ sd_overclock Clock (in MHz) to use when the MMC framework ++ requests 50MHz + -+#include "bcm2712-rpi-cm5.dtsi" ++ sd_poll_once Looks for a card once after booting. Useful ++ for network booting scenarios to avoid the ++ overhead of continuous polling. N.B. Using ++ this option restricts the system to using a ++ single card per boot (or none at all). ++ (default off) + -+/ { -+ __overrides__ { -+ i2c_csi_dsi = <&i2c_csi_dsi>, "status"; -+ }; -+}; -diff --git a/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi b/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi -new file mode 100644 -index 000000000000..b90d24a40bc1 ---- /dev/null -+++ b/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi -@@ -0,0 +1,888 @@ -+// SPDX-License-Identifier: GPL-2.0 ++ sd_force_pio Disable DMA support for SD driver (default off) + -+#include -+#include -+#include -+#include -+#include -+#include ++ sd_pio_limit Number of blocks above which to use DMA for ++ SD card (default 1) + -+#define i2c0 _i2c0 -+#define i2c3 _i2c3 -+#define i2c4 _i2c4 -+#define i2c5 _i2c5 -+#define i2c6 _i2c6 -+#define i2c8 _i2c8 -+#define i2s _i2s -+#define pwm0 _pwm0 -+#define pwm1 _pwm1 -+#define spi0 _spi0 -+#define spi3 _spi3 -+#define spi4 _spi4 -+#define spi5 _spi5 -+#define spi6 _spi6 -+#define uart0 _uart0 -+#define uart2 _uart2 -+#define uart5 _uart5 ++ sd_debug Enable debug output from SD driver (default off) + -+#include "bcm2712.dtsi" ++ sdio_overclock Clock (in MHz) to use when the MMC framework ++ requests 50MHz for the SDIO/WLAN interface. + -+#undef i2c0 -+#undef i2c3 -+#undef i2c4 -+#undef i2c5 -+#undef i2c6 -+#undef i2c8 -+#undef i2s -+#undef pwm0 -+#undef pwm1 -+#undef spi0 -+#undef spi3 -+#undef spi4 -+#undef spi5 -+#undef spi6 -+#undef uart0 -+#undef uart2 -+#undef uart3 -+#undef uart4 -+#undef uart5 ++ spi Set to "on" to enable the spi interfaces ++ (default "off") + -+/ { -+ compatible = "raspberrypi,5-compute-model", "brcm,bcm2712"; -+ model = "Raspberry Pi Compute Module 5"; ++ spi_dma4 Use to enable 40-bit DMA on spi interfaces ++ (the assigned value doesn't matter) ++ (2711 only) + -+ /* Will be filled by the bootloader */ -+ memory@0 { -+ device_type = "memory"; -+ reg = <0 0 0x28000000>; -+ }; ++ strict_gpiod Return GPIOs to inputs when they are released. ++ If using the gpiod utilities, it is necessary ++ to keep a gpioset running (e.g. with ++ --mode=wait) in order for an output value to ++ persist. + -+ leds: leds { -+ compatible = "gpio-leds"; ++ suspend Make the power button trigger a suspend rather ++ than a power-off (2712 only, default "off") + -+ led_pwr: led-pwr { -+ label = "PWR"; -+ gpios = <&rp1_gpio 44 GPIO_ACTIVE_LOW>; -+ default-state = "off"; -+ linux,default-trigger = "none"; -+ }; ++ tx_lpi_timer Set the delay in microseconds between going idle ++ and entering the low power state (default 600). ++ Requires EEE to be enabled - see "eee". + -+ led_act: led-act { -+ label = "ACT"; -+ gpios = <&gio_aon 9 GPIO_ACTIVE_LOW>; -+ default-state = "off"; -+ linux,default-trigger = "mmc0"; -+ }; -+ }; ++ uart0 Set to "off" to disable uart0 (default "on") + -+ sd_io_1v8_reg: sd_io_1v8_reg { -+ compatible = "regulator-gpio"; -+ regulator-name = "vdd-sd-io"; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-boot-on; -+ regulator-always-on; -+ regulator-settling-time-us = <5000>; -+ gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>; -+ states = <1800000 0x1 -+ 3300000 0x0>; -+ status = "okay"; -+ }; ++ uart0_console Move the kernel boot console to UART0 on pins ++ 6, 8 and 10 of the 40-way header (2712 only, ++ default "off") + -+ sd_vcc_reg: sd_vcc_reg { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc-sd"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-boot-on; -+ enable-active-high; -+ gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>; -+ status = "okay"; -+ }; ++ uart1 Set to "on" or "off" to enable or disable uart1 ++ (default varies) + -+ wl_on_reg: wl_on_reg { -+ compatible = "regulator-fixed"; -+ regulator-name = "wl-on-regulator"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ pinctrl-0 = <&wl_on_pins>; -+ pinctrl-names = "default"; ++ watchdog Set to "on" to enable the hardware watchdog ++ (default "off") + -+ gpio = <&gio 28 GPIO_ACTIVE_HIGH>; ++ wifiaddr Set an alternative WiFi MAC address. ++ The value should be a 6-byte hexadecimal value, ++ with or without colon separators, written in the ++ natural (big-endian) order. + -+ startup-delay-us = <150000>; -+ enable-active-high; -+ }; ++ N.B. It is recommended to only enable those interfaces that are needed. ++ Leaving all interfaces enabled can lead to unwanted behaviour (i2c_vc ++ interfering with Pi Camera, I2S and SPI hogging GPIO pins, etc.) ++ Note also that i2c, i2c_arm and i2c_vc are aliases for the physical ++ interfaces i2c0 and i2c1. Use of the numeric variants is still possible ++ but deprecated because the ARM/VC assignments differ between board ++ revisions. The same board-specific mapping applies to i2c_baudrate, ++ and the other i2c baudrate parameters. + -+ clocks: clocks { -+ }; + -+ cam1_clk: cam1_clk { -+ compatible = "fixed-clock"; -+ #clock-cells = <0>; -+ status = "disabled"; -+ }; ++Name: act-led ++Info: Pi 3B, 3B+, 3A+ and 4B use a GPIO expander to drive the LEDs which can ++ only be accessed from the VPU. There is a special driver for this with a ++ separate DT node, which has the unfortunate consequence of breaking the ++ act_led_gpio and act_led_activelow dtparams. ++ This overlay changes the GPIO controller back to the standard one and ++ restores the dtparams. ++Load: dtoverlay=act-led,= ++Params: activelow Set to "on" to invert the sense of the LED ++ (default "off") + -+ cam0_clk: cam0_clk { -+ compatible = "fixed-clock"; -+ #clock-cells = <0>; -+ status = "disabled"; -+ }; ++ gpio Set which GPIO to use for the activity LED ++ (in case you want to connect it to an external ++ device) ++ REQUIRED + -+ cam0_reg: cam0_reg { -+ compatible = "regulator-fixed"; -+ regulator-name = "cam0_reg"; -+ enable-active-high; -+ status = "okay"; -+ gpio = <&rp1_gpio 34 0>; // CD0_IO0_MICCLK, to CAM_GPIO on connector -+ }; + -+ cam_dummy_reg: cam_dummy_reg { -+ compatible = "regulator-fixed"; -+ regulator-name = "cam-dummy-reg"; -+ status = "okay"; -+ }; ++Name: adafruit-st7735r ++Info: Overlay for the SPI-connected Adafruit 1.8" 160x128 or 128x128 displays, ++ based on the ST7735R chip. ++ This overlay uses the newer DRM/KMS "Tiny" driver. ++Load: dtoverlay=adafruit-st7735r,= ++Params: 128x128 Select the 128x128 driver (default 160x128) ++ rotate Display rotation {0,90,180,270} (default 90) ++ speed SPI bus speed in Hz (default 4000000) ++ dc_pin GPIO pin for D/C (default 24) ++ reset_pin GPIO pin for RESET (default 25) ++ led_pin GPIO used to control backlight (default 18) + -+ dummy: dummy { -+ // A target for unwanted overlay fragments -+ }; + ++Name: adafruit18 ++Info: Overlay for the SPI-connected Adafruit 1.8" display (based on the ++ ST7735R chip). It includes support for the "green tab" version. ++ This overlay uses the older fbtft driver. ++Load: dtoverlay=adafruit18,= ++Params: green Use the adafruit18_green variant. ++ rotate Display rotation {0,90,180,270} ++ speed SPI bus speed in Hz (default 4000000) ++ fps Display frame rate in Hz ++ bgr Enable BGR mode (default off) ++ debug Debug output level {0-7} ++ dc_pin GPIO pin for D/C (default 24) ++ reset_pin GPIO pin for RESET (default 25) ++ led_pin GPIO used to control backlight (default 18) + -+ // A few extra labels to keep overlays happy + -+ i2c0if: i2c0if {}; -+ i2c0mux: i2c0mux {}; -+}; ++Name: adau1977-adc ++Info: Overlay for activation of ADAU1977 ADC codec over I2C for control ++ and I2S for data. ++Load: dtoverlay=adau1977-adc ++Params: + -+rp1_target: &pcie2 { -+ brcm,enable-mps-rcb; -+ brcm,vdm-qos-map = <0xbbaa9888>; -+ aspm-no-l0s; -+ status = "okay"; -+}; + -+// Add some labels to 2712 device ++Name: adau7002-simple ++Info: Overlay for the activation of ADAU7002 stereo PDM to I2S converter. ++Load: dtoverlay=adau7002-simple,= ++Params: card-name Override the default, "adau7002", card name. + -+// The system UART -+uart10: &_uart0 { status = "okay"; }; + -+// The system SPI for the bootloader EEPROM -+spi10: &_spi0 { status = "okay"; }; ++Name: ads1015 ++Info: Overlay for activation of Texas Instruments ADS1015 ADC over I2C ++Load: dtoverlay=ads1015,= ++Params: addr I2C bus address of device. Set based on how the ++ addr pin is wired. (default=0x48 assumes addr ++ is pulled to GND) ++ cha_enable Enable virtual channel a. (default=true) ++ cha_cfg Set the configuration for virtual channel a. ++ (default=4 configures this channel for the ++ voltage at A0 with respect to GND) ++ cha_datarate Set the datarate (samples/sec) for this channel. ++ (default=4 sets 1600 sps) ++ cha_gain Set the gain of the Programmable Gain ++ Amplifier for this channel. (default=2 sets the ++ full scale of the channel to 2.048 Volts) + -+i2c_rp1boot: &_i2c3 { }; ++ Channel (ch) parameters can be set for each enabled channel. ++ A maximum of 4 channels can be enabled (letters a thru d). ++ For more information refer to the device datasheet at: ++ http://www.ti.com/lit/ds/symlink/ads1015.pdf + -+#include "rp1.dtsi" + -+&rp1 { -+ // PCIe address space layout: -+ // 00_00000000-00_00xxxxxx = RP1 peripherals -+ // 10_00000000-1x_xxxxxxxx = up to 64GB system RAM ++Name: ads1115 ++Info: Texas Instruments ADS1115 ADC ++Load: dtoverlay=ads1115,[=] ++Params: addr I2C bus address of device. Set based on how the ++ addr pin is wired. (default=0x48 assumes addr ++ is pulled to GND) ++ cha_enable Enable virtual channel a. ++ cha_cfg Set the configuration for virtual channel a. ++ (default=4 configures this channel for the ++ voltage at A0 with respect to GND) ++ cha_datarate Set the datarate (samples/sec) for this channel. ++ (default=7 sets 860 sps) ++ cha_gain Set the gain of the Programmable Gain ++ Amplifier for this channel. (Default 1 sets the ++ full scale of the channel to 4.096 Volts) ++ i2c0 Choose the I2C0 bus on GPIOs 0&1 ++ i2c_csi_dsi Choose the I2C0 bus on GPIOs 44&45 ++ i2c3 Choose the I2C3 bus (configure with the i2c3 ++ overlay - BCM2711 only) ++ i2c4 Choose the I2C4 bus (configure with the i2c4 ++ overlay - BCM2711 only) ++ i2c5 Choose the I2C5 bus (configure with the i2c5 ++ overlay - BCM2711 only) ++ i2c6 Choose the I2C6 bus (configure with the i2c6 ++ overlay - BCM2711 only) + -+ // outbound access aimed at PCIe 0_00xxxxxx -> RP1 c0_40xxxxxx -+ // This is the RP1 peripheral space -+ ranges = <0xc0 0x40000000 -+ 0x02000000 0x00 0x00000000 -+ 0x00 0x00400000>; ++ Channel parameters can be set for each enabled channel. ++ A maximum of 4 channels can be enabled (letters a thru d). ++ For more information refer to the device datasheet at: ++ http://www.ti.com/lit/ds/symlink/ads1115.pdf + -+ dma-ranges = -+ // inbound RP1 1x_xxxxxxxx -> PCIe 1x_xxxxxxxx -+ <0x10 0x00000000 -+ 0x43000000 0x10 0x00000000 -+ 0x10 0x00000000>, + -+ // inbound RP1 c0_40xxxxxx -> PCIe 00_00xxxxxx -+ // This allows the RP1 DMA controller to address RP1 hardware -+ <0xc0 0x40000000 -+ 0x02000000 0x0 0x00000000 -+ 0x0 0x00400000>, ++Name: ads7846 ++Info: ADS7846 Touch controller ++Load: dtoverlay=ads7846,= ++Params: cs SPI bus Chip Select (default 1) ++ speed SPI bus speed (default 2MHz, max 3.25MHz) ++ penirq GPIO used for PENIRQ. REQUIRED ++ penirq_pull Set GPIO pull (default 0=none, 2=pullup) ++ swapxy Swap x and y axis ++ xmin Minimum value on the X axis (default 0) ++ ymin Minimum value on the Y axis (default 0) ++ xmax Maximum value on the X axis (default 4095) ++ ymax Maximum value on the Y axis (default 4095) ++ pmin Minimum reported pressure value (default 0) ++ pmax Maximum reported pressure value (default 65535) ++ xohms Touchpanel sensitivity (X-plate resistance) ++ (default 400) + -+ // inbound RP1 0x_xxxxxxxx -> PCIe 1x_xxxxxxxx -+ <0x00 0x00000000 -+ 0x02000000 0x10 0x00000000 -+ 0x10 0x00000000>; -+}; ++ penirq is required and usually xohms (60-100) has to be set as well. ++ Apart from that, pmax (255) and swapxy are also common. ++ The rest of the calibration can be done with xinput-calibrator. ++ See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian ++ Device Tree binding document: ++ www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt + -+// Expose RP1 nodes as system nodes with labels + -+&rp1_dma { -+ status = "okay"; -+}; ++Name: adv7282m ++Info: Analog Devices ADV7282M analogue video to CSI2 bridge. ++ Uses Unicam1, which is the standard camera connector on most Pi ++ variants. ++Load: dtoverlay=adv7282m,= ++Params: addr Overrides the I2C address (default 0x21) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default off) + -+&rp1_eth { -+ status = "okay"; -+ phy-handle = <&phy1>; -+ phy-reset-gpios = <&rp1_gpio 32 GPIO_ACTIVE_LOW>; -+ phy-reset-duration = <5>; + -+ phy1: ethernet-phy@1 { -+ reg = <0x1>; -+ brcm,powerdown-enable; -+ interrupt-parent = <&gpio>; -+ interrupts = <37 IRQ_TYPE_LEVEL_LOW>; -+ }; -+}; ++Name: adv728x-m ++Info: Analog Devices ADV728[0|1|2]-M analogue video to CSI2 bridges. ++ This is a wrapper for adv7282m, and defaults to ADV7282M. ++Load: dtoverlay=adv728x-m,= ++Params: addr Overrides the I2C address (default 0x21) ++ adv7280m Select ADV7280-M. ++ adv7281m Select ADV7281-M. ++ adv7281ma Select ADV7281-MA. ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default off) + -+gpio: &rp1_gpio { -+ status = "okay"; -+}; + -+aux: &dummy {}; ++Name: akkordion-iqdacplus ++Info: Configures the Digital Dreamtime Akkordion Music Player (based on the ++ OEM IQAudIO DAC+ or DAC Zero module). ++Load: dtoverlay=akkordion-iqdacplus,= ++Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec ++ Digital volume control. Enable with ++ dtoverlay=akkordion-iqdacplus,24db_digital_gain ++ (The default behaviour is that the Digital ++ volume control is limited to a maximum of ++ 0dB. ie. it can attenuate but not provide ++ gain. For most users, this will be desired ++ as it will prevent clipping. By appending ++ the 24db_digital_gain parameter, the Digital ++ volume control will allow up to 24dB of ++ gain. If this parameter is enabled, it is the ++ responsibility of the user to ensure that ++ the Digital volume control is set to a value ++ that does not result in clipping/distortion!) + -+&rp1_usb0 { -+ pinctrl-0 = <&usb_vbus_pins>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; + -+&rp1_usb1 { -+ status = "okay"; -+}; ++Name: allo-boss-dac-pcm512x-audio ++Info: Configures the Allo Boss DAC audio cards. ++Load: dtoverlay=allo-boss-dac-pcm512x-audio, ++Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec ++ Digital volume control. Enable with ++ "dtoverlay=allo-boss-dac-pcm512x-audio, ++ 24db_digital_gain" ++ (The default behaviour is that the Digital ++ volume control is limited to a maximum of ++ 0dB. ie. it can attenuate but not provide ++ gain. For most users, this will be desired ++ as it will prevent clipping. By appending ++ the 24db_digital_gain parameter, the Digital ++ volume control will allow up to 24dB of ++ gain. If this parameter is enabled, it is the ++ responsibility of the user to ensure that ++ the Digital volume control is set to a value ++ that does not result in clipping/distortion!) ++ slave Force Boss DAC into slave mode, using Pi a ++ master for bit clock and frame clock. Enable ++ with "dtoverlay=allo-boss-dac-pcm512x-audio, ++ slave" + -+#include "bcm2712-rpi.dtsi" + -+i2c_csi_dsi0: &i2c6 { // Note: This is for MIPI0 connector only -+ pinctrl-0 = <&rp1_i2c6_38_39>; -+ pinctrl-names = "default"; -+ clock-frequency = <100000>; -+}; ++Name: allo-boss2-dac-audio ++Info: Configures the Allo Boss2 DAC audio card ++Load: dtoverlay=allo-boss2-dac-audio ++Params: + -+i2c_csi_dsi1: &i2c0 { // Note: This is for MIPI1 connector -+}; + -+i2c_csi_dsi: &i2c_csi_dsi1 { }; // An alias for compatibility ++Name: allo-digione ++Info: Configures the Allo Digione audio card ++Load: dtoverlay=allo-digione ++Params: + -+cam1_reg: &cam0_reg { // Shares CAM_GPIO with cam0_reg -+}; + -+csi0: &rp1_csi0 { }; -+csi1: &rp1_csi1 { }; -+dsi0: &rp1_dsi0 { }; -+dsi1: &rp1_dsi1 { }; -+dpi: &rp1_dpi { }; -+vec: &rp1_vec { }; -+dpi_gpio0: &rp1_dpi_24bit_gpio0 { }; -+dpi_gpio1: &rp1_dpi_24bit_gpio2 { }; -+dpi_18bit_cpadhi_gpio0: &rp1_dpi_18bit_cpadhi_gpio0 { }; -+dpi_18bit_cpadhi_gpio2: &rp1_dpi_18bit_cpadhi_gpio2 { }; -+dpi_18bit_gpio0: &rp1_dpi_18bit_gpio0 { }; -+dpi_18bit_gpio2: &rp1_dpi_18bit_gpio2 { }; -+dpi_16bit_cpadhi_gpio0: &rp1_dpi_16bit_cpadhi_gpio0 { }; -+dpi_16bit_cpadhi_gpio2: &rp1_dpi_16bit_cpadhi_gpio2 { }; -+dpi_16bit_gpio0: &rp1_dpi_16bit_gpio0 { }; -+dpi_16bit_gpio2: &rp1_dpi_16bit_gpio2 { }; ++Name: allo-katana-dac-audio ++Info: Configures the Allo Katana DAC audio card ++Load: dtoverlay=allo-katana-dac-audio ++Params: + -+/* Add the IOMMUs for some RP1 bus masters */ + -+&csi0 { -+ iommus = <&iommu5>; -+}; ++Name: allo-piano-dac-pcm512x-audio ++Info: Configures the Allo Piano DAC (2.0/2.1) audio cards. ++ (NB. This initial support is for 2.0 channel audio ONLY! ie. stereo. ++ The subwoofer outputs on the Piano 2.1 are not currently supported!) ++Load: dtoverlay=allo-piano-dac-pcm512x-audio, ++Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec ++ Digital volume control. ++ (The default behaviour is that the Digital ++ volume control is limited to a maximum of ++ 0dB. ie. it can attenuate but not provide ++ gain. For most users, this will be desired ++ as it will prevent clipping. By appending ++ the 24db_digital_gain parameter, the Digital ++ volume control will allow up to 24dB of ++ gain. If this parameter is enabled, it is the ++ responsibility of the user to ensure that ++ the Digital volume control is set to a value ++ that does not result in clipping/distortion!) + -+&csi1 { -+ iommus = <&iommu5>; -+}; + -+&dsi0 { -+ iommus = <&iommu5>; -+}; ++Name: allo-piano-dac-plus-pcm512x-audio ++Info: Configures the Allo Piano DAC (2.1) audio cards. ++Load: dtoverlay=allo-piano-dac-plus-pcm512x-audio, ++Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec ++ Digital volume control. ++ (The default behaviour is that the Digital ++ volume control is limited to a maximum of ++ 0dB. ie. it can attenuate but not provide ++ gain. For most users, this will be desired ++ as it will prevent clipping. By appending ++ the 24db_digital_gain parameter, the Digital ++ volume control will allow up to 24dB of ++ gain. If this parameter is enabled, it is the ++ responsibility of the user to ensure that ++ the Digital volume control is set to a value ++ that does not result in clipping/distortion!) ++ glb_mclk This option is only with Kali board. If enabled, ++ MCLK for Kali is used and PLL is disabled for ++ better voice quality. (default Off) + -+&dsi1 { -+ iommus = <&iommu5>; -+}; + -+&dpi { -+ iommus = <&iommu5>; -+}; ++Name: anyspi ++Info: Universal device tree overlay for SPI devices + -+&vec { -+ iommus = <&iommu5>; -+}; ++ Just specify the SPI address and device name ("compatible" property). ++ This overlay lacks any device-specific parameter support! + -+&ddc0 { -+ status = "disabled"; -+}; ++ For devices on spi1 or spi2, the interfaces should be enabled ++ with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. + -+&ddc1 { -+ status = "disabled"; -+}; -+ -+&hdmi0 { -+ clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>; -+ clock-names = "hdmi", "bvb", "audio", "cec"; -+ status = "disabled"; -+}; ++ Examples: ++ 1. SPI NOR flash on spi0.1, maximum SPI clock frequency 45MHz: ++ dtoverlay=anyspi:spi0-1,dev="jedec,spi-nor",speed=45000000 ++ 2. MCP3204 ADC on spi1.2, maximum SPI clock frequency 500kHz: ++ dtoverlay=anyspi:spi1-2,dev="microchip,mcp3204" ++Load: dtoverlay=anyspi,= ++Params: spi- Configure device at spi, cs ++ (boolean, required) ++ dev Set device name to search compatible module ++ (string, required) ++ speed Set SPI clock frequency in Hz ++ (integer, optional, default 500000) + -+&hdmi1 { -+ clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>; -+ clock-names = "hdmi", "bvb", "audio", "cec"; -+ status = "disabled"; -+}; + -+&hvs { -+ clocks = <&firmware_clocks 4>, <&firmware_clocks 16>; -+ clock-names = "core", "disp"; -+}; ++Name: apds9960 ++Info: Configures the AVAGO APDS9960 digital proximity, ambient light, RGB and ++ gesture sensor ++Load: dtoverlay=apds9960,= ++Params: gpiopin GPIO used for INT (default 4) ++ noints Disable the interrupt GPIO line. + -+&mop { -+ status = "disabled"; -+}; + -+&moplet { -+ status = "disabled"; -+}; ++Name: applepi-dac ++Info: Configures the Orchard Audio ApplePi-DAC audio card ++Load: dtoverlay=applepi-dac ++Params: + -+&pixelvalve0 { -+ status = "disabled"; -+}; + -+&pixelvalve1 { -+ status = "disabled"; -+}; ++Name: arducam-64mp ++Info: Arducam 64MP camera module. ++ Uses Unicam 1, which is the standard camera connector on most Pi ++ variants. ++Load: dtoverlay=arducam-64mp,= ++Params: rotation Mounting rotation of the camera sensor (0 or ++ 180, default 0) ++ orientation Sensor orientation (0 = front, 1 = rear, ++ 2 = external, default external) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default on) ++ cam0 Adopt the default configuration for CAM0 on a ++ Compute Module (CSI0, i2c_vc, and cam0_reg). ++ vcm Select lens driver state. Default is enabled, ++ but vcm=off will disable. + -+&disp_intr { -+ status = "disabled"; -+}; + -+/* SDIO1 is used to drive the eMMC/SD card */ -+&sdio1 { -+ pinctrl-0 = <&emmc_cmddat_pulls>, <&emmc_ds_pull>; -+ pinctrl-names = "default"; -+ vqmmc-supply = <&sd_io_1v8_reg>; -+ vmmc-supply = <&sd_vcc_reg>; -+ bus-width = <8>; -+ sd-uhs-sdr50; -+ sd-uhs-ddr50; -+ sd-uhs-sdr104; -+ mmc-hs200-1_8v; -+ broken-cd; -+ supports-cqe; -+ status = "okay"; -+}; ++Name: arducam-pivariety ++Info: Arducam Pivariety camera module. ++ Uses Unicam 1, which is the standard camera connector on most Pi ++ variants. ++Load: dtoverlay=arducam-pivariety,= ++Params: rotation Mounting rotation of the camera sensor (0 or ++ 180, default 0) ++ orientation Sensor orientation (0 = front, 1 = rear, ++ 2 = external, default external) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default on) ++ cam0 Adopt the default configuration for CAM0 on a ++ Compute Module (CSI0, i2c_vc, and cam0_reg). + -+&pinctrl_aon { -+ ant_pins: ant_pins { -+ function = "gpio"; -+ pins = "aon_gpio5", "aon_gpio6"; -+ }; + -+ /* Slight hack - only one PWM pin (status LED) is usable */ -+ aon_pwm_1pin: aon_pwm_1pin { -+ function = "aon_pwm"; -+ pins = "aon_gpio9"; -+ }; -+}; ++Name: at86rf233 ++Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver, ++ connected to spi0.0 ++Load: dtoverlay=at86rf233,= ++Params: interrupt GPIO used for INT (default 23) ++ reset GPIO used for Reset (default 24) ++ sleep GPIO used for Sleep (default 25) ++ speed SPI bus speed in Hz (default 3000000) ++ trim Fine tuning of the internal capacitance ++ arrays (0=+0pF, 15=+4.5pF, default 15) + -+&pinctrl { -+ pwr_button_pins: pwr_button_pins { -+ function = "gpio"; -+ pins = "gpio20"; -+ bias-pull-up; -+ }; + -+ wl_on_pins: wl_on_pins { -+ function = "gpio"; -+ pins = "gpio28"; -+ }; ++Name: audioinjector-addons ++Info: Configures the audioinjector.net audio add on soundcards ++Load: dtoverlay=audioinjector-addons,= ++Params: non-stop-clocks Keeps the clocks running even when the stream ++ is paused or stopped (default off) + -+ bt_shutdown_pins: bt_shutdown_pins { -+ function = "gpio"; -+ pins = "gpio29"; -+ }; + -+ emmc_ds_pull: emmc_ds_pull { -+ pins = "emmc_ds"; -+ bias-pull-down; -+ }; ++Name: audioinjector-bare-i2s ++Info: Configures the audioinjector.net audio bare i2s soundcard ++Load: dtoverlay=audioinjector-bare-i2s ++Params: + -+ emmc_cmddat_pulls: emmc_cmddat_pulls { -+ pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3", -+ "emmc_dat4", "emmc_dat5", "emmc_dat6", "emmc_dat7"; -+ bias-pull-up; -+ }; -+}; + -+/* uarta communicates with the BT module */ -+&uarta { -+ uart-has-rtscts; -+ auto-flow-control; -+ status = "okay"; -+ clock-frequency = <96000000>; -+ pinctrl-0 = <&uarta_24_pins &bt_shutdown_pins>; -+ pinctrl-names = "default"; ++Name: audioinjector-isolated-soundcard ++Info: Configures the audioinjector.net isolated soundcard ++Load: dtoverlay=audioinjector-isolated-soundcard ++Params: + -+ bluetooth: bluetooth { -+ compatible = "brcm,bcm43438-bt"; -+ max-speed = <3000000>; -+ shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>; -+ local-bd-address = [ 00 00 00 00 00 00 ]; -+ }; -+}; + -+&i2c_rp1boot { -+ clock-frequency = <400000>; -+ pinctrl-0 = <&i2c3_m4_agpio0_pins>; -+ pinctrl-names = "default"; -+}; ++Name: audioinjector-ultra ++Info: Configures the audioinjector.net ultra soundcard ++Load: dtoverlay=audioinjector-ultra ++Params: + -+/ { -+ chosen: chosen { -+ bootargs = "reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe"; -+ stdout-path = "serial10:115200n8"; -+ }; + -+ fan: cooling_fan { -+ status = "disabled"; -+ compatible = "pwm-fan"; -+ #cooling-cells = <2>; -+ cooling-min-state = <0>; -+ cooling-max-state = <3>; -+ cooling-levels = <0 75 125 175 250>; -+ pwms = <&rp1_pwm1 3 41566 PWM_POLARITY_INVERTED>; -+ rpm-regmap = <&rp1_pwm1>; -+ rpm-offset = <0x3c>; -+ }; ++Name: audioinjector-wm8731-audio ++Info: Configures the audioinjector.net audio add on soundcard ++Load: dtoverlay=audioinjector-wm8731-audio ++Params: + -+ pwr_button { -+ compatible = "gpio-keys"; + -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwr_button_pins>; -+ status = "okay"; ++Name: audiosense-pi ++Info: Configures the audiosense-pi add on soundcard ++ For more information refer to ++ https://gitlab.com/kakar0t/audiosense-pi ++Load: dtoverlay=audiosense-pi ++Params: + -+ pwr_key: pwr { -+ label = "pwr_button"; -+ // linux,code = <205>; // KEY_SUSPEND -+ linux,code = <116>; // KEY_POWER -+ gpios = <&gio 20 GPIO_ACTIVE_LOW>; -+ debounce-interval = <50>; // ms -+ }; -+ }; -+}; + -+&usb { -+ power-domains = <&power RPI_POWER_DOMAIN_USB>; -+}; ++Name: audremap ++Info: Switches PWM sound output to GPIOs on the 40-pin header ++Load: dtoverlay=audremap,= ++Params: swap_lr Reverse the channel allocation, which will also ++ swap the audio jack outputs (default off) ++ enable_jack Don't switch off the audio jack output. Does ++ nothing on BCM2711 (default off) ++ pins_12_13 Select GPIOs 12 & 13 (default) ++ pins_18_19 Select GPIOs 18 & 19 ++ pins_40_41 Select GPIOs 40 & 41 (not available on CM4, used ++ for other purposes) ++ pins_40_45 Select GPIOs 40 & 45 (don't use on BCM2711 - the ++ pins are on different controllers) + -+/* SDIO2 drives the WLAN interface */ -+&sdio2 { -+ pinctrl-0 = <&sdio2_30_pins>, <&ant_pins>; -+ pinctrl-names = "default"; -+ bus-width = <4>; -+ vmmc-supply = <&wl_on_reg>; -+ sd-uhs-ddr50; -+ non-removable; -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; + -+ wifi: wifi@1 { -+ reg = <1>; -+ compatible = "brcm,bcm4329-fmac"; -+ local-mac-address = [00 00 00 00 00 00]; -+ }; -+}; ++Name: balena-fin ++Info: Overlay that enables WLAN, Bluetooth and the GPIO expander on the ++ balenaFin carrier board for the Raspberry Pi Compute Module 3/3+ Lite. ++Load: dtoverlay=balena-fin ++Params: + -+&rpivid { -+ status = "okay"; -+}; + -+&pinctrl { -+ spi10_gpio2: spi10_gpio2 { -+ function = "vc_spi0"; -+ pins = "gpio2", "gpio3", "gpio4"; -+ bias-disable; -+ }; ++Name: bcm2712d0 ++Info: Overlay encapsulating the BCM2712 C0->D0 differences ++Load: dtoverlay=bcm2712d0 ++Params: + -+ spi10_cs_gpio1: spi10_cs_gpio1 { -+ function = "gpio"; -+ pins = "gpio1"; -+ bias-pull-up; -+ }; -+}; + -+spi10_pins: &spi10_gpio2 {}; -+spi10_cs_pins: &spi10_cs_gpio1 {}; ++Name: bmp085_i2c-sensor ++Info: This overlay is now deprecated - see i2c-sensor ++Load: + -+&spi10 { -+ pinctrl-names = "default"; -+ cs-gpios = <&gio 1 1>; -+ pinctrl-0 = <&spi10_pins &spi10_cs_pins>; + -+ spidev10: spidev@0 { -+ compatible = "spidev"; -+ reg = <0>; /* CE0 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <20000000>; -+ status = "okay"; -+ }; -+}; ++Name: camera-mux-2port ++Info: Configures a 2 port camera multiplexer ++ Note that currently ALL IMX290 modules share a common clock, therefore ++ all modules will need to have the same clock frequency. ++Load: dtoverlay=camera-mux-2port,= ++Params: cam0-arducam-64mp Select Arducam64MP for camera on port 0 ++ cam0-imx219 Select IMX219 for camera on port 0 ++ cam0-imx258 Select IMX258 for camera on port 0 ++ cam0-imx290 Select IMX290 for camera on port 0 ++ cam0-imx477 Select IMX477 for camera on port 0 ++ cam0-imx519 Select IMX519 for camera on port 0 ++ cam0-imx708 Select IMX708 for camera on port 0 ++ cam0-ov2311 Select OV2311 for camera on port 0 ++ cam0-ov5647 Select OV5647 for camera on port 0 ++ cam0-ov64a40 Select OV64A40 for camera on port 0 ++ cam0-ov7251 Select OV7251 for camera on port 0 ++ cam0-ov9281 Select OV9281 for camera on port 0 ++ cam0-imx290-clk-freq Set clock frequency for an IMX290 on port 0 ++ cam1-arducam-64mp Select Arducam64MP for camera on port 1 ++ cam1-imx219 Select IMX219 for camera on port 1 ++ cam1-imx258 Select IMX258 for camera on port 1 ++ cam1-imx290 Select IMX290 for camera on port 1 ++ cam1-imx477 Select IMX477 for camera on port 1 ++ cam1-imx519 Select IMX519 for camera on port 1 ++ cam1-imx708 Select IMX708 for camera on port 1 ++ cam1-ov2311 Select OV2311 for camera on port 1 ++ cam1-ov5647 Select OV5647 for camera on port 1 ++ cam1-ov64a40 Select OV64A40 for camera on port 1 ++ cam1-ov7251 Select OV7251 for camera on port 1 ++ cam1-ov9281 Select OV9281 for camera on port 1 ++ cam1-imx290-clk-freq Set clock frequency for an IMX290 on port 1 ++ cam0-sync-source Set camera on port 0 as vsync source ++ cam0-sync-sink Set camera on port 0 as vsync sink ++ cam1-sync-source Set camera on port 1 as vsync source ++ cam1-sync-sink Set camera on port 1 as vsync sink + -+// ============================================= -+// Board specific stuff here ++ cam0 Connect the mux to CAM0 port (default is CAM1) + -+&gio_aon { -+ // Don't use GIO_AON as an interrupt controller because it will -+ // clash with the firmware monitoring the PMIC interrupt via the VPU. + -+ /delete-property/ interrupt-controller; -+}; ++Name: camera-mux-4port ++Info: Configures a 4 port camera multiplexer ++ Note that currently ALL IMX290 modules share a common clock, therefore ++ all modules will need to have the same clock frequency. ++Load: dtoverlay=camera-mux-4port,= ++Params: cam0-arducam-64mp Select Arducam64MP for camera on port 0 ++ cam0-imx219 Select IMX219 for camera on port 0 ++ cam0-imx258 Select IMX258 for camera on port 0 ++ cam0-imx290 Select IMX290 for camera on port 0 ++ cam0-imx477 Select IMX477 for camera on port 0 ++ cam0-imx519 Select IMX519 for camera on port 0 ++ cam0-imx708 Select IMX708 for camera on port 0 ++ cam0-ov2311 Select OV2311 for camera on port 0 ++ cam0-ov5647 Select OV5647 for camera on port 0 ++ cam0-ov64a40 Select OV64A40 for camera on port 0 ++ cam0-ov7251 Select OV7251 for camera on port 0 ++ cam0-ov9281 Select OV9281 for camera on port 0 ++ cam0-imx290-clk-freq Set clock frequency for an IMX290 on port 0 ++ cam1-arducam-64mp Select Arducam64MP for camera on port 1 ++ cam1-imx219 Select IMX219 for camera on port 1 ++ cam1-imx258 Select IMX258 for camera on port 1 ++ cam1-imx290 Select IMX290 for camera on port 1 ++ cam1-imx477 Select IMX477 for camera on port 1 ++ cam1-imx519 Select IMX519 for camera on port 1 ++ cam1-imx708 Select IMX708 for camera on port 1 ++ cam1-ov2311 Select OV2311 for camera on port 1 ++ cam1-ov5647 Select OV5647 for camera on port 1 ++ cam1-ov64a40 Select OV64A40 for camera on port 1 ++ cam1-ov7251 Select OV7251 for camera on port 1 ++ cam1-ov9281 Select OV9281 for camera on port 1 ++ cam1-imx290-clk-freq Set clock frequency for an IMX290 on port 1 ++ cam2-arducam-64mp Select Arducam64MP for camera on port 2 ++ cam2-imx219 Select IMX219 for camera on port 2 ++ cam2-imx258 Select IMX258 for camera on port 2 ++ cam2-imx290 Select IMX290 for camera on port 2 ++ cam2-imx477 Select IMX477 for camera on port 2 ++ cam2-imx519 Select IMX519 for camera on port 2 ++ cam2-imx708 Select IMX708 for camera on port 2 ++ cam2-ov2311 Select OV2311 for camera on port 2 ++ cam2-ov5647 Select OV5647 for camera on port 2 ++ cam2-ov64a40 Select OV64A40 for camera on port 2 ++ cam2-ov7251 Select OV7251 for camera on port 2 ++ cam2-ov9281 Select OV9281 for camera on port 2 ++ cam2-imx290-clk-freq Set clock frequency for an IMX290 on port 2 ++ cam3-arducam-64mp Select Arducam64MP for camera on port 3 ++ cam3-imx219 Select IMX219 for camera on port 3 ++ cam3-imx258 Select IMX258 for camera on port 3 ++ cam3-imx290 Select IMX290 for camera on port 3 ++ cam3-imx477 Select IMX477 for camera on port 3 ++ cam3-imx519 Select IMX519 for camera on port 3 ++ cam3-imx708 Select IMX708 for camera on port 3 ++ cam3-ov2311 Select OV2311 for camera on port 3 ++ cam3-ov5647 Select OV5647 for camera on port 3 ++ cam3-ov64a40 Select OV64A40 for camera on port 3 ++ cam3-ov7251 Select OV7251 for camera on port 3 ++ cam3-ov9281 Select OV9281 for camera on port 3 ++ cam3-imx290-clk-freq Set clock frequency for an IMX290 on port 3 ++ cam0-sync-source Set camera on port 0 as vsync source ++ cam0-sync-sink Set camera on port 0 as vsync sink ++ cam1-sync-source Set camera on port 1 as vsync source ++ cam1-sync-sink Set camera on port 1 as vsync sink ++ cam2-sync-source Set camera on port 2 as vsync source ++ cam2-sync-sink Set camera on port 2 as vsync sink ++ cam3-sync-source Set camera on port 3 as vsync source ++ cam3-sync-sink Set camera on port 3 as vsync sink + -+&main_aon_irq { -+ // Don't use the MAIN_AON_IRQ interrupt controller because it will -+ // clash with the firmware monitoring the PMIC interrupt via the VPU. ++ cam0 Connect the mux to CAM0 port (default is CAM1) + -+ status = "disabled"; -+}; + -+&rp1_pwm1 { -+ status = "disabled"; -+ pinctrl-0 = <&rp1_pwm1_gpio45>; -+ pinctrl-names = "default"; -+}; ++Name: cap1106 ++Info: Enables the ability to use the cap1106 touch sensor as a keyboard ++Load: dtoverlay=cap1106,= ++Params: int_pin GPIO pin for interrupt signal (default 23) + -+&thermal_trips { -+ cpu_tepid: cpu-tepid { -+ temperature = <50000>; -+ hysteresis = <5000>; -+ type = "active"; -+ }; + -+ cpu_warm: cpu-warm { -+ temperature = <60000>; -+ hysteresis = <5000>; -+ type = "active"; -+ }; ++Name: chipdip-dac ++Info: Configures Chip Dip audio cards. ++Load: dtoverlay=chipdip-dac ++Params: + -+ cpu_hot: cpu-hot { -+ temperature = <67500>; -+ hysteresis = <5000>; -+ type = "active"; -+ }; + -+ cpu_vhot: cpu-vhot { -+ temperature = <75000>; -+ hysteresis = <5000>; -+ type = "active"; -+ }; -+}; ++Name: cirrus-wm5102 ++Info: Configures the Cirrus Logic Audio Card ++Load: dtoverlay=cirrus-wm5102 ++Params: + -+&cooling_maps { -+ tepid { -+ trip = <&cpu_tepid>; -+ cooling-device = <&fan 1 1>; -+ }; + -+ warm { -+ trip = <&cpu_warm>; -+ cooling-device = <&fan 2 2>; -+ }; ++Name: cm-swap-i2c0 ++Info: Largely for Compute Modules 1&3 where the original instructions for ++ adding a camera used GPIOs 0&1 for CAM1 and 28&29 for CAM0, whilst all ++ other platforms use 28&29 (or 44&45) for CAM1. ++ The default assignment through using this overlay is for ++ i2c0 to use 28&29, and i2c10 (aka i2c_csi_dsi) to use 28&29, but the ++ overrides allow this to be changed. ++Load: dtoverlay=cm-swap-i2c0,= ++Params: i2c0-gpio0 Use GPIOs 0&1 for i2c0 ++ i2c0-gpio28 Use GPIOs 28&29 for i2c0 (default) ++ i2c0-gpio44 Use GPIOs 44&45 for i2c0 ++ i2c10-gpio0 Use GPIOs 0&1 for i2c0 (default) ++ i2c10-gpio28 Use GPIOs 28&29 for i2c0 ++ i2c10-gpio44 Use GPIOs 44&45 for i2c0 + -+ hot { -+ trip = <&cpu_hot>; -+ cooling-device = <&fan 3 3>; -+ }; + -+ vhot { -+ trip = <&cpu_vhot>; -+ cooling-device = <&fan 4 4>; -+ }; ++Name: cma ++Info: Set custom CMA sizes, only use if you know what you are doing, might ++ clash with other overlays like vc4-fkms-v3d and vc4-kms-v3d. ++Load: dtoverlay=cma,= ++Params: cma-512 CMA is 512MB (needs 1GB) ++ cma-448 CMA is 448MB (needs 1GB) ++ cma-384 CMA is 384MB (needs 1GB) ++ cma-320 CMA is 320MB (needs 1GB) ++ cma-256 CMA is 256MB (needs 1GB) ++ cma-192 CMA is 192MB (needs 1GB) ++ cma-128 CMA is 128MB ++ cma-96 CMA is 96MB ++ cma-64 CMA is 64MB ++ cma-size CMA size in bytes, 4MB aligned ++ cma-default Use upstream's default value + -+ melt { -+ trip = <&cpu_crit>; -+ cooling-device = <&fan 4 4>; -+ }; -+}; + -+&gio { -+ // The GPIOs above 35 are not used on Pi 5, so shrink the upper bank -+ // to reduce the clutter in gpioinfo/pinctrl -+ brcm,gpio-bank-widths = <32 4>; ++Name: crystalfontz-cfa050_pi_m ++Info: Configures the Crystalfontz CFA050-PI-M series of Raspberry Pi CM4 ++ based modules using the CFA7201280A0_050Tx 7" TFT LCD displays, ++ with or without capacitive touch screen. ++ Requires use of vc4-kms-v3d. ++Load: dtoverlay=crystalfontz-cfa050_pi_m,= ++Params: captouch Enable capacitive touch display + -+ gpio-line-names = -+ "-", // GPIO_000 -+ "2712_BOOT_CS_N", // GPIO_001 -+ "2712_BOOT_MISO", // GPIO_002 -+ "2712_BOOT_MOSI", // GPIO_003 -+ "2712_BOOT_SCLK", // GPIO_004 -+ "-", // GPIO_005 -+ "-", // GPIO_006 -+ "-", // GPIO_007 -+ "-", // GPIO_008 -+ "-", // GPIO_009 -+ "-", // GPIO_010 -+ "-", // GPIO_011 -+ "-", // GPIO_012 -+ "-", // GPIO_013 -+ "-", // GPIO_014 -+ "-", // GPIO_015 -+ "-", // GPIO_016 -+ "-", // GPIO_017 -+ "-", // GPIO_018 -+ "-", // GPIO_019 -+ "PWR_GPIO", // GPIO_020 -+ "2712_G21_FS", // GPIO_021 -+ "-", // GPIO_022 -+ "-", // GPIO_023 -+ "BT_RTS", // GPIO_024 -+ "BT_CTS", // GPIO_025 -+ "BT_TXD", // GPIO_026 -+ "BT_RXD", // GPIO_027 -+ "WL_ON", // GPIO_028 -+ "BT_ON", // GPIO_029 -+ "WIFI_SDIO_CLK", // GPIO_030 -+ "WIFI_SDIO_CMD", // GPIO_031 -+ "WIFI_SDIO_D0", // GPIO_032 -+ "WIFI_SDIO_D1", // GPIO_033 -+ "WIFI_SDIO_D2", // GPIO_034 -+ "WIFI_SDIO_D3"; // GPIO_035 -+}; + -+&gio_aon { -+ gpio-line-names = -+ "RP1_SDA", // AON_GPIO_00 -+ "RP1_SCL", // AON_GPIO_01 -+ "RP1_RUN", // AON_GPIO_02 -+ "SD_IOVDD_SEL", // AON_GPIO_03 -+ "SD_PWR_ON", // AON_GPIO_04 -+ "ANT1", // AON_GPIO_05 -+ "ANT2", // AON_GPIO_06 -+ "-", // AON_GPIO_07 -+ "2712_WAKE", // AON_GPIO_08 -+ "2712_STAT_LED", // AON_GPIO_09 -+ "-", // AON_GPIO_10 -+ "-", // AON_GPIO_11 -+ "PMIC_INT", // AON_GPIO_12 -+ "UART_TX_FS", // AON_GPIO_13 -+ "UART_RX_FS", // AON_GPIO_14 -+ "-", // AON_GPIO_15 -+ "-", // AON_GPIO_16 ++Name: cutiepi-panel ++Info: 8" TFT LCD display and touch panel used by cutiepi.io ++Load: dtoverlay=cutiepi-panel ++Params: + -+ // Pad bank0 out to 32 entries -+ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + -+ "HDMI0_SCL", // AON_SGPIO_00 -+ "HDMI0_SDA", // AON_SGPIO_01 -+ "HDMI1_SCL", // AON_SGPIO_02 -+ "HDMI1_SDA", // AON_SGPIO_03 -+ "PMIC_SCL", // AON_SGPIO_04 -+ "PMIC_SDA"; // AON_SGPIO_05 ++Name: dacberry400 ++Info: Configures the dacberry400 add on soundcard ++Load: dtoverlay=dacberry400 ++Params: + -+ rp1_run_hog { -+ gpio-hog; -+ gpios = <2 GPIO_ACTIVE_HIGH>; -+ output-high; -+ line-name = "RP1 RUN pin"; -+ }; + -+ ant1: ant1-hog { -+ gpio-hog; -+ gpios = <5 GPIO_ACTIVE_HIGH>; -+ /* internal antenna enabled */ -+ output-high; -+ line-name = "ant1"; -+ }; ++Name: dht11 ++Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors ++ Also sometimes found with the part number(s) AM230x. ++Load: dtoverlay=dht11,= ++Params: gpiopin GPIO connected to the sensor's DATA output. ++ (default 4) + -+ ant2: ant2-hog { -+ gpio-hog; -+ gpios = <6 GPIO_ACTIVE_HIGH>; -+ /* external antenna disabled */ -+ output-low; -+ line-name = "ant2"; -+ }; -+}; + -+&rp1_gpio { -+ gpio-line-names = -+ "ID_SDA", // GPIO0 -+ "ID_SCL", // GPIO1 -+ "GPIO2", // GPIO2 -+ "GPIO3", // GPIO3 -+ "GPIO4", // GPIO4 -+ "GPIO5", // GPIO5 -+ "GPIO6", // GPIO6 -+ "GPIO7", // GPIO7 -+ "GPIO8", // GPIO8 -+ "GPIO9", // GPIO9 -+ "GPIO10", // GPIO10 -+ "GPIO11", // GPIO11 -+ "GPIO12", // GPIO12 -+ "GPIO13", // GPIO13 -+ "GPIO14", // GPIO14 -+ "GPIO15", // GPIO15 -+ "GPIO16", // GPIO16 -+ "GPIO17", // GPIO17 -+ "GPIO18", // GPIO18 -+ "GPIO19", // GPIO19 -+ "GPIO20", // GPIO20 -+ "GPIO21", // GPIO21 -+ "GPIO22", // GPIO22 -+ "GPIO23", // GPIO23 -+ "GPIO24", // GPIO24 -+ "GPIO25", // GPIO25 -+ "GPIO26", // GPIO26 -+ "GPIO27", // GPIO27 ++Name: dionaudio-kiwi ++Info: Configures the Dion Audio KIWI STREAMER ++Load: dtoverlay=dionaudio-kiwi ++Params: + -+ "PCIE_PWR_EN", // GPIO28 -+ "FAN_TACH", // GPIO29 -+ "HOST_SDA", // GPIO30 -+ "HOST_SCL", // GPIO31 -+ "ETH_RST_N", // GPIO32 -+ "PCIE_DET_WAKE", // GPIO33 + -+ "CD0_IO0_MICCLK", // GPIO34 -+ "CD0_IO0_MICDAT0", // GPIO35 -+ "RP1_PCIE_CLKREQ_N", // GPIO36 -+ "ETH_IRQ_N", // GPIO37 -+ "SDA0", // GPIO38 -+ "SCL0", // GPIO39 -+ "-", // GPIO40 -+ "-", // GPIO41 -+ "USB_VBUS_EN", // GPIO42 -+ "USB_OC_N", // GPIO43 -+ "RP1_STAT_LED", // GPIO44 -+ "FAN_PWM", // GPIO45 -+ "-", // GPIO46 -+ "2712_WAKE", // GPIO47 -+ "-", // GPIO48 -+ "-", // GPIO49 -+ "-", // GPIO50 -+ "-", // GPIO51 -+ "-", // GPIO52 -+ "-"; // GPIO53 ++Name: dionaudio-loco ++Info: Configures the Dion Audio LOCO DAC-AMP ++Load: dtoverlay=dionaudio-loco ++Params: + -+ usb_vbus_pins: usb_vbus_pins { -+ function = "vbus1"; -+ pins = "gpio42", "gpio43"; -+ }; -+}; + -+/ { -+ aliases: aliases { -+ blconfig = &blconfig; -+ blpubkey = &blpubkey; -+ bluetooth = &bluetooth; -+ console = &uart10; -+ ethernet0 = &rp1_eth; -+ wifi0 = &wifi; -+ fb = &fb; -+ mailbox = &mailbox; -+ mmc0 = &sdio1; -+ uart0 = &uart0; -+ uart1 = &uart1; -+ uart2 = &uart2; -+ uart3 = &uart3; -+ uart4 = &uart4; -+ uart10 = &uart10; -+ serial0 = &uart0; -+ serial1 = &uart1; -+ serial2 = &uart2; -+ serial3 = &uart3; -+ serial4 = &uart4; -+ serial10 = &uart10; -+ i2c = &i2c_arm; -+ i2c0 = &i2c0; -+ i2c1 = &i2c1; -+ i2c2 = &i2c2; -+ i2c3 = &i2c3; -+ i2c4 = &i2c4; -+ i2c5 = &i2c5; -+ i2c6 = &i2c6; -+ i2c10 = &i2c_rp1boot; -+ // Bit-bashed i2c_gpios start at 10 -+ spi0 = &spi0; -+ spi1 = &spi1; -+ spi2 = &spi2; -+ spi3 = &spi3; -+ spi4 = &spi4; -+ spi5 = &spi5; -+ spi10 = &spi10; -+ gpio0 = &gpio; -+ gpio1 = &gio; -+ gpio2 = &gio_aon; -+ gpio3 = &pinctrl; -+ gpio4 = &pinctrl_aon; -+ usb0 = &rp1_usb0; -+ usb1 = &rp1_usb1; -+ drm-dsi1 = &dsi0; -+ drm-dsi2 = &dsi1; -+ }; ++Name: dionaudio-loco-v2 ++Info: Configures the Dion Audio LOCO-V2 DAC-AMP ++Load: dtoverlay=dionaudio-loco-v2,= ++Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec ++ Digital volume control. Enable with ++ "dtoverlay=hifiberry-dacplus,24db_digital_gain" ++ (The default behaviour is that the Digital ++ volume control is limited to a maximum of ++ 0dB. ie. it can attenuate but not provide ++ gain. For most users, this will be desired ++ as it will prevent clipping. By appending ++ the 24dB_digital_gain parameter, the Digital ++ volume control will allow up to 24dB of ++ gain. If this parameter is enabled, it is the ++ responsibility of the user to ensure that ++ the Digital volume control is set to a value ++ that does not result in clipping/distortion!) + -+ __overrides__ { -+ bdaddr = <&bluetooth>, "local-bd-address["; -+ button_debounce = <&pwr_key>, "debounce-interval:0"; -+ cooling_fan = <&fan>, "status", <&rp1_pwm1>, "status"; -+ uart0_console = <&uart0>,"status", <&aliases>, "console=",&uart0; -+ i2c0 = <&i2c0>, "status"; -+ i2c1 = <&i2c1>, "status"; -+ i2c = <&i2c1>, "status"; -+ i2c_arm = <&i2c_arm>, "status"; -+ i2c_vc = <&i2c_vc>, "status"; -+ i2c_csi_dsi = <&i2c_csi_dsi>, "status"; -+ i2c_csi_dsi0 = <&i2c_csi_dsi0>, "status"; -+ i2c_csi_dsi1 = <&i2c_csi_dsi1>, "status"; -+ i2c0_baudrate = <&i2c0>, "clock-frequency:0"; -+ i2c1_baudrate = <&i2c1>, "clock-frequency:0"; -+ i2c_baudrate = <&i2c_arm>, "clock-frequency:0"; -+ i2c_arm_baudrate = <&i2c_arm>, "clock-frequency:0"; -+ i2c_vc_baudrate = <&i2c_vc>, "clock-frequency:0"; -+ krnbt = <&bluetooth>, "status"; -+ nvme = <&pciex1>, "status"; -+ pciex1 = <&pciex1>, "status"; -+ pciex1_gen = <&pciex1> , "max-link-speed:0"; -+ pciex1_no_l0s = <&pciex1>, "aspm-no-l0s?"; -+ pciex1_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0"; -+ pcie_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0"; -+ random = <&random>, "status"; -+ rtc = <&rpi_rtc>, "status"; -+ rtc_bbat_vchg = <&rpi_rtc>, "trickle-charge-microvolt:0"; -+ spi = <&spi0>, "status"; -+ suspend = <&pwr_key>, "linux,code:0=205"; -+ uart0 = <&uart0>, "status"; -+ wifiaddr = <&wifi>, "local-mac-address["; + -+ act_led_activelow = <&led_act>, "active-low?"; -+ act_led_trigger = <&led_act>, "linux,default-trigger"; -+ pwr_led_activelow = <&led_pwr>, "gpios:8"; -+ pwr_led_trigger = <&led_pwr>, "linux,default-trigger"; -+ eth_led0 = <&phy1>,"led-modes:0"; -+ eth_led1 = <&phy1>,"led-modes:4"; -+ drm_fb0_rp1_dsi0 = <&aliases>, "drm-fb0=",&dsi0; -+ drm_fb0_rp1_dsi1 = <&aliases>, "drm-fb0=",&dsi1; -+ drm_fb0_rp1_dpi = <&aliases>, "drm-fb0=",&dpi; -+ drm_fb0_vc4 = <&aliases>, "drm-fb0=",&vc4; -+ drm_fb1_rp1_dsi0 = <&aliases>, "drm-fb1=",&dsi0; -+ drm_fb1_rp1_dsi1 = <&aliases>, "drm-fb1=",&dsi1; -+ drm_fb1_rp1_dpi = <&aliases>, "drm-fb1=",&dpi; -+ drm_fb1_vc4 = <&aliases>, "drm-fb1=",&vc4; -+ drm_fb2_rp1_dsi0 = <&aliases>, "drm-fb2=",&dsi0; -+ drm_fb2_rp1_dsi1 = <&aliases>, "drm-fb2=",&dsi1; -+ drm_fb2_rp1_dpi = <&aliases>, "drm-fb2=",&dpi; -+ drm_fb2_vc4 = <&aliases>, "drm-fb2=",&vc4; ++Name: disable-bt ++Info: Disable onboard Bluetooth on Bluetooth-capable Raspberry Pis. On Pis ++ prior to Pi 5 this restores UART0/ttyAMA0 over GPIOs 14 & 15. ++Load: dtoverlay=disable-bt ++Params: + -+ ant1 = <&ant1>,"output-high?=on", -+ <&ant1>, "output-low?=off", -+ <&ant2>, "output-high?=off", -+ <&ant2>, "output-low?=on"; -+ ant2 = <&ant1>,"output-high?=off", -+ <&ant1>, "output-low?=on", -+ <&ant2>, "output-high?=on", -+ <&ant2>, "output-low?=off"; -+ noant = <&ant1>,"output-high?=off", -+ <&ant1>, "output-low?=on", -+ <&ant2>, "output-high?=off", -+ <&ant2>, "output-low?=on"; + -+ fan_temp0 = <&cpu_tepid>,"temperature:0"; -+ fan_temp1 = <&cpu_warm>,"temperature:0"; -+ fan_temp2 = <&cpu_hot>,"temperature:0"; -+ fan_temp3 = <&cpu_vhot>,"temperature:0"; -+ fan_temp0_hyst = <&cpu_tepid>,"hysteresis:0"; -+ fan_temp1_hyst = <&cpu_warm>,"hysteresis:0"; -+ fan_temp2_hyst = <&cpu_hot>,"hysteresis:0"; -+ fan_temp3_hyst = <&cpu_vhot>,"hysteresis:0"; -+ fan_temp0_speed = <&fan>, "cooling-levels:4"; -+ fan_temp1_speed = <&fan>, "cooling-levels:8"; -+ fan_temp2_speed = <&fan>, "cooling-levels:12"; -+ fan_temp3_speed = <&fan>, "cooling-levels:16"; -+ }; -+}; -diff --git a/arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi b/arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi -new file mode 100644 -index 000000000000..f88de824e9d7 ---- /dev/null -+++ b/arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi -@@ -0,0 +1,337 @@ -+// SPDX-License-Identifier: GPL-2.0 ++Name: disable-bt-pi5 ++Info: See disable-bt + -+#include + -+&soc { -+ firmware: firmware { -+ compatible = "raspberrypi,bcm2835-firmware", "simple-mfd"; -+ #address-cells = <1>; -+ #size-cells = <1>; ++Name: disable-emmc2 ++Info: Disable EMMC2 controller on BCM2711. ++ The allows the onboard EMMC storage on Compute Module 4 to be disabled ++ e.g. if a fault has occurred. ++Load: dtoverlay=disable-emmc2 ++Params: + -+ mboxes = <&mailbox>; -+ dma-ranges; + -+ firmware_clocks: clocks { -+ compatible = "raspberrypi,firmware-clocks"; -+ #clock-cells = <1>; -+ }; ++Name: disable-wifi ++Info: Disable onboard WLAN on WiFi-capable Raspberry Pis. ++Load: dtoverlay=disable-wifi ++Params: + -+ reset: reset { -+ compatible = "raspberrypi,firmware-reset"; -+ #reset-cells = <1>; -+ }; + -+ vcio: vcio { -+ compatible = "raspberrypi,vcio"; -+ }; -+ }; ++Name: disable-wifi-pi5 ++Info: See disable-wifi + -+ power: power { -+ compatible = "raspberrypi,bcm2835-power"; -+ firmware = <&firmware>; -+ #power-domain-cells = <1>; -+ }; + -+ fb: fb { -+ compatible = "brcm,bcm2708-fb"; -+ firmware = <&firmware>; -+ status = "okay"; -+ }; ++Name: dpi18 ++Info: Overlay for a generic 18-bit DPI display ++ This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output ++ 2-3 seconds after the kernel has started. ++Load: dtoverlay=dpi18 ++Params: + -+ rpi_rtc: rpi_rtc { -+ compatible = "raspberrypi,rpi-rtc"; -+ firmware = <&firmware>; -+ status = "okay"; -+ trickle-charge-microvolt = <0>; -+ }; + -+ nvmem_otp: nvmem_otp { -+ compatible = "raspberrypi,rpi-otp"; -+ firmware = <&firmware>; -+ reg = <0 192>; -+ status = "okay"; -+ }; ++Name: dpi18cpadhi ++Info: Overlay for a generic 18-bit DPI display (in 'mode 6' connection scheme) ++ This uses GPIOs 0-9,12-17,20-25 (so no I2C, uart etc.), and activates ++ the output 3-3 seconds after the kernel has started. ++Load: dtoverlay=dpi18cpadhi ++Params: + -+ nvmem_cust: nvmem_cust { -+ compatible = "raspberrypi,rpi-otp"; -+ firmware = <&firmware>; -+ reg = <1 8>; -+ status = "okay"; -+ }; + -+ nvmem_mac: nvmem_mac { -+ compatible = "raspberrypi,rpi-otp"; -+ firmware = <&firmware>; -+ reg = <2 6>; -+ status = "okay"; -+ }; ++Name: dpi24 ++Info: Overlay for a generic 24-bit DPI display ++ This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output ++ 2-3 seconds after the kernel has started. ++Load: dtoverlay=dpi24 ++Params: + -+ nvmem_priv: nvmem_priv { -+ compatible = "raspberrypi,rpi-otp"; -+ firmware = <&firmware>; -+ reg = <3 16>; -+ status = "okay"; -+ }; + -+ /* Define these notional regulators for use by overlays, etc. */ -+ vdd_3v3_reg: fixedregulator_3v3 { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-max-microvolt = <3300000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-name = "3v3"; -+ }; ++Name: draws ++Info: Configures the NW Digital Radio DRAWS Hat + -+ vdd_5v0_reg: fixedregulator_5v0 { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-max-microvolt = <5000000>; -+ regulator-min-microvolt = <5000000>; -+ regulator-name = "5v0"; -+ }; -+}; ++ The board includes an ADC to measure various board values and also ++ provides two analog user inputs on the expansion header. The ADC ++ can be configured for various sample rates and gain values to adjust ++ the input range. Tables describing the two parameters follow. + -+/ { -+ __overrides__ { -+ arm_freq; -+ axiperf = <&axiperf>,"status"; ++ ADC Gain Values: ++ 0 = +/- 6.144V ++ 1 = +/- 4.096V ++ 2 = +/- 2.048V ++ 3 = +/- 1.024V ++ 4 = +/- 0.512V ++ 5 = +/- 0.256V ++ 6 = +/- 0.256V ++ 7 = +/- 0.256V + -+ nvmem_cust_rw = <&nvmem_cust>,"rw?"; -+ nvmem_priv_rw = <&nvmem_priv>,"rw?"; -+ nvmem_mac_rw = <&nvmem_mac>,"rw?"; -+ strict_gpiod = <&chosen>, "bootargs=pinctrl_rp1.persist_gpio_outputs=n"; -+ }; -+}; ++ ADC Datarate Values: ++ 0 = 128sps ++ 1 = 250sps ++ 2 = 490sps ++ 3 = 920sps ++ 4 = 1600sps (default) ++ 5 = 2400sps ++ 6 = 3300sps ++ 7 = 3300sps ++Load: dtoverlay=draws,= ++Params: draws_adc_ch4_gain Sets the full scale resolution of the ADCs ++ input voltage sensor (default 1) + -+pciex1: &pcie1 { }; -+pciex4: &pcie2 { }; ++ draws_adc_ch4_datarate Sets the datarate of the ADCs input voltage ++ sensor + -+&dma32 { -+ /* The VPU firmware uses DMA channel 11 for VCHIQ */ -+ brcm,dma-channel-mask = <0x03f>; -+}; ++ draws_adc_ch5_gain Sets the full scale resolution of the ADCs ++ 5V rail voltage sensor (default 1) + -+&dma40 { -+ /* The VPU firmware DMA channel 11 for VCHIQ */ -+ brcm,dma-channel-mask = <0x07c0>; -+}; ++ draws_adc_ch5_datarate Sets the datarate of the ADCs 4V rail voltage ++ sensor + -+&hdmi0 { -+ dmas = <&dma40 (10|(1<<30)|(1<<24)|(10<<16)|(15<<20))>; -+}; ++ draws_adc_ch6_gain Sets the full scale resolution of the ADCs ++ AIN2 input (default 2) + -+&hdmi1 { -+ dmas = <&dma40 (17|(1<<30)|(1<<24)|(10<<16)|(15<<20))>; -+}; ++ draws_adc_ch6_datarate Sets the datarate of the ADCs AIN2 input + -+&spi10 { -+ dmas = <&dma40 6>, <&dma40 7>; -+ dma-names = "tx", "rx"; -+}; ++ draws_adc_ch7_gain Sets the full scale resolution of the ADCs ++ AIN3 input (default 2) + -+&usb { -+ power-domains = <&power RPI_POWER_DOMAIN_USB>; -+}; ++ draws_adc_ch7_datarate Sets the datarate of the ADCs AIN3 input + -+&rmem { -+ /* -+ * RPi5's co-processor will copy the board's bootloader configuration -+ * into memory for the OS to consume. It'll also update this node with -+ * its placement information. -+ */ -+ blconfig: nvram@0 { -+ compatible = "raspberrypi,bootloader-config", "nvmem-rmem"; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ reg = <0x0 0x0 0x0>; -+ no-map; -+ status = "disabled"; -+ }; -+ /* -+ * RPi5 will copy the binary public key blob (if present) from the bootloader -+ * into memory for use by the OS. -+ */ -+ blpubkey: nvram@1 { -+ compatible = "raspberrypi,bootloader-public-key", "nvmem-rmem"; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ reg = <0x0 0x0 0x0>; -+ no-map; -+ status = "disabled"; -+ }; -+}; ++ alsaname Name of the ALSA audio device (default "draws") + -+&rp1_adc { -+ status = "okay"; -+}; + -+/* Add some gpiomem nodes to make the devices accessible to userspace. -+ * /dev/gpiomem should expose the registers for the interface with DT alias -+ * gpio. -+ */ ++Name: dwc-otg ++Info: Selects the dwc_otg USB controller driver which has fiq support. This ++ is the default on all except the Pi Zero which defaults to dwc2. ++Load: dtoverlay=dwc-otg ++Params: + -+&rp1 { -+ gpiomem@d0000 { -+ /* Export IO_BANKs, RIO_BANKs and PADS_BANKs to userspace */ -+ compatible = "raspberrypi,gpiomem"; -+ reg = <0xc0 0x400d0000 0x0 0x30000>; -+ chardev-name = "gpiomem0"; -+ }; -+}; + -+&soc { -+ gpiomem@7d508500 { -+ compatible = "raspberrypi,gpiomem"; -+ reg = <0x7d508500 0x40>; -+ chardev-name = "gpiomem1"; -+ }; ++Name: dwc2 ++Info: Selects the dwc2 USB controller driver ++Load: dtoverlay=dwc2,= ++Params: dr_mode Dual role mode: "host", "peripheral" or "otg" + -+ gpiomem@7d517c00 { -+ compatible = "raspberrypi,gpiomem"; -+ reg = <0x7d517c00 0x40>; -+ chardev-name = "gpiomem2"; -+ }; ++ g-rx-fifo-size Size of rx fifo size in gadget mode + -+ gpiomem@7d504100 { -+ compatible = "raspberrypi,gpiomem"; -+ reg = <0x7d504100 0x20>; -+ chardev-name = "gpiomem3"; -+ }; ++ g-np-tx-fifo-size Size of non-periodic tx fifo size in gadget ++ mode + -+ gpiomem@7d510700 { -+ compatible = "raspberrypi,gpiomem"; -+ reg = <0x7d510700 0x20>; -+ chardev-name = "gpiomem4"; -+ }; + -+ sound: sound { -+ status = "disabled"; -+ }; -+}; ++[ The ds1307-rtc overlay has been deleted. See i2c-rtc. ] + -+i2c0: &rp1_i2c0 { }; -+i2c1: &rp1_i2c1 { }; -+i2c2: &rp1_i2c2 { }; -+i2c3: &rp1_i2c3 { }; -+i2c4: &rp1_i2c4 { }; -+i2c5: &rp1_i2c5 { }; -+i2c6: &rp1_i2c6 { }; -+i2s: &rp1_i2s0 { }; -+i2s_clk_producer: &rp1_i2s0 { }; -+i2s_clk_consumer: &rp1_i2s1 { }; -+pwm0: &rp1_pwm0 { }; -+pwm1: &rp1_pwm1 { }; -+pwm: &pwm0 { }; -+spi0: &rp1_spi0 { }; -+spi1: &rp1_spi1 { }; -+spi2: &rp1_spi2 { }; -+spi3: &rp1_spi3 { }; -+spi4: &rp1_spi4 { }; -+spi5: &rp1_spi5 { }; + -+uart0_pins: &rp1_uart0_14_15 {}; -+uart0_ctsrts_pins: &rp1_uart0_ctsrts_16_17 {}; -+uart0: &rp1_uart0 { -+ pinctrl-0 = <&uart0_pins>; -+}; ++Name: edt-ft5406 ++Info: Overlay for the EDT FT5406 touchscreen. ++ This works with the Raspberry Pi 7" touchscreen when not being polled ++ by the firmware. ++ By default the overlay uses the i2c_csi_dsi I2C interface, but this ++ can be overridden ++ You MUST use either "disable_touchscreen=1" or "ignore_lcd=1" in ++ config.txt to stop the firmware polling the touchscreen. ++Load: dtoverlay=edt-ft5406,= ++Params: sizex Touchscreen size x (default 800) ++ sizey Touchscreen size y (default 480) ++ invx Touchscreen inverted x axis ++ invy Touchscreen inverted y axis ++ swapxy Touchscreen swapped x y axis ++ i2c0 Choose the I2C0 bus on GPIOs 0&1 ++ i2c1 Choose the I2C1 bus on GPIOs 2&3 ++ i2c3 Choose the I2C3 bus (configure with the i2c3 ++ overlay - BCM2711 only) ++ i2c4 Choose the I2C4 bus (configure with the i2c4 ++ overlay - BCM2711 only) ++ i2c5 Choose the I2C5 bus (configure with the i2c5 ++ overlay - BCM2711 only) ++ i2c6 Choose the I2C6 bus (configure with the i2c6 ++ overlay - BCM2711 only) ++ addr Sets the address for the touch controller. Note ++ that the device must be configured to use the ++ specified address. + -+uart1_pins: &rp1_uart1_0_1 {}; -+uart1_ctsrts_pins: &rp1_uart1_ctsrts_2_3 {}; -+uart1: &rp1_uart1 { }; + -+uart2_pins: &rp1_uart2_4_5 {}; -+uart2_ctsrts_pins: &rp1_uart2_ctsrts_6_7 {}; -+uart2: &rp1_uart2 { }; ++Name: enc28j60 ++Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI0 ++Load: dtoverlay=enc28j60,= ++Params: int_pin GPIO used for INT (default 25) + -+uart3_pins: &rp1_uart3_8_9 {}; -+uart3_ctsrts_pins: &rp1_uart3_ctsrts_10_11 {}; -+uart3: &rp1_uart3 { }; ++ speed SPI bus speed (default 12000000) + -+uart4_pins: &rp1_uart4_12_13 {}; -+uart4_ctsrts_pins: &rp1_uart4_ctsrts_14_15 {}; -+uart4: &rp1_uart4 { }; + -+i2c0_pins: &rp1_i2c0_0_1 {}; -+i2c_vc: &i2c0 { // This is pins 27,28 on the header (not MIPI) -+ pinctrl-0 = <&i2c0_pins>; -+ pinctrl-names = "default"; -+ clock-frequency = <100000>; -+}; ++Name: enc28j60-spi2 ++Info: Overlay for the Microchip ENC28J60 Ethernet Controller on SPI2 ++Load: dtoverlay=enc28j60-spi2,= ++Params: int_pin GPIO used for INT (default 39) + -+i2c1_pins: &rp1_i2c1_2_3 {}; -+i2c_arm: &i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins>; -+ clock-frequency = <100000>; -+}; ++ speed SPI bus speed (default 12000000) + -+i2c2_pins: &rp1_i2c2_4_5 {}; -+&i2c2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins>; -+}; + -+i2c3_pins: &rp1_i2c3_6_7 {}; -+&i2c3 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c3_pins>; -+}; ++Name: exc3000 ++Info: Enables I2C connected EETI EXC3000 multiple touch controller using ++ GPIO 4 (pin 7 on GPIO header) for interrupt. ++Load: dtoverlay=exc3000,= ++Params: interrupt GPIO used for interrupt (default 4) ++ sizex Touchscreen size x (default 4096) ++ sizey Touchscreen size y (default 4096) ++ invx Touchscreen inverted x axis ++ invy Touchscreen inverted y axis ++ swapxy Touchscreen swapped x y axis + -+&i2s_clk_producer { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&rp1_i2s0_18_21>; -+}; + -+&i2s_clk_consumer { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&rp1_i2s1_18_21>; -+}; ++Name: fbtft ++Info: Overlay for SPI-connected displays using the fbtft drivers. + -+spi0_pins: &rp1_spi0_gpio9 {}; -+spi0_cs_pins: &rp1_spi0_cs_gpio7 {}; ++ This overlay seeks to replace the functionality provided by fbtft_device ++ which is now gone from the kernel. + -+&spi0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi0_pins &spi0_cs_pins>; -+ cs-gpios = <&gpio 8 1>, <&gpio 7 1>; ++ Most displays from fbtft_device have been ported over. ++ Example: ++ dtoverlay=fbtft,spi0-0,rpi-display,reset_pin=23,dc_pin=24,led_pin=18,rotate=270 + -+ spidev0: spidev@0 { -+ compatible = "spidev"; -+ reg = <0>; /* CE0 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <125000000>; -+ }; ++ It is also possible to specify the controller (this will use the default ++ init sequence in the driver). ++ Example: ++ dtoverlay=fbtft,spi0-0,ili9341,bgr,reset_pin=23,dc_pin=24,led_pin=18,rotate=270 + -+ spidev1: spidev@1 { -+ compatible = "spidev"; -+ reg = <1>; /* CE1 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <125000000>; -+ }; -+}; ++ For devices on spi1 or spi2, the interfaces should be enabled ++ with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. + -+spi2_pins: &rp1_spi2_gpio1 {}; -+&spi2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi2_pins>; -+}; ++ The following features of fbtft_device have not been ported over: ++ - parallel bus is not supported ++ - the init property which overrides the controller initialization ++ sequence is not supported as a parameter due to memory limitations in ++ the bootloader responsible for applying the overlay. + -+spi3_pins: &rp1_spi3_gpio5 {}; -+&spi3 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi3_pins>; -+}; ++ See https://github.com/notro/fbtft/wiki/FBTFT-RPI-overlays for how to ++ create an overlay. + -+spi4_pins: &rp1_spi4_gpio9 {}; -+&spi4 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi4_pins>; -+}; ++Load: dtoverlay=fbtft,= ++Params: ++ spi- Configure device at spi, cs ++ (boolean, required) ++ speed SPI bus speed in Hz (default 32000000) ++ cpha Shifted clock phase (CPHA) mode ++ cpol Inverse clock polarity (CPOL) mode + -+spi5_pins: &rp1_spi5_gpio13 {}; -+&spi5 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi5_pins>; -+}; -diff --git a/arch/arm/boot/dts/broadcom/bcm2712.dtsi b/arch/arm/boot/dts/broadcom/bcm2712.dtsi -new file mode 100644 -index 000000000000..ee389a9cf89b ---- /dev/null -+++ b/arch/arm/boot/dts/broadcom/bcm2712.dtsi -@@ -0,0 +1,1304 @@ -+// SPDX-License-Identifier: GPL-2.0 -+#include -+#include -+#include ++ adafruit18 Adafruit 1.8 ++ adafruit22 Adafruit 2.2 (old) ++ adafruit22a Adafruit 2.2 ++ adafruit28 Adafruit 2.8 ++ adafruit13m Adafruit 1.3 OLED ++ admatec_c-berry28 C-Berry28 ++ dogs102 EA DOGS102 ++ er_tftm050_2 ER-TFTM070-2 ++ er_tftm070_5 ER-TFTM070-5 ++ ew24ha0 EW24HA0 ++ ew24ha0_9bit EW24HA0 in 9-bit mode ++ freetronicsoled128 Freetronics OLED128 ++ hy28a HY28A ++ hy28b HY28B ++ itdb28_spi ITDB02-2.8 with SPI interface circuit ++ mi0283qt-2 Watterott MI0283QT-2 ++ mi0283qt-9a Watterott MI0283QT-9A ++ nokia3310 Nokia 3310 ++ nokia3310a Nokia 3310a ++ nokia5110 Nokia 5110 ++ piscreen PiScreen ++ pitft Adafruit PiTFT 2.8 ++ pioled ILSoft OLED ++ rpi-display Watterott rpi-display ++ sainsmart18 Sainsmart 1.8 ++ sainsmart32_spi Sainsmart 3.2 with SPI interfce circuit ++ tinylcd35 TinyLCD 3.5 ++ tm022hdh26 Tianma TM022HDH26 ++ tontec35_9481 Tontect 3.5 with ILI9481 controller ++ tontec35_9486 Tontect 3.5 with ILI9486 controller ++ waveshare32b Waveshare 3.2 ++ waveshare22 Waveshare 2.2 + -+/ { -+ compatible = "brcm,bcm2712", "brcm,bcm2711"; -+ model = "BCM2712"; ++ bd663474 BD663474 display controller ++ hx8340bn HX8340BN display controller ++ hx8347d HX8347D display controller ++ hx8353d HX8353D display controller ++ hx8357d HX8357D display controller ++ ili9163 ILI9163 display controller ++ ili9320 ILI9320 display controller ++ ili9325 ILI9325 display controller ++ ili9340 ILI9340 display controller ++ ili9341 ILI9341 display controller ++ ili9481 ILI9481 display controller ++ ili9486 ILI9486 display controller ++ pcd8544 PCD8544 display controller ++ ra8875 RA8875 display controller ++ s6d02a1 S6D02A1 display controller ++ s6d1121 S6D1121 display controller ++ seps525 SEPS525 display controller ++ sh1106 SH1106 display controller ++ ssd1289 SSD1289 display controller ++ ssd1305 SSD1305 display controller ++ ssd1306 SSD1306 display controller ++ ssd1325 SSD1325 display controller ++ ssd1331 SSD1331 display controller ++ ssd1351 SSD1351 display controller ++ st7735r ST7735R display controller ++ st7789v ST7789V display controller ++ tls8204 TLS8204 display controller ++ uc1611 UC1611 display controller ++ uc1701 UC1701 display controller ++ upd161704 UPD161704 display controller + -+ #address-cells = <2>; -+ #size-cells = <1>; ++ width Display width in pixels ++ height Display height in pixels ++ regwidth Display controller register width (default is ++ driver specific) ++ buswidth Display bus interface width (default 8) ++ debug Debug output level {0-7} ++ rotate Display rotation {0, 90, 180, 270} (counter ++ clockwise). Not supported by all drivers. ++ bgr Enable BGR mode (default off). Use if Red and ++ Blue are swapped. Not supported by all drivers. ++ fps Frames per second (default 30). In effect this ++ states how long the driver will wait after video ++ memory has been changed until display update ++ transfer is started. ++ txbuflen Length of the FBTFT transmit buffer ++ (default 4096) ++ startbyte Sets the Start byte used by fb_ili9320, ++ fb_ili9325 and fb_hx8347d. Common value is 0x70. ++ gamma String representation of Gamma Curve(s). Driver ++ specific. Not supported by all drivers. ++ reset_pin GPIO pin for RESET ++ dc_pin GPIO pin for D/C ++ led_pin GPIO pin for LED backlight + -+ interrupt-parent = <&gicv2>; + -+ rmem: reserved-memory { -+ #address-cells = <2>; -+ #size-cells = <1>; -+ ranges; ++Name: fe-pi-audio ++Info: Configures the Fe-Pi Audio Sound Card ++Load: dtoverlay=fe-pi-audio ++Params: + -+ atf@0 { -+ reg = <0x0 0x0 0x80000>; -+ no-map; -+ }; + -+ cma: linux,cma { -+ compatible = "shared-dma-pool"; -+ size = <0x4000000>; /* 64MB */ -+ reusable; -+ linux,cma-default; ++Name: fsm-demo ++Info: A demonstration of the gpio-fsm driver. The GPIOs are chosen to work ++ nicely with a "traffic-light" display of red, amber and green LEDs on ++ GPIOs 7, 8 and 25 respectively. ++Load: dtoverlay=fsm-demo,= ++Params: fsm_debug Enable debug logging (default off) + -+ /* -+ * arm64 reserves the CMA by default somewhere in -+ * ZONE_DMA32, that's not good enough for the BCM2711 -+ * as some devices can only address the lower 1G of -+ * memory (ZONE_DMA). -+ */ -+ alloc-ranges = <0x0 0x00000000 0x40000000>; -+ }; -+ }; + -+ thermal-zones { -+ cpu_thermal: cpu-thermal { -+ polling-delay-passive = <2000>; -+ polling-delay = <1000>; -+ coefficients = <(-550) 450000>; -+ thermal-sensors = <&thermal>; ++Name: gc9a01 ++Info: Enables GalaxyCore's GC9A01 single chip driver based displays on ++ SPI0 as fb1, using GPIOs DC=25, RST=27 and BL=18 (physical ++ GPIO header pins 22, 13 and 12 respectively) in addition to the ++ SPI0 pins DIN=10, CLK=11 and CS=8 (physical GPIO header pins 19, ++ 23 and 24 respectively). ++Load: dtoverlay=gc9a01,= ++Params: speed Display SPI bus speed + -+ thermal_trips: trips { -+ cpu_crit: cpu-crit { -+ temperature = <110000>; -+ hysteresis = <0>; -+ type = "critical"; -+ }; -+ }; ++ rotate Display rotation {0,90,180,270} + -+ cooling_maps: cooling-maps { -+ }; -+ }; -+ }; ++ width Width of the display + -+ clk_27MHz: clk-27M { -+ #clock-cells = <0>; -+ compatible = "fixed-clock"; -+ clock-frequency = <27000000>; -+ clock-output-names = "27MHz-clock"; -+ }; ++ height Height of the display + -+ clk_108MHz: clk-108M { -+ #clock-cells = <0>; -+ compatible = "fixed-clock"; -+ clock-frequency = <108000000>; -+ clock-output-names = "108MHz-clock"; -+ }; ++ fps Delay between frame updates + -+ hvs: hvs@107c580000 { -+ compatible = "brcm,bcm2712-hvs"; -+ reg = <0x10 0x7c580000 0x1a000>; -+ interrupt-parent = <&disp_intr>; -+ interrupts = <2>, <9>, <16>; -+ interrupt-names = "ch0-eof", "ch1-eof", "ch2-eof"; -+ //iommus = <&iommu4>; -+ status = "disabled"; -+ }; ++ debug Debug output level {0-7} + -+ soc: soc { -+ compatible = "simple-bus"; -+ #address-cells = <1>; -+ #size-cells = <1>; + -+ ranges = <0x7c000000 0x10 0x7c000000 0x04000000>; -+ /* Emulate a contiguous 30-bit address range for DMA */ -+ dma-ranges = <0xc0000000 0x00 0x00000000 0x40000000>, -+ <0x7c000000 0x10 0x7c000000 0x04000000>; ++Name: ghost-amp ++Info: An overlay for the Ghost amplifier. ++Load: dtoverlay=ghost-amp,= ++Params: fsm_debug Enable debug logging of the GPIO FSM (default ++ off) + -+ system_timer: timer@7c003000 { -+ compatible = "brcm,bcm2835-system-timer"; -+ reg = <0x7c003000 0x1000>; -+ interrupts = , -+ , -+ , -+ ; -+ clock-frequency = <1000000>; -+ }; + -+ firmwarekms: firmwarekms@7d503000 { -+ compatible = "raspberrypi,rpi-firmware-kms-2712"; -+ /* SUN_L2 interrupt reg */ -+ reg = <0x7d503000 0x18>; -+ interrupt-parent = <&cpu_l2_irq>; -+ interrupts = <19>; -+ brcm,firmware = <&firmware>; -+ status = "disabled"; -+ }; ++Name: goodix ++Info: Enables I2C connected Goodix gt9271 multiple touch controller using ++ GPIOs 4 and 17 (pins 7 and 11 on GPIO header) for interrupt and reset. ++Load: dtoverlay=goodix,= ++Params: interrupt GPIO used for interrupt (default 4) ++ reset GPIO used for reset (default 17) + -+ axiperf: axiperf { -+ compatible = "brcm,bcm2712-axiperf"; -+ reg = <0x7c012800 0x100>, -+ <0x7e000000 0x100>; -+ firmware = <&firmware>; -+ status = "disabled"; -+ }; + -+ mailbox: mailbox@7c013880 { -+ compatible = "brcm,bcm2835-mbox"; -+ reg = <0x7c013880 0x40>; -+ interrupts = ; -+ #mbox-cells = <0>; -+ }; ++Name: googlevoicehat-soundcard ++Info: Configures the Google voiceHAT soundcard ++Load: dtoverlay=googlevoicehat-soundcard ++Params: + -+ pixelvalve0: pixelvalve@7c410000 { -+ compatible = "brcm,bcm2712-pixelvalve0"; -+ reg = <0x7c410000 0x100>; -+ interrupts = ; -+ status = "disabled"; -+ }; + -+ pixelvalve1: pixelvalve@7c411000 { -+ compatible = "brcm,bcm2712-pixelvalve1"; -+ reg = <0x7c411000 0x100>; -+ interrupts = ; -+ status = "disabled"; -+ }; ++Name: gpio-charger ++Info: This is a generic overlay for detecting charger with GPIO. ++Load: dtoverlay=gpio-charger,= ++Params: gpio GPIO pin to trigger on (default 4) ++ active_low When this is 1 (active low), a falling ++ edge generates a charging event and a ++ rising edge generates a discharging event. ++ When this is 0 (active high), this is ++ reversed. The default is 0 (active high) ++ gpio_pull Desired pull-up/down state (off, down, up) ++ Default is "down". ++ type Set a charger type for the pin. (Default: mains) + -+ mop: mop@7c500000 { -+ compatible = "brcm,bcm2712-mop"; -+ reg = <0x7c500000 0x28>; -+ interrupt-parent = <&disp_intr>; -+ interrupts = <1>; -+ status = "disabled"; -+ }; + -+ moplet: moplet@7c501000 { -+ compatible = "brcm,bcm2712-moplet"; -+ reg = <0x7c501000 0x20>; -+ interrupt-parent = <&disp_intr>; -+ interrupts = <0>; -+ status = "disabled"; -+ }; ++Name: gpio-fan ++Info: Configure a GPIO pin to control a cooling fan. ++Load: dtoverlay=gpio-fan,= ++Params: gpiopin GPIO used to control the fan (default 12) ++ temp Temperature at which the fan switches on, in ++ millicelcius (default 55000) ++ hyst Temperature delta (in millicelcius) below ++ temp at which the fan will drop to minrpm ++ (default 10000) + -+ disp_intr: interrupt-controller@7c502000 { -+ compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc"; -+ reg = <0x7c502000 0x30>; -+ interrupts = ; -+ interrupt-controller; -+ #interrupt-cells = <1>; -+ status = "disabled"; -+ }; + -+ dvp: clock@7c700000 { -+ compatible = "brcm,brcm2711-dvp"; -+ reg = <0x7c700000 0x10>; -+ clocks = <&clk_108MHz>; -+ #clock-cells = <1>; -+ #reset-cells = <1>; -+ }; ++Name: gpio-hog ++Info: Activate a "hog" for a GPIO - request that the kernel configures it as ++ an output, driven low or high as indicated by the presence or absence ++ of the active_low parameter. Note that a hogged GPIO is not available ++ to other drivers or for gpioset/gpioget. ++Load: dtoverlay=gpio-hog,= ++Params: gpio GPIO pin to hog (default 26) ++ active_low If set, the hog drives the GPIO low (defaults ++ to off - the GPIO is driven high) + -+ /* -+ * This node is the provider for the enable-method for -+ * bringing up secondary cores. -+ */ -+ local_intc: local_intc@7cd00000 { -+ compatible = "brcm,bcm2836-l1-intc"; -+ reg = <0x7cd00000 0x100>; -+ }; + -+ uart0: serial@7d001000 { -+ compatible = "arm,pl011", "arm,primecell"; -+ reg = <0x7d001000 0x200>; -+ interrupts = ; -+ clocks = <&clk_uart>, -+ <&clk_vpu>; -+ clock-names = "uartclk", "apb_pclk"; -+ arm,primecell-periphid = <0x00241011>; -+ status = "disabled"; -+ }; ++Name: gpio-ir ++Info: Use GPIO pin as rc-core style infrared receiver input. The rc-core- ++ based gpio_ir_recv driver maps received keys directly to a ++ /dev/input/event* device, all decoding is done by the kernel - LIRC is ++ not required! The key mapping and other decoding parameters can be ++ configured by "ir-keytable" tool. ++Load: dtoverlay=gpio-ir,= ++Params: gpio_pin Input pin number. Default is 18. + -+ uart2: serial@7d001400 { -+ compatible = "arm,pl011", "arm,primecell"; -+ reg = <0x7d001400 0x200>; -+ interrupts = ; -+ clocks = <&clk_uart>, -+ <&clk_vpu>; -+ clock-names = "uartclk", "apb_pclk"; -+ arm,primecell-periphid = <0x00241011>; -+ status = "disabled"; -+ }; ++ gpio_pull Desired pull-up/down state (off, down, up) ++ Default is "up". + -+ uart5: serial@7d001a00 { -+ compatible = "arm,pl011", "arm,primecell"; -+ reg = <0x7d001a00 0x200>; -+ interrupts = ; -+ clocks = <&clk_uart>, -+ <&clk_vpu>; -+ clock-names = "uartclk", "apb_pclk"; -+ arm,primecell-periphid = <0x00241011>; -+ status = "disabled"; -+ }; ++ invert "1" = invert the input (active-low signalling). ++ "0" = non-inverted input (active-high ++ signalling). Default is "1". + -+ sdhost: mmc@7d002000 { -+ compatible = "brcm,bcm2835-sdhost"; -+ reg = <0x7d002000 0x100>; -+ //interrupts = ; -+ clocks = <&clk_vpu>; -+ status = "disabled"; -+ }; ++ rc-map-name Default rc keymap (can also be changed by ++ ir-keytable), defaults to "rc-rc6-mce" + -+ i2s: i2s@7d003000 { -+ compatible = "brcm,bcm2835-i2s"; -+ reg = <0x7d003000 0x24>; -+ //clocks = <&cprman BCM2835_CLOCK_PCM>; -+ status = "disabled"; -+ }; + -+ spi0: spi@7d004000 { -+ compatible = "brcm,bcm2835-spi"; -+ reg = <0x7d004000 0x200>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ num-cs = <1>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; ++Name: gpio-ir-tx ++Info: Use GPIO pin as bit-banged infrared transmitter output. ++ This is an alternative to "pwm-ir-tx". gpio-ir-tx doesn't require ++ a PWM so it can be used together with onboard analog audio. ++Load: dtoverlay=gpio-ir-tx,= ++Params: gpio_pin Output GPIO (default 18) + -+ spi3: spi@7d004600 { -+ compatible = "brcm,bcm2835-spi"; -+ reg = <0x7d004600 0x0200>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; ++ invert "1" = invert the output (make it active-low). ++ Default is "0" (active-high). + -+ spi4: spi@7d004800 { -+ compatible = "brcm,bcm2835-spi"; -+ reg = <0x7d004800 0x0200>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; + -+ spi5: spi@7d004a00 { -+ compatible = "brcm,bcm2835-spi"; -+ reg = <0x7d004a00 0x0200>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; ++Name: gpio-key ++Info: This is a generic overlay for activating GPIO keypresses using ++ the gpio-keys library and this dtoverlay. Multiple keys can be ++ set up using multiple calls to the overlay for configuring ++ additional buttons or joysticks. You can see available keycodes ++ at https://github.com/torvalds/linux/blob/v4.12/include/uapi/ ++ linux/input-event-codes.h#L64 ++Load: dtoverlay=gpio-key,= ++Params: gpio GPIO pin to trigger on (default 3) ++ active_low When this is 1 (active low), a falling ++ edge generates a key down event and a ++ rising edge generates a key up event. ++ When this is 0 (active high), this is ++ reversed. The default is 1 (active low) ++ gpio_pull Desired pull-up/down state (off, down, up) ++ Default is "up". Note that the default pin ++ (GPIO3) has an external pullup ++ label Set a label for the key ++ keycode Set the key code for the button + -+ spi6: spi@7d004c00 { -+ compatible = "brcm,bcm2835-spi"; -+ reg = <0x7d004c00 0x0200>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; + -+ i2c0: i2c@7d005000 { -+ compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c"; -+ reg = <0x7d005000 0x20>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; + -+ i2c3: i2c@7d005600 { -+ compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c"; -+ reg = <0x7d005600 0x20>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; ++Name: gpio-led ++Info: This is a generic overlay for activating LEDs (or any other component) ++ by a GPIO pin. Multiple LEDs can be set up using multiple calls to the ++ overlay. While there are many existing methods to activate LEDs on the ++ RPi, this method offers some advantages: ++ 1) Does not require any userspace programs. ++ 2) LEDs can be connected to the kernel's led-trigger framework, ++ and drive the LED based on triggers such as cpu load, heartbeat, ++ kernel panic, key input, timers and others. ++ 3) LED can be tied to the input state of another GPIO pin. ++ 4) The LED is setup early during the kernel boot process (useful ++ for cpu/heartbeat/panic triggers). + -+ i2c4: i2c@7d005800 { -+ compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c"; -+ reg = <0x7d005800 0x20>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; ++ Typical electrical connection is: ++ RPI-GPIO.19 -> LED -> 300ohm resister -> RPI-GND ++ The GPIO pin number can be changed with the 'gpio=' parameter. + -+ i2c5: i2c@7d005a00 { -+ compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c"; -+ reg = <0x7d005a00 0x20>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; ++ To control an LED from userspace, write a 0 or 1 value: ++ echo 1 > /sys/class/leds/myled1/brightness ++ The 'myled1' name can be changed with the 'label=' parameter. + -+ i2c6: i2c@7d005c00 { -+ compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c"; -+ reg = <0x7d005c00 0x20>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; ++ To connect the LED to a kernel trigger from userspace: ++ echo cpu > /sys/class/leds/myled1/trigger ++ echo heartbeat > /sys/class/leds/myled1/trigger ++ echo none > /sys/class/leds/myled1/trigger ++ To connect the LED to GPIO.26 pin (physical pin 37): ++ echo gpio > /sys/class/leds/myled1/trigger ++ echo 26 > /sys/class/leds/myled1/gpio ++ Available triggers: ++ cat /sys/class/leds/myled1/trigger + -+ i2c8: i2c@7d005e00 { -+ compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c"; -+ reg = <0x7d005e00 0x20>; -+ interrupts = ; -+ clocks = <&clk_vpu>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; ++ More information about the Linux kernel LED/Trigger system: ++ https://www.kernel.org/doc/Documentation/leds/leds-class.rst ++ https://www.kernel.org/doc/Documentation/leds/ledtrig-oneshot.rst ++Load: dtoverlay=gpio-led,= ++Params: gpio GPIO pin connected to the LED (default 19) ++ label The label for this LED. It will appear under ++ /sys/class/leds/