Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
ca019dd
arm64: configs: Enable CONFIG_SUSPEND
PineappleBeech Jul 21, 2026
ee29cfd
watchdog: bcm2835: Stop watchdog during suspend/resume
PineappleBeech Jul 21, 2026
4c09c6c
arm64: dts: bcm2712: wifi: Power off wifi during suspend/resume
PineappleBeech Jul 21, 2026
a7ccc4a
ACPI: PCI: bcm2712: Set acpi_storage_d3 to true on bcm2712
PineappleBeech Jul 23, 2026
ddd2f1b
iommu: bcm2712-iommu: Add suspend/resume support
PineappleBeech Aug 12, 2026
52daa31
drm/vc4: hdmi: Add suspend/resume support
PineappleBeech Aug 12, 2026
7811f23
drm/vc4: Add suspend/resume support
PineappleBeech Aug 12, 2026
66382de
drm/vc4: hvs: Add suspend/resume support
PineappleBeech Aug 12, 2026
757c787
gpio-brcmstb: Enable hibernation support
PineappleBeech Aug 14, 2026
86ec862
bcm2385: mailbox: Add resumer handler for S3 wakeup on Pi5
timg236 Aug 17, 2026
c23830f
arm64: configs: bcm2712: Enable DPM watchdog
PineappleBeech Sep 2, 2026
4b79a24
pinctrl: pinctrl-brcmstb: Save pin mux and pad during suspend
PineappleBeech Aug 17, 2026
486124b
serial: amba-pl011: Add start_rx to re-enable interrupts
PineappleBeech Aug 18, 2026
f7c490b
irqchip: bcm2712-mip: Restore registers after suspend
PineappleBeech Aug 18, 2026
e495c3c
mailbox: rp1: check received event bits more carefully
P33M Aug 19, 2026
3ec0b57
mmc: sdhci-brcmstb: Reconfigure on resume
PineappleBeech Aug 19, 2026
a18c20c
media: pisp_be: Add suspend/resume support
PineappleBeech Aug 21, 2026
6541015
drm/rp1: dsi: Add suspend/resume support
PineappleBeech Aug 24, 2026
fbd5dec
dt-bindings: bluetooth: Add power-off-in-suspend property
PineappleBeech Sep 4, 2026
2f48b27
Bluetooth: hci_bcm: Add support for powering off during suspend
PineappleBeech Sep 4, 2026
4be50fc
arm64: dts: broadcom: bcm2712: Power off bluetooth in suspend
PineappleBeech Aug 25, 2026
6329894
arm64: dts: bcm2712: Add a regulator for pcie 3v3
PineappleBeech Aug 25, 2026
355ba8f
drivers: rtc-rpi: Clear a pending alarm on resume and when setting an…
PineappleBeech Aug 25, 2026
10170b0
media: imx500: Stop streaming during system suspend.
PineappleBeech Aug 28, 2026
1acf4d6
drm/rp1: vec: Add suspend/resume support
PineappleBeech Sep 7, 2026
3aee46d
dt-bindings: usb: snps,dwc3: Add snps,power-off-in-s2ram
PineappleBeech Sep 8, 2026
ca04163
usb: dwc3: Add a DT property for losing power in suspend
PineappleBeech Sep 8, 2026
8e9ba62
arm64: dts: rp1: Mark the USB controllers as powered off in suspend
PineappleBeech Sep 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,13 @@ properties:
if the device's initial baud rate in normal mode is not supported by the
host or if the device requires autobaud mode startup before loading FW.

brcm,power-off-in-suspend:
type: boolean
description:
The controller's supply is not maintained while the system is in a sleep
state; the controller loses its firmware and its entire configuration
across a suspend/resume cycle.

interrupts:
items:
- description: Handle to the line HOST_WAKE used to wake
Expand Down
7 changes: 7 additions & 0 deletions Documentation/devicetree/bindings/usb/snps,dwc3-common.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,13 @@ properties:
items:
enum: [1, 4, 8, 16, 32, 64, 128, 256]

snps,power-off-in-s2ram:
description:
Set if the controller is powered off while the system is suspended, so
that all of its state is lost. When set, the host side is fully
reinitialised on resume instead of having its saved state restored.
type: boolean

num-hc-interrupters:
maximum: 8
default: 1
Expand Down
2 changes: 2 additions & 0 deletions arch/arm/boot/dts/overlays/README
Original file line number Diff line number Diff line change
Expand Up @@ -4073,6 +4073,8 @@ Params: l1ss Enable RC ASPM L1 sub-state support. Requires
requires DMA and MSI addresses to be 32bit.
mmio-hi Move the start of outbound 32bit addresses to
2GB and expand 64bit outbound space to 14GB.
no-pwr-ctrl Disable the regulator on the PCIe 3v3 supply.
This leaves it always enabled.


