ksummit.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
To: ksummit@lists.linux.dev
Subject: [TECH TOPIC] Introducing the power sequencing subsystem
Date: Wed, 29 May 2024 17:24:19 +0200	[thread overview]
Message-ID: <CACMJSeupU_j3bkj8muMrdrYvfnppYdZ4tPvZ+8OQ5A9BpTOWDw@mail.gmail.com> (raw)

Hi!

Here's my submission for the kernel summit track at LPC24.

Note: The power sequencing subsystem has not yet made its way into
mainline but as there's a lot of time left between when I'm writing
this and the LPC24 in Vienna I think it should at least make it into
next by the time of the presentation (there do not seem to be any
showstopper objections on the mailing list).

Thanks,
Bartosz

---

There is a class of physical devices that contain several discrete
modules in a single package but which are represented in the kernel as
separate entities. An example of such devices is the Qualcomm WCN/QCA
family of WLAN/Bluetooth adapter chipsets.

Typically the WLAN and Bluetooth modules will have their own
device-tree nodes - one under the PCI bridge (WLAN) and one under the
serial node (Bluetooth). The relevant drivers will bind to these
devices and consume assigned resources (which are usually already
reference counted).

The problem arises when the two modules packaged together have
interdependencies - for instance: a chipset may require a certain
delay between powering-up the Bluetooth and WLAN modules (an example:
Qualcomm QCA6490). In this case, reference counting alone is not
sufficient and we need more fine-grained serialization.

In order to support such devices, a new driver subsystem has been
proposed: the power sequencing framework[1]. It allows to abstract the
shared powering-up/-down operations for multiple devices into a
separate power sequence provider which knows about any possible
interactions between the modules it services. The new subsystem allows
for a flexible representation of the underlying hardware (e.g.: the
power management unit of the WCN/QCA chips is the device node to which
the power sequencer binds but on the device-tree it is represented as
a PMIC exposing a set of regulators consumed by WLAN and Bluetooth
nodes).

This talk will present the idea behind the new subsystem, the provider
and consumer programming interfaces for drivers and how we enabled
WiFi and Bluetooth support upstream for several Qualcomm platforms
with the first driver based on the pwrseq framework.

[1] https://lore.kernel.org/netdev/20240528-pwrseq-v8-0-d354d52b763c@linaro.org/

             reply	other threads:[~2024-05-29 15:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-29 15:24 Bartosz Golaszewski [this message]
2024-06-03  8:23 ` Linus Walleij
2024-06-06 12:37   ` Javier Martinez Canillas

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=CACMJSeupU_j3bkj8muMrdrYvfnppYdZ4tPvZ+8OQ5A9BpTOWDw@mail.gmail.com \
    --to=bartosz.golaszewski@linaro.org \
    --cc=ksummit@lists.linux.dev \
    /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