Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

soc: renesas: rcar-sysc: Add r8a774e1 support

Add support for RZ/G2H (R8A774E1) SoC power areas to the R-Car SYSC
driver.

Signed-off-by: Marian-Cristian Rotariu <marian-cristian.rotariu.rb@bp.renesas.com>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Link: https://lore.kernel.org/r/1594138692-16816-6-git-send-email-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

authored by

Marian-Cristian Rotariu and committed by
Geert Uytterhoeven
f446ade0 3c2543d3

+52
+4
drivers/soc/renesas/Kconfig
··· 296 296 bool "RZ/G2E System Controller support" if COMPILE_TEST 297 297 select SYSC_RCAR 298 298 299 + config SYSC_R8A774E1 300 + bool "RZ/G2H System Controller support" if COMPILE_TEST 301 + select SYSC_RCAR 302 + 299 303 config SYSC_R8A7779 300 304 bool "R-Car H1 System Controller support" if COMPILE_TEST 301 305 select SYSC_RCAR
+1
drivers/soc/renesas/Makefile
··· 10 10 obj-$(CONFIG_SYSC_R8A774A1) += r8a774a1-sysc.o 11 11 obj-$(CONFIG_SYSC_R8A774B1) += r8a774b1-sysc.o 12 12 obj-$(CONFIG_SYSC_R8A774C0) += r8a774c0-sysc.o 13 + obj-$(CONFIG_SYSC_R8A774E1) += r8a774e1-sysc.o 13 14 obj-$(CONFIG_SYSC_R8A7779) += r8a7779-sysc.o 14 15 obj-$(CONFIG_SYSC_R8A7790) += r8a7790-sysc.o 15 16 obj-$(CONFIG_SYSC_R8A7791) += r8a7791-sysc.o
+43
drivers/soc/renesas/r8a774e1-sysc.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Renesas RZ/G2H System Controller 4 + * Copyright (C) 2020 Renesas Electronics Corp. 5 + * 6 + * Based on Renesas R-Car H3 System Controller 7 + * Copyright (C) 2016-2017 Glider bvba 8 + */ 9 + 10 + #include <linux/kernel.h> 11 + 12 + #include <dt-bindings/power/r8a774e1-sysc.h> 13 + 14 + #include "rcar-sysc.h" 15 + 16 + static const struct rcar_sysc_area r8a774e1_areas[] __initconst = { 17 + { "always-on", 0, 0, R8A774E1_PD_ALWAYS_ON, -1, PD_ALWAYS_ON }, 18 + { "ca57-scu", 0x1c0, 0, R8A774E1_PD_CA57_SCU, R8A774E1_PD_ALWAYS_ON, PD_SCU }, 19 + { "ca57-cpu0", 0x80, 0, R8A774E1_PD_CA57_CPU0, R8A774E1_PD_CA57_SCU, PD_CPU_NOCR }, 20 + { "ca57-cpu1", 0x80, 1, R8A774E1_PD_CA57_CPU1, R8A774E1_PD_CA57_SCU, PD_CPU_NOCR }, 21 + { "ca57-cpu2", 0x80, 2, R8A774E1_PD_CA57_CPU2, R8A774E1_PD_CA57_SCU, PD_CPU_NOCR }, 22 + { "ca57-cpu3", 0x80, 3, R8A774E1_PD_CA57_CPU3, R8A774E1_PD_CA57_SCU, PD_CPU_NOCR }, 23 + { "ca53-scu", 0x140, 0, R8A774E1_PD_CA53_SCU, R8A774E1_PD_ALWAYS_ON, PD_SCU }, 24 + { "ca53-cpu0", 0x200, 0, R8A774E1_PD_CA53_CPU0, R8A774E1_PD_CA53_SCU, PD_CPU_NOCR }, 25 + { "ca53-cpu1", 0x200, 1, R8A774E1_PD_CA53_CPU1, R8A774E1_PD_CA53_SCU, PD_CPU_NOCR }, 26 + { "ca53-cpu2", 0x200, 2, R8A774E1_PD_CA53_CPU2, R8A774E1_PD_CA53_SCU, PD_CPU_NOCR }, 27 + { "ca53-cpu3", 0x200, 3, R8A774E1_PD_CA53_CPU3, R8A774E1_PD_CA53_SCU, PD_CPU_NOCR }, 28 + { "a3vp", 0x340, 0, R8A774E1_PD_A3VP, R8A774E1_PD_ALWAYS_ON }, 29 + { "a3vc", 0x380, 0, R8A774E1_PD_A3VC, R8A774E1_PD_ALWAYS_ON }, 30 + { "a2vc1", 0x3c0, 1, R8A774E1_PD_A2VC1, R8A774E1_PD_A3VC }, 31 + { "3dg-a", 0x100, 0, R8A774E1_PD_3DG_A, R8A774E1_PD_ALWAYS_ON }, 32 + { "3dg-b", 0x100, 1, R8A774E1_PD_3DG_B, R8A774E1_PD_3DG_A }, 33 + { "3dg-c", 0x100, 2, R8A774E1_PD_3DG_C, R8A774E1_PD_3DG_B }, 34 + { "3dg-d", 0x100, 3, R8A774E1_PD_3DG_D, R8A774E1_PD_3DG_C }, 35 + { "3dg-e", 0x100, 4, R8A774E1_PD_3DG_E, R8A774E1_PD_3DG_D }, 36 + }; 37 + 38 + const struct rcar_sysc_info r8a774e1_sysc_info __initconst = { 39 + .areas = r8a774e1_areas, 40 + .num_areas = ARRAY_SIZE(r8a774e1_areas), 41 + .extmask_offs = 0x2f8, 42 + .extmask_val = BIT(0), 43 + };
+3
drivers/soc/renesas/rcar-sysc.c
··· 296 296 #ifdef CONFIG_SYSC_R8A774C0 297 297 { .compatible = "renesas,r8a774c0-sysc", .data = &r8a774c0_sysc_info }, 298 298 #endif 299 + #ifdef CONFIG_SYSC_R8A774E1 300 + { .compatible = "renesas,r8a774e1-sysc", .data = &r8a774e1_sysc_info }, 301 + #endif 299 302 #ifdef CONFIG_SYSC_R8A7779 300 303 { .compatible = "renesas,r8a7779-sysc", .data = &r8a7779_sysc_info }, 301 304 #endif
+1
drivers/soc/renesas/rcar-sysc.h
··· 56 56 extern const struct rcar_sysc_info r8a774a1_sysc_info; 57 57 extern const struct rcar_sysc_info r8a774b1_sysc_info; 58 58 extern const struct rcar_sysc_info r8a774c0_sysc_info; 59 + extern const struct rcar_sysc_info r8a774e1_sysc_info; 59 60 extern const struct rcar_sysc_info r8a7779_sysc_info; 60 61 extern const struct rcar_sysc_info r8a7790_sysc_info; 61 62 extern const struct rcar_sysc_info r8a7791_sysc_info;