From: Thierry Reding <[email protected]>

Tegra210 uses a power management controller that is compatible with
earlier SoC generations but adds a couple of power partitions for new
hardware blocks.

Signed-off-by: Thierry Reding <[email protected]>
---
 drivers/soc/tegra/pmc.c                     | 48 +++++++++++++++++++++++++++++
 include/dt-bindings/power/tegra-powergate.h |  5 +++
 2 files changed, 53 insertions(+)

diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
index 7dabb8f812e0..e8914e0fb9d2 100644
--- a/drivers/soc/tegra/pmc.c
+++ b/drivers/soc/tegra/pmc.c
@@ -1223,7 +1223,55 @@ static const struct tegra_pmc_soc tegra124_pmc_soc = {
        .has_gpu_clamps = true,
 };
 
+static const char * const tegra210_powergates[] = {
+       [TEGRA_POWERGATE_CPU] = "crail",
+       [TEGRA_POWERGATE_3D] = "3d",
+       [TEGRA_POWERGATE_VENC] = "venc",
+       [TEGRA_POWERGATE_PCIE] = "pcie",
+       [TEGRA_POWERGATE_L2] = "l2",
+       [TEGRA_POWERGATE_MPE] = "mpe",
+       [TEGRA_POWERGATE_HEG] = "heg",
+       [TEGRA_POWERGATE_SATA] = "sata",
+       [TEGRA_POWERGATE_CPU1] = "cpu1",
+       [TEGRA_POWERGATE_CPU2] = "cpu2",
+       [TEGRA_POWERGATE_CPU3] = "cpu3",
+       [TEGRA_POWERGATE_CELP] = "celp",
+       [TEGRA_POWERGATE_CPU0] = "cpu0",
+       [TEGRA_POWERGATE_C0NC] = "c0nc",
+       [TEGRA_POWERGATE_C1NC] = "c1nc",
+       [TEGRA_POWERGATE_SOR] = "sor",
+       [TEGRA_POWERGATE_DIS] = "dis",
+       [TEGRA_POWERGATE_DISB] = "disb",
+       [TEGRA_POWERGATE_XUSBA] = "xusba",
+       [TEGRA_POWERGATE_XUSBB] = "xusbb",
+       [TEGRA_POWERGATE_XUSBC] = "xusbc",
+       [TEGRA_POWERGATE_VIC] = "vic",
+       [TEGRA_POWERGATE_IRAM] = "iram",
+       [TEGRA_POWERGATE_NVDEC] = "nvdec",
+       [TEGRA_POWERGATE_NVJPG] = "nvjpg",
+       [TEGRA_POWERGATE_AUD] = "aud",
+       [TEGRA_POWERGATE_DFD] = "dfd",
+       [TEGRA_POWERGATE_VE2] = "ve2",
+};
+
+static const u8 tegra210_cpu_powergates[] = {
+       TEGRA_POWERGATE_CPU0,
+       TEGRA_POWERGATE_CPU1,
+       TEGRA_POWERGATE_CPU2,
+       TEGRA_POWERGATE_CPU3,
+};
+
+static const struct tegra_pmc_soc tegra210_pmc_soc = {
+       .num_powergates = ARRAY_SIZE(tegra210_powergates),
+       .powergates = tegra210_powergates,
+       .num_cpu_powergates = ARRAY_SIZE(tegra210_cpu_powergates),
+       .cpu_powergates = tegra210_cpu_powergates,
+       .has_tsense_reset = true,
+       .has_gpu_clamps = true,
+};
+
 static const struct of_device_id tegra_pmc_match[] = {
+       { .compatible = "nvidia,tegra210-pmc", .data = &tegra210_pmc_soc },
        { .compatible = "nvidia,tegra132-pmc", .data = &tegra124_pmc_soc },
        { .compatible = "nvidia,tegra124-pmc", .data = &tegra124_pmc_soc },
        { .compatible = "nvidia,tegra114-pmc", .data = &tegra114_pmc_soc },
diff --git a/include/dt-bindings/power/tegra-powergate.h 
b/include/dt-bindings/power/tegra-powergate.h
index b8265167c20e..12b72aa77d6a 100644
--- a/include/dt-bindings/power/tegra-powergate.h
+++ b/include/dt-bindings/power/tegra-powergate.h
@@ -26,5 +26,10 @@
 #define TEGRA_POWERGATE_XUSBC  22
 #define TEGRA_POWERGATE_VIC    23
 #define TEGRA_POWERGATE_IRAM   24
+#define TEGRA_POWERGATE_NVDEC  25
+#define TEGRA_POWERGATE_NVJPG  26
+#define TEGRA_POWERGATE_AUD    27
+#define TEGRA_POWERGATE_DFD    28
+#define TEGRA_POWERGATE_VE2    29
 
 #endif
-- 
2.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to