diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms index d1461335e78f873e95d19658196409b14126dbca..56f440a06b2114859ea1259a22de019851bd0bde 100644 --- a/arch/arm64/Kconfig.platforms +++ b/arch/arm64/Kconfig.platforms @@ -266,6 +266,7 @@ config ARCH_QCOM bool "Qualcomm Platforms" select GPIOLIB select PINCTRL + select HAVE_PWRCTL if PCI help This enables support for the ARMv8 based Qualcomm chipsets. diff --git a/drivers/net/wireless/ath/ath11k/Kconfig b/drivers/net/wireless/ath/ath11k/Kconfig index 27f0523bf9675410cb07439701bb9fb65a81ae32..2e935d381b6b108689bbb1ef6aa465a309d110d1 100644 --- a/drivers/net/wireless/ath/ath11k/Kconfig +++ b/drivers/net/wireless/ath/ath11k/Kconfig @@ -24,6 +24,7 @@ config ATH11K_PCI select MHI_BUS select QRTR select QRTR_MHI + select PCI_PWRCTL_PWRSEQ if HAVE_PWRCTL help This module adds support for PCIE bus diff --git a/drivers/net/wireless/ath/ath12k/Kconfig b/drivers/net/wireless/ath/ath12k/Kconfig index eceab9153e98e8376a2831ca8d2dd2adee0f12d2..f64e7c32221612db91b38f154fbda1a6aa263fa9 100644 --- a/drivers/net/wireless/ath/ath12k/Kconfig +++ b/drivers/net/wireless/ath/ath12k/Kconfig @@ -7,6 +7,7 @@ config ATH12K select MHI_BUS select QRTR select QRTR_MHI + select PCI_PWRCTL_PWRSEQ if HAVE_PWRCTL help Enable support for Qualcomm Technologies Wi-Fi 7 (IEEE 802.11be) family of chipsets, for example WCN7850 and diff --git a/drivers/pci/pwrctl/Kconfig b/drivers/pci/pwrctl/Kconfig index f1b824955d4b915aa5a9d945e981e920ae5dcc67..54589bb2403b9d67731b7a1c1b733ed50cfeca85 100644 --- a/drivers/pci/pwrctl/Kconfig +++ b/drivers/pci/pwrctl/Kconfig @@ -1,17 +1,12 @@ # SPDX-License-Identifier: GPL-2.0-only -menu "PCI Power control drivers" +config HAVE_PWRCTL + bool config PCI_PWRCTL tristate config PCI_PWRCTL_PWRSEQ - tristate "PCI Power Control driver using the Power Sequencing subsystem" + tristate select POWER_SEQUENCING select PCI_PWRCTL - default m if ((ATH11K_PCI || ATH12K) && ARCH_QCOM) - help - Enable support for the PCI power control driver for device - drivers using the Power Sequencing subsystem. - -endmenu diff --git a/drivers/power/sequencing/core.c b/drivers/power/sequencing/core.c index 9c32b07a55e7a2f271bd62ed73e1465f0f984802..0ffc259c6bb6c8333ba1fc5e6ab43e42ba0d3524 100644 --- a/drivers/power/sequencing/core.c +++ b/drivers/power/sequencing/core.c @@ -212,7 +212,8 @@ pwrseq_target_new(const struct pwrseq_target_data *data) static void pwrseq_target_free(struct pwrseq_target *target) { - pwrseq_unit_put(target->unit); + if (!IS_ERR_OR_NULL(target->unit)) + pwrseq_unit_put(target->unit); kfree_const(target->name); kfree(target); }