]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: brcmstb: Fix potential premature regulator disabling
authorJim Quinlan <james.quinlan@broadcom.com>
Fri, 14 Feb 2025 17:39:33 +0000 (12:39 -0500)
committerKrzysztof Wilczyński <kwilczynski@kernel.org>
Tue, 4 Mar 2025 16:01:30 +0000 (16:01 +0000)
The platform supports enabling and disabling regulators only on
ports below the Root Complex.

Thus, we need to verify this both when adding and removing the bus,
otherwise regulators may be disabled prematurely when a bus further
down the topology is removed.

Fixes: 9e6be018b263 ("PCI: brcmstb: Enable child bus device regulators from DT")
Signed-off-by: Jim Quinlan <james.quinlan@broadcom.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20250214173944.47506-6-james.quinlan@broadcom.com
[kwilczynski: commit log]
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
drivers/pci/controller/pcie-brcmstb.c

index 7d1c6dc599da7394c9e0c34b013257e51f3ac415..d565153d8a379898e2dd8a45e459cfd996ac873f 100644 (file)
@@ -1440,7 +1440,7 @@ static void brcm_pcie_remove_bus(struct pci_bus *bus)
        struct subdev_regulators *sr = pcie->sr;
        struct device *dev = &bus->dev;
 
-       if (!sr)
+       if (!sr || !bus->parent || !pci_is_root_bus(bus->parent))
                return;
 
        if (regulator_bulk_disable(sr->num_supplies, sr->supplies))