From: Stefan Wahren <wahrenst@gmx.net>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Florian Fainelli <florian.fainelli@broadcom.com>,
Ray Jui <rjui@broadcom.com>,
Scott Branden <sbranden@broadcom.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Jassi Brar <jassisinghbrar@gmail.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
Jiri Slaby <jirislaby@kernel.org>,
Minas Harutyunyan <hminas@synopsys.com>
Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
Lukas Wunner <lukas@wunner.de>,
Peter Robinson <pbrobinson@gmail.com>,
dri-devel@lists.freedesktop.org,
bcm-kernel-feedback-list@broadcom.com, linux-pm@vger.kernel.org,
linux-serial@vger.kernel.org, linux-usb@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
kernel-list@raspberrypi.com, Stefan Wahren <wahrenst@gmx.net>
Subject: [PATCH 00/11] ARM: bcm2835: Implement initial S2Idle for Raspberry Pi
Date: Sun, 30 Jun 2024 17:36:41 +0200 [thread overview]
Message-ID: <20240630153652.318882-1-wahrenst@gmx.net> (raw)
This series implement the initial Suspend-To-Idle support for
the Raspberry Pi, which was a long time on my TODO list [1]. The
changes allow to suspend and resume the Raspberry Pi via debug UART.
The focus is on the BCM2835 SoC, because it's less complex than its
successors and have enough documentation.
The series is a loose collection of fixes and improvements.
So cherry-picking should be fine.
Test steps:
- configure debug console (pl011 or mini UART) as wakeup source
- send system to idle state
echo freeze > /sys/power/state
- wakeup system by console traffic
The implementation isn't perfect and contains workarounds like
patch 4 and 9. So there is still room for improvements, but
at least the system won't freeze forever as before [2].
Here are some figures for the Raspberry Pi 1 (without any
devices connected except of a debug UART):
running but CPU idle = 1.67 W
suspend to idle = 1.33 W
The series has been tested on the following platforms:
Raspberry Pi 1 B
Raspberry Pi 3 A+
Raspberry Pi 3 B+
Known issues:
- currently it's not possible to power down the USB domain [3]
- there seems to be an issue with the DWC2 suspend handling [4]
[1] - https://github.com/lategoodbye/rpi-zero/issues/9
[2] - https://bugzilla.redhat.com/show_bug.cgi?id=2283978
[3] - https://github.com/raspberrypi/firmware/issues/1894
[4] - https://lore.kernel.org/linux-usb/3fd0c2fb-4752-45b3-94eb-42352703e1fd@gmx.net/T/
Stefan Wahren (11):
firmware: raspberrypi: Improve timeout warning
mailbox: bcm2835: Fix timeout during suspend mode
pmdomain: raspberrypi-power: Adjust packet definition
pmdomain: raspberrypi-power: Avoid powering down USB
irqchip/bcm2835: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND
drm/vc4: hdmi: Handle error case of pm_runtime_resume_and_get
drm/vc4: hdmi: Disable connector status polling during suspend
usb: dwc2: debugfs: Print parameter no_clock_gating
usb: dwc2: Skip clock gating on Broadcom SoCs
serial: 8250_bcm2835aux: add PM suspend/resume support
ARM: bcm2835_defconfig: Enable SUSPEND
arch/arm/configs/bcm2835_defconfig | 2 --
drivers/firmware/raspberrypi.c | 3 ++-
drivers/gpu/drm/vc4/vc4_hdmi.c | 18 +++++++++++++++++-
drivers/irqchip/irq-bcm2835.c | 4 +++-
drivers/mailbox/bcm2835-mailbox.c | 3 ++-
drivers/pmdomain/bcm/raspberrypi-power.c | 17 ++++++++++++-----
drivers/tty/serial/8250/8250_bcm2835aux.c | 23 +++++++++++++++++++++++
drivers/usb/dwc2/debugfs.c | 1 +
drivers/usb/dwc2/params.c | 1 +
9 files changed, 61 insertions(+), 11 deletions(-)
--
2.34.1
next reply other threads:[~2024-06-30 15:38 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-30 15:36 Stefan Wahren [this message]
2024-06-30 15:36 ` [PATCH 01/11] firmware: raspberrypi: Improve timeout warning Stefan Wahren
2024-07-04 14:10 ` Florian Fainelli
2024-06-30 15:36 ` [PATCH 02/11] mailbox: bcm2835: Fix timeout during suspend mode Stefan Wahren
2024-07-04 14:10 ` Florian Fainelli
2024-06-30 15:36 ` [PATCH 03/11] pmdomain: raspberrypi-power: Adjust packet definition Stefan Wahren
2024-07-04 14:11 ` Florian Fainelli
2024-06-30 15:36 ` [PATCH 04/11] pmdomain: raspberrypi-power: Avoid powering down USB Stefan Wahren
2024-06-30 15:36 ` [PATCH 05/11] irqchip/bcm2835: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND Stefan Wahren
2024-07-04 14:11 ` Florian Fainelli
2024-06-30 15:36 ` [PATCH 06/11] drm/vc4: hdmi: Handle error case of pm_runtime_resume_and_get Stefan Wahren
2024-07-02 13:48 ` Maxime Ripard
2024-07-02 19:46 ` Maíra Canal
2024-07-23 17:27 ` Stefan Wahren
2024-06-30 15:36 ` [PATCH 07/11] drm/vc4: hdmi: Disable connector status polling during suspend Stefan Wahren
2024-07-02 13:48 ` Maxime Ripard
2024-07-03 10:28 ` Stefan Wahren
2024-07-03 15:32 ` Stefan Wahren
2024-07-03 15:58 ` Dave Stevenson
2024-07-02 20:02 ` Peter Robinson
2024-07-04 16:25 ` Stefan Wahren
2024-06-30 15:36 ` [PATCH 08/11] usb: dwc2: debugfs: Print parameter no_clock_gating Stefan Wahren
2024-07-01 5:56 ` Minas Harutyunyan
2024-07-04 14:13 ` Florian Fainelli
2024-06-30 15:36 ` [PATCH 09/11] usb: dwc2: Skip clock gating on Broadcom SoCs Stefan Wahren
2024-07-01 5:56 ` Minas Harutyunyan
2024-07-04 14:14 ` Florian Fainelli
2024-07-04 15:33 ` Stefan Wahren
[not found] ` <ZoezRpXBgB1B5WjB@wunner.de>
2024-07-05 10:22 ` Stefan Wahren
[not found] ` <ZogLXYopViQO11ta@wunner.de>
2024-07-05 15:21 ` Stefan Wahren
2024-07-05 17:16 ` Jeremy Linton
[not found] ` <ZohiJgyaDwAoGtAx@wunner.de>
2024-07-10 13:33 ` Stefan Wahren
2024-07-10 15:50 ` Jeremy Linton
2024-06-30 16:53 ` [PATCH RFT 10/11] serial: 8250_bcm2835aux: add PM suspend/resume support Stefan Wahren
2024-07-04 14:12 ` Florian Fainelli
2024-07-04 15:40 ` Stefan Wahren
2024-06-30 17:19 ` [PATCH 11/11] ARM: bcm2835_defconfig: Enable SUSPEND Stefan Wahren
2024-07-04 14:13 ` Florian Fainelli
2024-07-02 20:08 ` [PATCH 00/11] ARM: bcm2835: Implement initial S2Idle for Raspberry Pi Peter Robinson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240630153652.318882-1-wahrenst@gmx.net \
--to=wahrenst@gmx.net \
--cc=airlied@gmail.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=daniel@ffwll.ch \
--cc=dave.stevenson@raspberrypi.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=florian.fainelli@broadcom.com \
--cc=gregkh@linuxfoundation.org \
--cc=hminas@synopsys.com \
--cc=jassisinghbrar@gmail.com \
--cc=jirislaby@kernel.org \
--cc=kernel-list@raspberrypi.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=pbrobinson@gmail.com \
--cc=rjui@broadcom.com \
--cc=sbranden@broadcom.com \
--cc=tglx@linutronix.de \
--cc=tzimmermann@suse.de \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox