On Fri, May 15, 2026 at 10:26:12PM +0530, Manivannan Sadhasivam wrote: > On Wed, May 06, 2026 at 03:41:56PM +0200, Thierry Reding wrote: > > From: Thierry Reding <[email protected]> > > > > Currently the kernel relies on a global variable to reference the PMC > > context. Use an explicit lookup for the PMC and pass that to the public > > PMC APIs. > > > > Signed-off-by: Thierry Reding <[email protected]> > > --- > > drivers/pci/controller/pci-tegra.c | 20 +++++++++++++++----- > > 1 file changed, 15 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/pci/controller/pci-tegra.c > > b/drivers/pci/controller/pci-tegra.c > > index 512309763d1f..2c6c521e6901 100644 > > --- a/drivers/pci/controller/pci-tegra.c > > +++ b/drivers/pci/controller/pci-tegra.c > > @@ -340,6 +340,8 @@ struct tegra_pcie { > > struct reset_control *afi_rst; > > struct reset_control *pcie_xrst; > > > > + struct tegra_pmc *pmc; > > + > > bool legacy_phy; > > struct phy *phy; > > > > @@ -1165,7 +1167,7 @@ static void tegra_pcie_power_off(struct tegra_pcie > > *pcie) > > clk_disable_unprepare(pcie->afi_clk); > > > > if (!dev->pm_domain) > > - tegra_powergate_power_off(TEGRA_POWERGATE_PCIE); > > + tegra_pmc_powergate_power_off(pcie->pmc, TEGRA_POWERGATE_PCIE); > > > > err = regulator_bulk_disable(pcie->num_supplies, pcie->supplies); > > if (err < 0) > > @@ -1183,7 +1185,7 @@ static int tegra_pcie_power_on(struct tegra_pcie > > *pcie) > > reset_control_assert(pcie->pex_rst); > > > > if (!dev->pm_domain) > > - tegra_powergate_power_off(TEGRA_POWERGATE_PCIE); > > + tegra_pmc_powergate_power_off(pcie->pmc, TEGRA_POWERGATE_PCIE); > > > > /* enable regulators */ > > err = regulator_bulk_enable(pcie->num_supplies, pcie->supplies); > > @@ -1191,12 +1193,14 @@ static int tegra_pcie_power_on(struct tegra_pcie > > *pcie) > > dev_err(dev, "failed to enable regulators: %d\n", err); > > > > if (!dev->pm_domain) { > > - err = tegra_powergate_power_on(TEGRA_POWERGATE_PCIE); > > + err = tegra_pmc_powergate_power_on(pcie->pmc, > > + TEGRA_POWERGATE_PCIE); > > if (err) { > > dev_err(dev, "failed to power ungate: %d\n", err); > > goto regulator_disable; > > } > > - err = tegra_powergate_remove_clamping(TEGRA_POWERGATE_PCIE); > > + err = tegra_pmc_powergate_remove_clamping(pcie->pmc, > > + TEGRA_POWERGATE_PCIE); > > if (err) { > > dev_err(dev, "failed to remove clamp: %d\n", err); > > goto powergate; > > @@ -1234,7 +1238,7 @@ static int tegra_pcie_power_on(struct tegra_pcie > > *pcie) > > clk_disable_unprepare(pcie->afi_clk); > > powergate: > > if (!dev->pm_domain) > > - tegra_powergate_power_off(TEGRA_POWERGATE_PCIE); > > + tegra_pmc_powergate_power_off(pcie->pmc, TEGRA_POWERGATE_PCIE); > > regulator_disable: > > regulator_bulk_disable(pcie->num_supplies, pcie->supplies); > > > > @@ -1432,6 +1436,12 @@ static int tegra_pcie_get_resources(struct > > tegra_pcie *pcie) > > return err; > > } > > > > + pcie->pmc = devm_tegra_pmc_get(dev); > > + if (IS_ERR(pcie->pmc)) { > > + dev_err_probe(dev, PTR_ERR(pcie->pmc), "failed to get PMC\n"); > > + return err; > > As Sashiko pointed out, you need to return dev_err_probe() directly. >
With the change, Acked-by: Manivannan Sadhasivam <[email protected]> Feel free to take it through Tegra tree. - Mani -- மணிவண்ணன் சதாசிவம்