[ The pcf2127-rtc overlay has been deleted. See i2c-rtc. ]
Expand Down
12 changes: 12 additions & 0 deletions arch/arm/boot/dts/overlays/pciex1-compat-pi5-overlay.dts
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,22 @@
};
};

/*
* Disable the regulator on the PCIe 3v3 supply.
* Its is enabled by default by the firmware.
*/
fragment@4 {
target = <&pcie1_3v3>;
__dormant__ {
status = "disabled";
};
};

__overrides__ {
l1ss = <0>, "+0";
no-l0s = <0>, "+1";
no-mip = <0>, "+2";
mmio-hi = <0>, "+3";
no-pwr-ctrl = <0>, "+4";
};
};
31 changes: 31 additions & 0 deletions arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,17 @@
gpio = <&rp1_gpio 46 0>; // CD1_IO0_MICCLK, to MIPI 1 connector
};

pcie1_3v3: pcie1_3v3 {
compatible = "regulator-fixed";
regulator-name = "pcie1-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
enable-active-high;
gpio = <&rp1_gpio 28 GPIO_ACTIVE_HIGH>; // PCIE_RP1_WAKE
startup-delay-us = <20000>;
};

cam_dummy_reg: cam_dummy_reg {
compatible = "regulator-fixed";
regulator-name = "cam-dummy-reg";
Expand All @@ -125,6 +136,24 @@ rp1_target: &pcie2 {

&pcie1 {
brcm,fifo-qos-map = /bits/ 8 <3 3 3 3>;

/*
* Hack to get linux to probe this pcie after pcie2.
* The pcie-brcmstb driver does not defer probe if
* the regulator is not found yet. This forces pcie1
* to be probed after pcie2 so that the regulator
* is found.
*/
vpcie3v3-supply = <&pcie1_3v3>;

pci@0,0 {
device_type = "pci";
reg = <0 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
vpcie3v3-supply = <&pcie1_3v3>;
};
};

// The system SPI for the bootloader EEPROM
Expand Down Expand Up @@ -374,6 +403,7 @@ dpi_16bit_gpio2: &rp1_dpi_16bit_gpio2 { };
compatible = "brcm,bcm43438-bt";
max-speed = <3000000>;
shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>;
brcm,power-off-in-suspend;
local-bd-address = [ 00 00 00 00 00 00 ];
};
};
Expand Down Expand Up @@ -426,6 +456,7 @@ dpi_16bit_gpio2: &rp1_dpi_16bit_gpio2 { };
vmmc-supply = <&wl_on_reg>;
sd-uhs-ddr50;
non-removable;
cap-power-off-card;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
Expand Down
2 changes: 2 additions & 0 deletions arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,7 @@ dpi_16bit_gpio2: &rp1_dpi_16bit_gpio2 { };
compatible = "brcm,bcm43438-bt";
max-speed = <3000000>;
shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>;
brcm,power-off-in-suspend;
local-bd-address = [ 00 00 00 00 00 00 ];
};
};
Expand Down Expand Up @@ -411,6 +412,7 @@ dpi_16bit_gpio2: &rp1_dpi_16bit_gpio2 { };
vmmc-supply = <&wl_on_reg>;
sd-uhs-ddr50;
non-removable;
cap-power-off-card;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
Expand Down
33 changes: 33 additions & 0 deletions arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5io.dtsi
Original file line number Diff line number Diff line change
@@ -1,5 +1,38 @@
// SPDX-License-Identifier: GPL-2.0

/ {
pcie1_3v3: pcie1_3v3 {
compatible = "regulator-fixed";
regulator-name = "pcie1-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
enable-active-high;
gpio = <&rp1_gpio 28 GPIO_ACTIVE_HIGH>; // PCIE_PWR_EN
startup-delay-us = <20000>;
};
};

&pcie1 {
/*
* Hack to get linux to probe this pcie after pcie2.
* The pcie-brcmstb driver does not defer probe if
* the regulator is not found yet. This forces pcie1
* to be probed after pcie2 so that the regulator
* is found.
*/
vpcie3v3-supply = <&pcie1_3v3>;

pci@0,0 {
device_type = "pci";
reg = <0 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
vpcie3v3-supply = <&pcie1_3v3>;
};
};

