Merge branch 'pci/pwrctrl'

- Rename pwrctrl Kconfig symbols from 'PWRCTL' to 'PWRCTRL' to match the
  filename paths.  Retain old deprecated symbols for compatibility, except
  for the pwrctrl slot driver (PCI_PWRCTRL_SLOT) (Johan Hovold)

- When unregistering pwrctrl, cancel outstanding rescan work before
  cleaning up data structures to avoid use-after-free issues (Brian Norris)

* pci/pwrctrl:
  arm64: Kconfig: switch to HAVE_PWRCTRL
  wifi: ath12k: switch to PCI_PWRCTRL_PWRSEQ
  wifi: ath11k: switch to PCI_PWRCTRL_PWRSEQ
  PCI/pwrctrl: Rename pwrctrl Kconfig symbols and slot module
  PCI/pwrctrl: Cancel outstanding rescan work when unregistering
This commit is contained in:
Bjorn Helgaas
2025-06-04 10:50:02 -05:00
6 changed files with 25 additions and 13 deletions

View File

@@ -269,7 +269,7 @@ config ARCH_QCOM
bool "Qualcomm Platforms"
select GPIOLIB
select PINCTRL
select HAVE_PWRCTL if PCI
select HAVE_PWRCTRL if PCI
help
This enables support for the ARMv8 based Qualcomm chipsets.

View File

@@ -24,7 +24,7 @@ config ATH11K_PCI
select MHI_BUS
select QRTR
select QRTR_MHI
select PCI_PWRCTL_PWRSEQ if HAVE_PWRCTL
select PCI_PWRCTRL_PWRSEQ if HAVE_PWRCTRL
help
This module adds support for PCIE bus

View File

@@ -7,7 +7,7 @@ config ATH12K
select MHI_BUS
select QRTR
select QRTR_MHI
select PCI_PWRCTL_PWRSEQ if HAVE_PWRCTL
select PCI_PWRCTRL_PWRSEQ if HAVE_PWRCTRL
help
Enable support for Qualcomm Technologies Wi-Fi 7 (IEEE
802.11be) family of chipsets, for example WCN7850 and

View File

@@ -1,19 +1,19 @@
# SPDX-License-Identifier: GPL-2.0-only
config HAVE_PWRCTL
config HAVE_PWRCTRL
bool
config PCI_PWRCTL
config PCI_PWRCTRL
tristate
config PCI_PWRCTL_PWRSEQ
config PCI_PWRCTRL_PWRSEQ
tristate
select POWER_SEQUENCING
select PCI_PWRCTL
select PCI_PWRCTRL
config PCI_PWRCTL_SLOT
config PCI_PWRCTRL_SLOT
tristate "PCI Power Control driver for PCI slots"
select PCI_PWRCTL
select PCI_PWRCTRL
help
Say Y here to enable the PCI Power Control driver to control the power
state of PCI slots.
@@ -21,3 +21,13 @@ config PCI_PWRCTL_SLOT
This is a generic driver that controls the power state of different
PCI slots. The voltage regulators powering the rails of the PCI slots
are expected to be defined in the devicetree node of the PCI bridge.
# deprecated
config HAVE_PWRCTL
bool
select HAVE_PWRCTRL
# deprecated
config PCI_PWRCTL_PWRSEQ
tristate
select PCI_PWRCTRL_PWRSEQ

View File

@@ -1,9 +1,9 @@
# SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_PCI_PWRCTL) += pci-pwrctrl-core.o
obj-$(CONFIG_PCI_PWRCTRL) += pci-pwrctrl-core.o
pci-pwrctrl-core-y := core.o
obj-$(CONFIG_PCI_PWRCTL_PWRSEQ) += pci-pwrctrl-pwrseq.o
obj-$(CONFIG_PCI_PWRCTRL_PWRSEQ) += pci-pwrctrl-pwrseq.o
obj-$(CONFIG_PCI_PWRCTL_SLOT) += pci-pwrctl-slot.o
pci-pwrctl-slot-y := slot.o
obj-$(CONFIG_PCI_PWRCTRL_SLOT) += pci-pwrctrl-slot.o
pci-pwrctrl-slot-y := slot.o

View File

@@ -101,6 +101,8 @@ EXPORT_SYMBOL_GPL(pci_pwrctrl_device_set_ready);
*/
void pci_pwrctrl_device_unset_ready(struct pci_pwrctrl *pwrctrl)
{
cancel_work_sync(&pwrctrl->work);
/*
* We don't have to delete the link here. Typically, this function
* is only called when the power control device is being detached. If