Message ID | 20250214173944.47506-6-james.quinlan@broadcom.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | PCI: brcmstb: Misc small tweaks and fixes | expand |
On 2/14/2025 9:39 AM, Jim Quinlan wrote: > Our system for enabling and disabling regulators is designed to work only > on the port driver below the root complex. The conditions to discriminate > for this case should be the same when we are adding or removing the bus. > Without this change the regulators may be disabled prematurely when a bus > further down the tree 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>
On Fri, Feb 14, 2025 at 12:39:33PM -0500, Jim Quinlan wrote: > Our system for enabling and disabling regulators is designed to work only 'system'? Perhaps 'logic'? > on the port driver below the root complex. The conditions to discriminate > for this case should be the same when we are adding or removing the bus. > Without this change the regulators may be disabled prematurely when a bus > further down the tree is removed. > > Fixes: 9e6be018b263 ("PCI: brcmstb: Enable child bus device regulators from DT") > Signed-off-by: Jim Quinlan <james.quinlan@broadcom.com> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> - Mani > --- > drivers/pci/controller/pcie-brcmstb.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c > index 56b49d3cae19..e1059e3365bd 100644 > --- a/drivers/pci/controller/pcie-brcmstb.c > +++ b/drivers/pci/controller/pcie-brcmstb.c > @@ -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)) > -- > 2.43.0 >
diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c index 56b49d3cae19..e1059e3365bd 100644 --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c @@ -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))
Our system for enabling and disabling regulators is designed to work only on the port driver below the root complex. The conditions to discriminate for this case should be the same when we are adding or removing the bus. Without this change the regulators may be disabled prematurely when a bus further down the tree is removed. Fixes: 9e6be018b263 ("PCI: brcmstb: Enable child bus device regulators from DT") Signed-off-by: Jim Quinlan <james.quinlan@broadcom.com> --- drivers/pci/controller/pcie-brcmstb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)