i2c_csi_dsi1: &i2c0 { // Note: This is for CAM/DISP 1 connector
symlink = "i2c-11";
};
Expand Down
2 changes: 2 additions & 0 deletions arch/arm64/boot/dts/broadcom/rp1.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -1127,6 +1127,7 @@
snps,enhanced-nak-fs-quirk;
snps,parkmode-disable-ss-quirk;
snps,parkmode-disable-fsls-quirk;
snps,power-off-in-s2ram;
snps,tx-max-burst = /bits/ 8 <8>;
snps,tx-thr-num-pkt = /bits/ 8 <2>;
interrupts = <RP1_INT_USBHOST0_0 IRQ_TYPE_EDGE_RISING>;
Expand All @@ -1143,6 +1144,7 @@
snps,enhanced-nak-fs-quirk;
snps,parkmode-disable-ss-quirk;
snps,parkmode-disable-fsls-quirk;
snps,power-off-in-s2ram;
snps,tx-max-burst = /bits/ 8 <8>;
snps,tx-thr-num-pkt = /bits/ 8 <2>;
interrupts = <RP1_INT_USBHOST1_0 IRQ_TYPE_EDGE_RISING>;
Expand Down
6 changes: 3 additions & 3 deletions arch/arm64/configs/bcm2711_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ CONFIG_ARM64_ERRATUM_2441009=y
# CONFIG_CAVIUM_ERRATUM_27456 is not set
CONFIG_ARM64_VA_BITS_39=y
CONFIG_NR_CPUS=4
CONFIG_HOTPLUG_CPU=y
CONFIG_NUMA=y
CONFIG_COMPAT=y
CONFIG_ARMV8_DEPRECATED=y
Expand All @@ -58,9 +57,10 @@ CONFIG_CP15_BARRIER_EMULATION=y
CONFIG_SETEND_EMULATION=y
CONFIG_RANDOMIZE_BASE=y
CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
# CONFIG_SUSPEND is not set
CONFIG_PM=y
CONFIG_PM_DEBUG=y
CONFIG_DPM_WATCHDOG=y
CONFIG_DPM_WATCHDOG_TIMEOUT=30
CONFIG_DPM_WATCHDOG_WARNING_TIMEOUT=5
CONFIG_CPU_IDLE=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_STAT=y
Expand Down
6 changes: 3 additions & 3 deletions arch/arm64/configs/bcm2711_rt_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ CONFIG_ARM64_ERRATUM_2441009=y
# CONFIG_CAVIUM_ERRATUM_27456 is not set
CONFIG_ARM64_VA_BITS_39=y
CONFIG_NR_CPUS=4
CONFIG_HOTPLUG_CPU=y
CONFIG_NUMA=y
CONFIG_COMPAT=y
CONFIG_ARMV8_DEPRECATED=y
Expand All @@ -58,9 +57,10 @@ CONFIG_CP15_BARRIER_EMULATION=y
CONFIG_SETEND_EMULATION=y
CONFIG_RANDOMIZE_BASE=y
CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
# CONFIG_SUSPEND is not set
CONFIG_PM=y
CONFIG_PM_DEBUG=y
CONFIG_DPM_WATCHDOG=y
CONFIG_DPM_WATCHDOG_TIMEOUT=30
CONFIG_DPM_WATCHDOG_WARNING_TIMEOUT=5
CONFIG_CPU_IDLE=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_STAT=y
Expand Down
6 changes: 3 additions & 3 deletions arch/arm64/configs/bcm2712_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ CONFIG_ARM64_ERRATUM_2441009=y
CONFIG_ARM64_16K_PAGES=y
CONFIG_ARM64_VA_BITS_47=y
CONFIG_NR_CPUS=4
CONFIG_HOTPLUG_CPU=y
CONFIG_NUMA=y
CONFIG_COMPAT=y
CONFIG_ARMV8_DEPRECATED=y
Expand All @@ -59,9 +58,10 @@ CONFIG_CP15_BARRIER_EMULATION=y
CONFIG_SETEND_EMULATION=y
CONFIG_RANDOMIZE_BASE=y
CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
# CONFIG_SUSPEND is not set
CONFIG_PM=y
CONFIG_PM_DEBUG=y
CONFIG_DPM_WATCHDOG=y
CONFIG_DPM_WATCHDOG_TIMEOUT=30
CONFIG_DPM_WATCHDOG_WARNING_TIMEOUT=5
CONFIG_CPU_IDLE=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_STAT=y
Expand Down
Loading