[PATCH v9 0/5] PCI/pwrctl: initial implementation and first user

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>

I'm sending the PCI part separately to keep the history on the list.
Bjorn acked all of them so I'll pick them up later today into the pwrseq
tree.

Changelog:

Since v8:
- split out the PCI patches into their own series
- improved commit messages (added rationale for the PCI pwrctl and the
  powrseq driver for QCOM QCAxyz, start with a capital letter)
- pick up Acks from Bjorn
- Link to v8: https://lore.kernel.org/r/20240528-pwrseq-v8-0-d354d52b763c@xxxxxxxxxx

Since v7:
- added DTS changes for sm8650-hdk
- added circular dependency detection for pwrseq units
- fixed a KASAN reported use-after-free error in remove path
- improve Kconfig descriptions
- fix typos in bindings and Kconfig
- fixed issues reported by smatch
- fix the unbind path in PCI pwrctl
- lots of minor improvements to the pwrseq core

Since v6:
- kernel doc fixes
- drop myself from the DT bindings maintainers list for ath12k
- wait until the PCI bridge device is fully added before creating the
  PCI pwrctl platform devices for its sub-nodes, otherwise we may see
  sysfs and procfs attribute failures (due to duplication, we're
  basically trying to probe the same device twice at the same time)
- I kept the regulators for QCA6390's ath11k as required as they only
  apply to this specific Qualcomm package

Since v5:
- unify the approach to modelling the WCN WLAN/BT chips by always exposing
  the PMU node on the device tree and making the WLAN and BT nodes become
  consumers of its power outputs; this includes a major rework of the DT
  sources, bindings and driver code; there's no more a separate PCI
  pwrctl driver for WCN7850, instead its power-up sequence was moved
  into the pwrseq driver common for all WCN chips
- don't set load_uA from new regulator consumers
- fix reported kerneldoc issues
- drop voltage ranges for PMU outputs from DT
- many minor tweaks and reworks

v1: Original RFC:

https://lore.kernel.org/lkml/20240104130123.37115-1-brgl@xxxxxxxx/T/

v2: First real patch series (should have been PATCH v2) adding what I
    referred to back then as PCI power sequencing:

https://lore.kernel.org/linux-arm-kernel/2024021413-grumbling-unlivable-c145@gregkh/T/

v3: RFC for the DT representation of the PMU supplying the WLAN and BT
    modules inside the QCA6391 package (was largely separate from the
    series but probably should have been called PATCH or RFC v3):

https://lore.kernel.org/all/CAMRc=Mc+GNoi57eTQg71DXkQKjdaoAmCpB=h2ndEpGnmdhVV-Q@xxxxxxxxxxxxxx/T/

v4: Second attempt at the full series with changed scope (introduction of
    the pwrseq subsystem, should have been RFC v4)

https://lore.kernel.org/lkml/20240201155532.49707-1-brgl@xxxxxxxx/T/

v5: Two different ways of handling QCA6390 and WCN7850:

https://lore.kernel.org/lkml/20240216203215.40870-1-brgl@xxxxxxxx/

Bartosz Golaszewski (5):
  PCI: Hold the rescan mutex when scanning for the first time
  PCI/pwrctl: Reuse the OF node for power controlled devices
  PCI/pwrctl: Create platform devices for child OF nodes of the port
    node
  PCI/pwrctl: Add PCI power control core code
  PCI/pwrctl: Add a PCI power control driver for power sequenced devices

 MAINTAINERS                            |   8 ++
 drivers/pci/Kconfig                    |   1 +
 drivers/pci/Makefile                   |   1 +
 drivers/pci/bus.c                      |   9 ++
 drivers/pci/of.c                       |  14 ++-
 drivers/pci/probe.c                    |   2 +
 drivers/pci/pwrctl/Kconfig             |  17 +++
 drivers/pci/pwrctl/Makefile            |   6 ++
 drivers/pci/pwrctl/core.c              | 137 +++++++++++++++++++++++++
 drivers/pci/pwrctl/pci-pwrctl-pwrseq.c |  89 ++++++++++++++++
 drivers/pci/remove.c                   |   3 +-
 include/linux/pci-pwrctl.h             |  51 +++++++++
 12 files changed, 333 insertions(+), 5 deletions(-)
 create mode 100644 drivers/pci/pwrctl/Kconfig
 create mode 100644 drivers/pci/pwrctl/Makefile
 create mode 100644 drivers/pci/pwrctl/core.c
 create mode 100644 drivers/pci/pwrctl/pci-pwrctl-pwrseq.c
 create mode 100644 include/linux/pci-pwrctl.h

-- 
2.40.1





[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux