pmdomain: renesas: r8a779h0-sysc: Add r8a779h0 support
authorDuy Nguyen <duy.nguyen.rh@renesas.com>
Thu, 25 Jan 2024 15:34:37 +0000 (16:34 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 14 Feb 2024 09:26:11 +0000 (10:26 +0100)
Add support for R-Car V4M (R8A779H0) SoC power areas to the R-Car SYSC
driver.

Signed-off-by: Duy Nguyen <duy.nguyen.rh@renesas.com>
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Link: https://lore.kernel.org/r/eed6faa02c628d32676ab8ea0eee636b4ffd6c47.1706194617.git.geert+renesas@glider.be
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/pmdomain/renesas/Kconfig
drivers/pmdomain/renesas/Makefile
drivers/pmdomain/renesas/r8a779h0-sysc.c [new file with mode: 0644]
drivers/pmdomain/renesas/rcar-gen4-sysc.c
drivers/pmdomain/renesas/rcar-gen4-sysc.h

index 80bf2cf8b60e6f63e2f998845d8769c4f94d1ae9..54acb4b1ec7c48929b13450a497418da20d04ba2 100644 (file)
@@ -71,6 +71,10 @@ config SYSC_R8A779G0
        bool "System Controller support for R-Car V4H" if COMPILE_TEST
        select SYSC_RCAR_GEN4
 
+config SYSC_R8A779H0
+       bool "System Controller support for R-Car V4M" if COMPILE_TEST
+       select SYSC_RCAR_GEN4
+
 config SYSC_RMOBILE
        bool "System Controller support for R-Mobile" if COMPILE_TEST
 
index e306e396fc8c10e33d51834e51bc1f26bf626791..89180f19c23be73232260ca7174c80358b5610df 100644 (file)
@@ -24,6 +24,7 @@ obj-$(CONFIG_SYSC_R8A77995)   += r8a77995-sysc.o
 obj-$(CONFIG_SYSC_R8A779A0)    += r8a779a0-sysc.o
 obj-$(CONFIG_SYSC_R8A779F0)    += r8a779f0-sysc.o
 obj-$(CONFIG_SYSC_R8A779G0)    += r8a779g0-sysc.o
+obj-$(CONFIG_SYSC_R8A779H0)     += r8a779h0-sysc.o
 # Family
 obj-$(CONFIG_SYSC_RCAR)                += rcar-sysc.o
 obj-$(CONFIG_SYSC_RCAR_GEN4)   += rcar-gen4-sysc.o
diff --git a/drivers/pmdomain/renesas/r8a779h0-sysc.c b/drivers/pmdomain/renesas/r8a779h0-sysc.c
new file mode 100644 (file)
index 0000000..e13372c
--- /dev/null
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Renesas R-Car V4M System Controller
+ *
+ * Copyright (C) 2023 Renesas Electronics Corp
+ */
+
+#include <linux/kernel.h>
+
+#include <dt-bindings/power/renesas,r8a779h0-sysc.h>
+
+#include "rcar-gen4-sysc.h"
+
+static struct rcar_gen4_sysc_area r8a779h0_areas[] __initdata = {
+       { "always-on",  R8A779H0_PD_ALWAYS_ON, -1, PD_ALWAYS_ON },
+       { "c4",         R8A779H0_PD_C4, R8A779H0_PD_ALWAYS_ON },
+       { "a2e0d0",     R8A779H0_PD_A2E0D0, R8A779H0_PD_C4, PD_SCU },
+       { "a1e0d0c0",   R8A779H0_PD_A1E0D0C0, R8A779H0_PD_A2E0D0, PD_CPU_NOCR },
+       { "a1e0d0c1",   R8A779H0_PD_A1E0D0C1, R8A779H0_PD_A2E0D0, PD_CPU_NOCR },
+       { "a1e0d0c2",   R8A779H0_PD_A1E0D0C2, R8A779H0_PD_A2E0D0, PD_CPU_NOCR },
+       { "a1e0d0c3",   R8A779H0_PD_A1E0D0C3, R8A779H0_PD_A2E0D0, PD_CPU_NOCR },
+       { "a3cr0",      R8A779H0_PD_A3CR0, R8A779H0_PD_ALWAYS_ON, PD_CPU_NOCR },
+       { "a3cr1",      R8A779H0_PD_A3CR1, R8A779H0_PD_ALWAYS_ON, PD_CPU_NOCR },
+       { "a3cr2",      R8A779H0_PD_A3CR2, R8A779H0_PD_ALWAYS_ON, PD_CPU_NOCR },
+       { "a33dga",     R8A779H0_PD_A33DGA, R8A779H0_PD_C4 },
+       { "a23dgb",     R8A779H0_PD_A23DGB, R8A779H0_PD_A33DGA },
+       { "a3vip0",     R8A779H0_PD_A3VIP0, R8A779H0_PD_C4 },
+       { "a3vip2",     R8A779H0_PD_A3VIP2, R8A779H0_PD_C4 },
+       { "a3dul",      R8A779H0_PD_A3DUL, R8A779H0_PD_C4 },
+       { "a3isp0",     R8A779H0_PD_A3ISP0, R8A779H0_PD_C4 },
+       { "a2cn0",      R8A779H0_PD_A2CN0, R8A779H0_PD_C4 },
+       { "a1cn0",      R8A779H0_PD_A1CN0, R8A779H0_PD_A2CN0 },
+       { "a1dsp0",     R8A779H0_PD_A1DSP0, R8A779H0_PD_A2CN0 },
+       { "a1dsp1",     R8A779H0_PD_A1DSP1, R8A779H0_PD_A2CN0 },
+       { "a2imp01",    R8A779H0_PD_A2IMP01, R8A779H0_PD_C4 },
+       { "a2psc",      R8A779H0_PD_A2PSC, R8A779H0_PD_C4 },
+       { "a2dma",      R8A779H0_PD_A2DMA, R8A779H0_PD_C4 },
+       { "a2cv0",      R8A779H0_PD_A2CV0, R8A779H0_PD_C4 },
+       { "a2cv1",      R8A779H0_PD_A2CV1, R8A779H0_PD_C4 },
+       { "a2cv2",      R8A779H0_PD_A2CV2, R8A779H0_PD_C4 },
+       { "a2cv3",      R8A779H0_PD_A2CV3, R8A779H0_PD_C4 },
+       { "a3imr0",     R8A779H0_PD_A3IMR0, R8A779H0_PD_C4 },
+       { "a3imr1",     R8A779H0_PD_A3IMR1, R8A779H0_PD_C4 },
+       { "a3imr2",     R8A779H0_PD_A3IMR2, R8A779H0_PD_C4 },
+       { "a3imr3",     R8A779H0_PD_A3IMR3, R8A779H0_PD_C4 },
+       { "a3vc",       R8A779H0_PD_A3VC, R8A779H0_PD_C4 },
+       { "a3pci",      R8A779H0_PD_A3PCI, R8A779H0_PD_C4 },
+       { "a2pciphy",   R8A779H0_PD_A2PCIPHY, R8A779H0_PD_A3PCI },
+};
+
+const struct rcar_gen4_sysc_info r8a779h0_sysc_info __initconst = {
+       .areas = r8a779h0_areas,
+       .num_areas = ARRAY_SIZE(r8a779h0_areas),
+};
index 9e5e6e077abc081c8c0ac8a0f1a38ce19c11e048..728248659a97e8ccd316226cda8f925eb03a2466 100644 (file)
@@ -284,6 +284,9 @@ static const struct of_device_id rcar_gen4_sysc_matches[] __initconst = {
 #endif
 #ifdef CONFIG_SYSC_R8A779G0
        { .compatible = "renesas,r8a779g0-sysc", .data = &r8a779g0_sysc_info },
+#endif
+#ifdef CONFIG_SYSC_R8A779H0
+       { .compatible = "renesas,r8a779h0-sysc", .data = &r8a779h0_sysc_info },
 #endif
        { /* sentinel */ }
 };
index 388cfa8f8f9fd656a9a7b89217123517982860c2..fdf843aa51134f87ab13ea74067929ecff73b744 100644 (file)
@@ -40,5 +40,6 @@ struct rcar_gen4_sysc_info {
 extern const struct rcar_gen4_sysc_info r8a779a0_sysc_info;
 extern const struct rcar_gen4_sysc_info r8a779f0_sysc_info;
 extern const struct rcar_gen4_sysc_info r8a779g0_sysc_info;
+extern const struct rcar_gen4_sysc_info r8a779h0_sysc_info;
 
 #endif /* __SOC_RENESAS_RCAR_GEN4_SYSC_H__ */