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

Commit 2d7cd398 authored by Vladimir Barinov's avatar Vladimir Barinov Committed by Simon Horman
Browse files

sh-pfc: r8a7778: add VIN pin groups



Add VIN DATA[0:8]/CLK/HSYNC/VSYNC pin groups to R8A7778 PFC driver.
While at it, add SH_PFC_MUX8() macro for 8-bit data busses.

Signed-off-by: default avatarVladimir Barinov <vladimir.barinov@cogentembedded.com>
[Sergei: updated the copyrights, added SH_PFC_MUX8() macro for 8-bit data bus,
made use of SH_PFC_*() macros to define the pin groups.]
Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
parent a27c5cd1
Loading
Loading
Loading
Loading
+60 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
 *
 * Copyright (C) 2013  Renesas Solutions Corp.
 * Copyright (C) 2013  Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
 * Copyright (C) 2013  Cogent Embedded, Inc.
 *
 * based on
 * Copyright (C) 2011  Renesas Solutions Corp.
@@ -1316,6 +1317,11 @@ static struct sh_pfc_pin pinmux_pins[] = {
#define SH_PFC_MUX4(name, arg1, arg2, arg3, arg4)			\
	static const unsigned int name ##_mux[]  = { arg1##_MARK, arg2##_MARK, \
						     arg3##_MARK, arg4##_MARK }
#define SH_PFC_MUX8(name, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
	static const unsigned int name ##_mux[]  = { arg1##_MARK, arg2##_MARK, \
						     arg3##_MARK, arg4##_MARK, \
						     arg5##_MARK, arg6##_MARK, \
						     arg7##_MARK, arg8##_MARK, }

/* - SCIF macro ------------------------------------------------------------- */
#define SCIF_PFC_PIN(name, args...)	SH_PFC_PINS(name, args)
@@ -1513,6 +1519,40 @@ SH_PFC_MUX1(usb1, PENC1);
SH_PFC_PINS(usb1_ovc,		RCAR_GP_PIN(0, 4));
SH_PFC_MUX1(usb1_ovc,		USB_OVC1);

/* - VIN macros ------------------------------------------------------------- */
#define VIN_PFC_PINS(name, args...)		SH_PFC_PINS(name, args)
#define VIN_PFC_DAT8(name, d0, d1, d2, d3, d4, d5, d6, d7)	\
	SH_PFC_MUX8(name, d0, d1, d2, d3, d4, d5, d6, d7)
#define VIN_PFC_CLK(name, clk)			SH_PFC_MUX1(name, clk)
#define VIN_PFC_SYNC(name, hsync, vsync)	SH_PFC_MUX2(name, hsync, vsync)

/* - VIN0 ------------------------------------------------------------------- */
VIN_PFC_PINS(vin0_data8,	RCAR_GP_PIN(3, 29),	RCAR_GP_PIN(3, 30),
				RCAR_GP_PIN(3, 31),	RCAR_GP_PIN(4, 0),
				RCAR_GP_PIN(4, 1),	RCAR_GP_PIN(4, 2),
				RCAR_GP_PIN(4, 3),	RCAR_GP_PIN(4, 4));
VIN_PFC_DAT8(vin0_data8,	VI0_DATA0_VI0_B0,	VI0_DATA1_VI0_B1,
				VI0_DATA2_VI0_B2,	VI0_DATA3_VI0_B3,
				VI0_DATA4_VI0_B4,	VI0_DATA5_VI0_B5,
				VI0_DATA6_VI0_G0,	VI0_DATA7_VI0_G1);
VIN_PFC_PINS(vin0_clk,		RCAR_GP_PIN(3, 24));
VIN_PFC_CLK(vin0_clk,		VI0_CLK);
VIN_PFC_PINS(vin0_sync,		RCAR_GP_PIN(3, 27),	RCAR_GP_PIN(3, 28));
VIN_PFC_SYNC(vin0_sync,		VI0_HSYNC,		VI0_VSYNC);
/* - VIN1 ------------------------------------------------------------------- */
VIN_PFC_PINS(vin1_data8,	RCAR_GP_PIN(3, 25),	RCAR_GP_PIN(3, 26),
				RCAR_GP_PIN(3, 27),	RCAR_GP_PIN(3, 28),
				RCAR_GP_PIN(4, 5),	RCAR_GP_PIN(4, 6),
				RCAR_GP_PIN(4, 7),	RCAR_GP_PIN(4, 8));
VIN_PFC_DAT8(vin1_data8,	VI1_DATA0,		VI1_DATA1,
				VI1_DATA2,		VI1_DATA3,
				VI1_DATA4,		VI1_DATA5,
				VI1_DATA6,		VI1_DATA7);
VIN_PFC_PINS(vin1_clk,		RCAR_GP_PIN(4, 9));
VIN_PFC_CLK(vin1_clk,		VI1_CLK);
VIN_PFC_PINS(vin1_sync,		RCAR_GP_PIN(3, 21),	RCAR_GP_PIN(3, 22));
VIN_PFC_SYNC(vin1_sync,		VI1_HSYNC,		VI1_VSYNC);

static const struct sh_pfc_pin_group pinmux_groups[] = {
	SH_PFC_PIN_GROUP(hscif0_data_a),
	SH_PFC_PIN_GROUP(hscif0_data_b),
@@ -1586,6 +1626,12 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {
	SH_PFC_PIN_GROUP(usb0_ovc),
	SH_PFC_PIN_GROUP(usb1),
	SH_PFC_PIN_GROUP(usb1_ovc),
	SH_PFC_PIN_GROUP(vin0_data8),
	SH_PFC_PIN_GROUP(vin0_clk),
	SH_PFC_PIN_GROUP(vin0_sync),
	SH_PFC_PIN_GROUP(vin1_data8),
	SH_PFC_PIN_GROUP(vin1_clk),
	SH_PFC_PIN_GROUP(vin1_sync),
};

static const char * const hscif0_groups[] = {
@@ -1703,6 +1749,18 @@ static const char * const usb1_groups[] = {
	"usb1_ovc",
};

static const char * const vin0_groups[] = {
	"vin0_data8",
	"vin0_clk",
	"vin0_sync",
};

static const char * const vin1_groups[] = {
	"vin1_data8",
	"vin1_clk",
	"vin1_sync",
};

static const struct sh_pfc_function pinmux_functions[] = {
	SH_PFC_FUNCTION(hscif0),
	SH_PFC_FUNCTION(hscif1),
@@ -1718,6 +1776,8 @@ static const struct sh_pfc_function pinmux_functions[] = {
	SH_PFC_FUNCTION(sdhi2),
	SH_PFC_FUNCTION(usb0),
	SH_PFC_FUNCTION(usb1),
	SH_PFC_FUNCTION(vin0),
	SH_PFC_FUNCTION(vin1),
};

static struct pinmux_cfg_reg pinmux_config_regs[] = {