[PATCH 2/9] drm/nouveau: tegra: Explicitly specify PMC instance to use
From: Thierry Reding
Date: Wed May 06 2026 - 09:42:46 EST
From: Thierry Reding <treding@xxxxxxxxxx>
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 <treding@xxxxxxxxxx>
---
drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h | 2 ++
drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c | 9 ++++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h b/drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h
index 57bc542780bb..6aaa30ef167f 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h
@@ -18,6 +18,8 @@ struct nvkm_device_tegra {
struct regulator *vdd;
+ struct tegra_pmc *pmc;
+
struct {
/*
* Protects accesses to mm from subsystems
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
index 46bb55a1f565..3c8d0878891a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
@@ -54,7 +54,8 @@ nvkm_device_tegra_power_up(struct nvkm_device_tegra *tdev)
reset_control_assert(tdev->rst);
udelay(10);
- ret = tegra_powergate_remove_clamping(TEGRA_POWERGATE_3D);
+ ret = tegra_pmc_powergate_remove_clamping(tdev->pmc,
+ TEGRA_POWERGATE_3D);
if (ret)
goto err_clamp;
udelay(10);
@@ -307,6 +308,12 @@ nvkm_device_tegra_new(const struct nvkm_device_tegra_func *func,
goto free;
}
+ tdev->pmc = devm_tegra_pmc_get(&pdev->dev);
+ if (IS_ERR(tdev->pmc)) {
+ ret = PTR_ERR(tdev->pmc);
+ goto free;
+ }
+
/**
* The IOMMU bit defines the upper limit of the GPU-addressable space.
*/
--
2.52.0