Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8df62701 authored by Sergei Shtylyov's avatar Sergei Shtylyov Committed by Geert Uytterhoeven
Browse files

pinctrl: sh-pfc: r8a7791: Add R8A7743 support



Renesas RZ/G1M (R8A7743) is pin compatible with R-Car M2-W/N (R8A7791/3),
however it doesn't have several automotive specific peripherals.  Annotate
all the items that only exist on the R-Car SoCs and only supply the pin
groups/functions existing on a given SoC...

Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Acked-by: default avatarRob Herring <robh@kernel.org>
[geert: Drop annotations, as they are implied by pin groups/functions]
Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
parent 5c6aa7bd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ Required Properties:
    - "renesas,pfc-emev2": for EMEV2 (EMMA Mobile EV2) compatible pin-controller.
    - "renesas,pfc-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible pin-controller.
    - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller.
    - "renesas,pfc-r8a7743": for R8A7743 (RZ/G1M) compatible pin-controller.
    - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller.
    - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller.
    - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller.
+5 −0
Original line number Diff line number Diff line
@@ -34,6 +34,11 @@ config PINCTRL_PFC_R8A7740
	depends on ARCH_R8A7740
	select PINCTRL_SH_PFC_GPIO

config PINCTRL_PFC_R8A7743
	def_bool y
	depends on ARCH_R8A7743
	select PINCTRL_SH_PFC

config PINCTRL_PFC_R8A7778
	def_bool y
	depends on ARCH_R8A7778
+1 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ obj-$(CONFIG_PINCTRL_SH_PFC_GPIO) += gpio.o
obj-$(CONFIG_PINCTRL_PFC_EMEV2)	+= pfc-emev2.o
obj-$(CONFIG_PINCTRL_PFC_R8A73A4)	+= pfc-r8a73a4.o
obj-$(CONFIG_PINCTRL_PFC_R8A7740)	+= pfc-r8a7740.o
obj-$(CONFIG_PINCTRL_PFC_R8A7743)	+= pfc-r8a7791.o
obj-$(CONFIG_PINCTRL_PFC_R8A7778)	+= pfc-r8a7778.o
obj-$(CONFIG_PINCTRL_PFC_R8A7779)	+= pfc-r8a7779.o
obj-$(CONFIG_PINCTRL_PFC_R8A7790)	+= pfc-r8a7790.o
+6 −0
Original line number Diff line number Diff line
@@ -485,6 +485,12 @@ static const struct of_device_id sh_pfc_of_table[] = {
		.data = &r8a7740_pinmux_info,
	},
#endif
#ifdef CONFIG_PINCTRL_PFC_R8A7743
	{
		.compatible = "renesas,pfc-r8a7743",
		.data = &r8a7743_pinmux_info,
	},
#endif
#ifdef CONFIG_PINCTRL_PFC_R8A7778
	{
		.compatible = "renesas,pfc-r8a7778",
+460 −420
Original line number Diff line number Diff line
/*
 * r8a7791 processor support - PFC hardware block.
 * r8a7791/r8a7743 processor support - PFC hardware block.
 *
 * Copyright (C) 2013 Renesas Electronics Corporation
 * Copyright (C) 2014-2015 Cogent Embedded, Inc.
 * Copyright (C) 2014-2017 Cogent Embedded, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2
@@ -4419,15 +4419,11 @@ static const unsigned int vin2_clk_mux[] = {
	VI2_CLK_MARK,
};

static const struct sh_pfc_pin_group pinmux_groups[] = {
	SH_PFC_PIN_GROUP(adi_common),
	SH_PFC_PIN_GROUP(adi_chsel0),
	SH_PFC_PIN_GROUP(adi_chsel1),
	SH_PFC_PIN_GROUP(adi_chsel2),
	SH_PFC_PIN_GROUP(adi_common_b),
	SH_PFC_PIN_GROUP(adi_chsel0_b),
	SH_PFC_PIN_GROUP(adi_chsel1_b),
	SH_PFC_PIN_GROUP(adi_chsel2_b),
static const struct {
	struct sh_pfc_pin_group common[341];
	struct sh_pfc_pin_group r8a779x[9];
} pinmux_groups = {
	.common = {
		SH_PFC_PIN_GROUP(audio_clk_a),
		SH_PFC_PIN_GROUP(audio_clk_b),
		SH_PFC_PIN_GROUP(audio_clk_b_b),
@@ -4524,7 +4520,6 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {
		SH_PFC_PIN_GROUP(intc_irq1),
		SH_PFC_PIN_GROUP(intc_irq2),
		SH_PFC_PIN_GROUP(intc_irq3),
	SH_PFC_PIN_GROUP(mlb_3pin),
		SH_PFC_PIN_GROUP(mmc_data1),
		SH_PFC_PIN_GROUP(mmc_data4),
		SH_PFC_PIN_GROUP(mmc_data8),
@@ -4770,6 +4765,18 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {
		SH_PFC_PIN_GROUP(vin2_field),
		SH_PFC_PIN_GROUP(vin2_clkenb),
		SH_PFC_PIN_GROUP(vin2_clk),
	},
	.r8a779x = {
		SH_PFC_PIN_GROUP(adi_common),
		SH_PFC_PIN_GROUP(adi_chsel0),
		SH_PFC_PIN_GROUP(adi_chsel1),
		SH_PFC_PIN_GROUP(adi_chsel2),
		SH_PFC_PIN_GROUP(adi_common_b),
		SH_PFC_PIN_GROUP(adi_chsel0_b),
		SH_PFC_PIN_GROUP(adi_chsel1_b),
		SH_PFC_PIN_GROUP(adi_chsel2_b),
		SH_PFC_PIN_GROUP(mlb_3pin),
	}
};

static const char * const adi_groups[] = {
@@ -5287,8 +5294,11 @@ static const char * const vin2_groups[] = {
	"vin2_clk",
};

static const struct sh_pfc_function pinmux_functions[] = {
	SH_PFC_FUNCTION(adi),
static const struct {
	struct sh_pfc_function common[56];
	struct sh_pfc_function r8a779x[2];
} pinmux_functions = {
	.common = {
		SH_PFC_FUNCTION(audio_clk),
		SH_PFC_FUNCTION(avb),
		SH_PFC_FUNCTION(can0),
@@ -5308,7 +5318,6 @@ static const struct sh_pfc_function pinmux_functions[] = {
		SH_PFC_FUNCTION(i2c7),
		SH_PFC_FUNCTION(i2c8),
		SH_PFC_FUNCTION(intc),
	SH_PFC_FUNCTION(mlb),
		SH_PFC_FUNCTION(mmc),
		SH_PFC_FUNCTION(msiof0),
		SH_PFC_FUNCTION(msiof1),
@@ -5346,6 +5355,11 @@ static const struct sh_pfc_function pinmux_functions[] = {
		SH_PFC_FUNCTION(vin0),
		SH_PFC_FUNCTION(vin1),
		SH_PFC_FUNCTION(vin2),
	},
	.r8a779x = {
		SH_PFC_FUNCTION(adi),
		SH_PFC_FUNCTION(mlb),
	}
};

static const struct pinmux_cfg_reg pinmux_config_regs[] = {
@@ -6527,6 +6541,28 @@ static const struct sh_pfc_soc_operations r8a7791_pinmux_ops = {
	.pin_to_pocctrl = r8a7791_pin_to_pocctrl,
};

#ifdef CONFIG_PINCTRL_PFC_R8A7743
const struct sh_pfc_soc_info r8a7743_pinmux_info = {
	.name = "r8a77430_pfc",
	.ops = &r8a7791_pinmux_ops,
	.unlock_reg = 0xe6060000, /* PMMR */

	.function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },

	.pins = pinmux_pins,
	.nr_pins = ARRAY_SIZE(pinmux_pins),
	.groups = pinmux_groups.common,
	.nr_groups = ARRAY_SIZE(pinmux_groups.common),
	.functions = pinmux_functions.common,
	.nr_functions = ARRAY_SIZE(pinmux_functions.common),

	.cfg_regs = pinmux_config_regs,

	.pinmux_data = pinmux_data,
	.pinmux_data_size = ARRAY_SIZE(pinmux_data),
};
#endif

#ifdef CONFIG_PINCTRL_PFC_R8A7791
const struct sh_pfc_soc_info r8a7791_pinmux_info = {
	.name = "r8a77910_pfc",
@@ -6537,10 +6573,12 @@ const struct sh_pfc_soc_info r8a7791_pinmux_info = {

	.pins = pinmux_pins,
	.nr_pins = ARRAY_SIZE(pinmux_pins),
	.groups = pinmux_groups,
	.nr_groups = ARRAY_SIZE(pinmux_groups),
	.functions = pinmux_functions,
	.nr_functions = ARRAY_SIZE(pinmux_functions),
	.groups = pinmux_groups.common,
	.nr_groups = ARRAY_SIZE(pinmux_groups.common) +
		     ARRAY_SIZE(pinmux_groups.r8a779x),
	.functions = pinmux_functions.common,
	.nr_functions = ARRAY_SIZE(pinmux_functions.common) +
			ARRAY_SIZE(pinmux_functions.r8a779x),

	.cfg_regs = pinmux_config_regs,

@@ -6559,10 +6597,12 @@ const struct sh_pfc_soc_info r8a7793_pinmux_info = {

	.pins = pinmux_pins,
	.nr_pins = ARRAY_SIZE(pinmux_pins),
	.groups = pinmux_groups,
	.nr_groups = ARRAY_SIZE(pinmux_groups),
	.functions = pinmux_functions,
	.nr_functions = ARRAY_SIZE(pinmux_functions),
	.groups = pinmux_groups.common,
	.nr_groups = ARRAY_SIZE(pinmux_groups.common) +
		     ARRAY_SIZE(pinmux_groups.r8a779x),
	.functions = pinmux_functions.common,
	.nr_functions = ARRAY_SIZE(pinmux_functions.common) +
			ARRAY_SIZE(pinmux_functions.r8a779x),

	.cfg_regs = pinmux_config_regs,

Loading