sh-pfc: r8a7778: Add SRU/SSI pin support
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 26 Aug 2013 08:51:22 +0000 (01:51 -0700)
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tue, 24 Sep 2013 10:23:42 +0000 (12:23 +0200)
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
drivers/pinctrl/sh-pfc/pfc-r8a7778.c

index 428d2a6857efd4123258dde53819c61ce914bdc8..20b1d0d671a3b29a6154e31d0d826b5a334789fe 100644 (file)
@@ -1288,6 +1288,22 @@ static struct sh_pfc_pin pinmux_pins[] = {
                                                     arg5##_MARK, arg6##_MARK, \
                                                     arg7##_MARK, arg8##_MARK, }
 
+/* - AUDIO macro -------------------------------------------------------------*/
+#define AUDIO_PFC_PIN(name, pin)       SH_PFC_PINS(name, pin)
+#define AUDIO_PFC_DAT(name, pin)       SH_PFC_MUX1(name, pin)
+
+/* - AUDIO clock -------------------------------------------------------------*/
+AUDIO_PFC_PIN(audio_clk_a,     RCAR_GP_PIN(2, 22));
+AUDIO_PFC_DAT(audio_clk_a,     AUDIO_CLKA);
+AUDIO_PFC_PIN(audio_clk_b,     RCAR_GP_PIN(2, 23));
+AUDIO_PFC_DAT(audio_clk_b,     AUDIO_CLKB);
+AUDIO_PFC_PIN(audio_clk_c,     RCAR_GP_PIN(2, 7));
+AUDIO_PFC_DAT(audio_clk_c,     AUDIO_CLKC);
+AUDIO_PFC_PIN(audio_clkout_a,  RCAR_GP_PIN(2, 16));
+AUDIO_PFC_DAT(audio_clkout_a,  AUDIO_CLKOUT_A);
+AUDIO_PFC_PIN(audio_clkout_b,  RCAR_GP_PIN(1, 16));
+AUDIO_PFC_DAT(audio_clkout_b,  AUDIO_CLKOUT_B);
+
 /* - Ether ------------------------------------------------------------------ */
 SH_PFC_PINS(ether_rmii,                RCAR_GP_PIN(4, 10),     RCAR_GP_PIN(4, 11),
                                RCAR_GP_PIN(4, 13),     RCAR_GP_PIN(4, 9),
@@ -1577,6 +1593,59 @@ SDHI_PFC_WPPN(sdhi2_wp_a,        SD2_WP_A);
 SDHI_PFC_PINS(sdhi2_wp_b,      RCAR_GP_PIN(3, 28));
 SDHI_PFC_WPPN(sdhi2_wp_b,      SD2_WP_B);
 
+/* - SSI macro -------------------------------------------------------------- */
+#define SSI_PFC_PINS(name, args...)            SH_PFC_PINS(name, args)
+#define SSI_PFC_CTRL(name, sck, ws)            SH_PFC_MUX2(name, sck, ws)
+#define SSI_PFC_DATA(name, d)                  SH_PFC_MUX1(name, d)
+
+/* - SSI 0/1/2 -------------------------------------------------------------- */
+SSI_PFC_PINS(ssi012_ctrl,      RCAR_GP_PIN(3, 6),      RCAR_GP_PIN(3, 7));
+SSI_PFC_CTRL(ssi012_ctrl,      SSI_SCK012,             SSI_WS012);
+SSI_PFC_PINS(ssi0_data,                RCAR_GP_PIN(3, 10));
+SSI_PFC_DATA(ssi0_data,                SSI_SDATA0);
+SSI_PFC_PINS(ssi1_a_ctrl,      RCAR_GP_PIN(2, 20),     RCAR_GP_PIN(2, 21));
+SSI_PFC_CTRL(ssi1_a_ctrl,      SSI_SCK1_A,             SSI_WS1_A);
+SSI_PFC_PINS(ssi1_b_ctrl,      PIN_NUMBER(3, 20),      RCAR_GP_PIN(1, 3));
+SSI_PFC_CTRL(ssi1_b_ctrl,      SSI_SCK1_B,             SSI_WS1_B);
+SSI_PFC_PINS(ssi1_data,                RCAR_GP_PIN(3, 9));
+SSI_PFC_DATA(ssi1_data,                SSI_SDATA1);
+SSI_PFC_PINS(ssi2_a_ctrl,      RCAR_GP_PIN(2, 26),     RCAR_GP_PIN(3, 4));
+SSI_PFC_CTRL(ssi2_a_ctrl,      SSI_SCK2_A,             SSI_WS2_A);
+SSI_PFC_PINS(ssi2_b_ctrl,      RCAR_GP_PIN(2, 6),      RCAR_GP_PIN(2, 17));
+SSI_PFC_CTRL(ssi2_b_ctrl,      SSI_SCK2_B,             SSI_WS2_B);
+SSI_PFC_PINS(ssi2_data,                RCAR_GP_PIN(3, 8));
+SSI_PFC_DATA(ssi2_data,                SSI_SDATA2);
+
+/* - SSI 3/4 ---------------------------------------------------------------- */
+SSI_PFC_PINS(ssi34_ctrl,       RCAR_GP_PIN(3, 2),      RCAR_GP_PIN(3, 3));
+SSI_PFC_CTRL(ssi34_ctrl,       SSI_SCK34,              SSI_WS34);
+SSI_PFC_PINS(ssi3_data,                RCAR_GP_PIN(3, 5));
+SSI_PFC_DATA(ssi3_data,                SSI_SDATA3);
+SSI_PFC_PINS(ssi4_ctrl,                RCAR_GP_PIN(1, 22),     RCAR_GP_PIN(1, 23));
+SSI_PFC_CTRL(ssi4_ctrl,                SSI_SCK4,               SSI_WS4);
+SSI_PFC_PINS(ssi4_data,                RCAR_GP_PIN(3, 4));
+SSI_PFC_DATA(ssi4_data,                SSI_SDATA4);
+
+/* - SSI 5 ------------------------------------------------------------------ */
+SSI_PFC_PINS(ssi5_ctrl,                RCAR_GP_PIN(2, 31),     RCAR_GP_PIN(3, 0));
+SSI_PFC_CTRL(ssi5_ctrl,                SSI_SCK5,               SSI_WS5);
+SSI_PFC_PINS(ssi5_data,                RCAR_GP_PIN(3, 1));
+SSI_PFC_DATA(ssi5_data,                SSI_SDATA5);
+
+/* - SSI 6 ------------------------------------------------------------------ */
+SSI_PFC_PINS(ssi6_ctrl,                RCAR_GP_PIN(2, 28),     RCAR_GP_PIN(2, 29));
+SSI_PFC_CTRL(ssi6_ctrl,                SSI_SCK6,               SSI_WS6);
+SSI_PFC_PINS(ssi6_data,                RCAR_GP_PIN(2, 30));
+SSI_PFC_DATA(ssi6_data,                SSI_SDATA6);
+
+/* - SSI 7/8  --------------------------------------------------------------- */
+SSI_PFC_PINS(ssi78_ctrl,       RCAR_GP_PIN(2, 24),     RCAR_GP_PIN(2, 25));
+SSI_PFC_CTRL(ssi78_ctrl,       SSI_SCK78,              SSI_WS78);
+SSI_PFC_PINS(ssi7_data,                RCAR_GP_PIN(2, 27));
+SSI_PFC_DATA(ssi7_data,                SSI_SDATA7);
+SSI_PFC_PINS(ssi8_data,                RCAR_GP_PIN(2, 26));
+SSI_PFC_DATA(ssi8_data,                SSI_SDATA8);
+
 /* - USB0 ------------------------------------------------------------------- */
 SH_PFC_PINS(usb0,              RCAR_GP_PIN(0, 1));
 SH_PFC_MUX1(usb0,              PENC0);
@@ -1624,6 +1693,11 @@ 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(audio_clk_a),
+       SH_PFC_PIN_GROUP(audio_clk_b),
+       SH_PFC_PIN_GROUP(audio_clk_c),
+       SH_PFC_PIN_GROUP(audio_clkout_a),
+       SH_PFC_PIN_GROUP(audio_clkout_b),
        SH_PFC_PIN_GROUP(ether_rmii),
        SH_PFC_PIN_GROUP(ether_link),
        SH_PFC_PIN_GROUP(ether_magic),
@@ -1713,6 +1787,25 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {
        SH_PFC_PIN_GROUP(sdhi2_data4_b),
        SH_PFC_PIN_GROUP(sdhi2_wp_a),
        SH_PFC_PIN_GROUP(sdhi2_wp_b),
+       SH_PFC_PIN_GROUP(ssi012_ctrl),
+       SH_PFC_PIN_GROUP(ssi0_data),
+       SH_PFC_PIN_GROUP(ssi1_a_ctrl),
+       SH_PFC_PIN_GROUP(ssi1_b_ctrl),
+       SH_PFC_PIN_GROUP(ssi1_data),
+       SH_PFC_PIN_GROUP(ssi2_a_ctrl),
+       SH_PFC_PIN_GROUP(ssi2_b_ctrl),
+       SH_PFC_PIN_GROUP(ssi2_data),
+       SH_PFC_PIN_GROUP(ssi34_ctrl),
+       SH_PFC_PIN_GROUP(ssi3_data),
+       SH_PFC_PIN_GROUP(ssi4_ctrl),
+       SH_PFC_PIN_GROUP(ssi4_data),
+       SH_PFC_PIN_GROUP(ssi5_ctrl),
+       SH_PFC_PIN_GROUP(ssi5_data),
+       SH_PFC_PIN_GROUP(ssi6_ctrl),
+       SH_PFC_PIN_GROUP(ssi6_data),
+       SH_PFC_PIN_GROUP(ssi78_ctrl),
+       SH_PFC_PIN_GROUP(ssi7_data),
+       SH_PFC_PIN_GROUP(ssi8_data),
        SH_PFC_PIN_GROUP(usb0),
        SH_PFC_PIN_GROUP(usb0_ovc),
        SH_PFC_PIN_GROUP(usb1),
@@ -1725,6 +1818,14 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {
        SH_PFC_PIN_GROUP(vin1_sync),
 };
 
+static const char * const audio_clk_groups[] = {
+       "audio_clk_a",
+       "audio_clk_b",
+       "audio_clk_c",
+       "audio_clkout_a",
+       "audio_clkout_b",
+};
+
 static const char * const ether_groups[] = {
        "ether_rmii",
        "ether_link",
@@ -1875,6 +1976,28 @@ static const char * const sdhi2_groups[] = {
        "sdhi2_wp_b",
 };
 
+static const char * const ssi_groups[] = {
+       "ssi012_ctrl",
+       "ssi0_data",
+       "ssi1_a_ctrl",
+       "ssi1_b_ctrl",
+       "ssi1_data",
+       "ssi2_a_ctrl",
+       "ssi2_b_ctrl",
+       "ssi2_data",
+       "ssi34_ctrl",
+       "ssi3_data",
+       "ssi4_ctrl",
+       "ssi4_data",
+       "ssi5_ctrl",
+       "ssi5_data",
+       "ssi6_ctrl",
+       "ssi6_data",
+       "ssi78_ctrl",
+       "ssi7_data",
+       "ssi8_data",
+};
+
 static const char * const usb0_groups[] = {
        "usb0",
        "usb0_ovc",
@@ -1898,6 +2021,7 @@ static const char * const vin1_groups[] = {
 };
 
 static const struct sh_pfc_function pinmux_functions[] = {
+       SH_PFC_FUNCTION(audio_clk),
        SH_PFC_FUNCTION(ether),
        SH_PFC_FUNCTION(hscif0),
        SH_PFC_FUNCTION(hscif1),
@@ -1918,6 +2042,7 @@ static const struct sh_pfc_function pinmux_functions[] = {
        SH_PFC_FUNCTION(sdhi0),
        SH_PFC_FUNCTION(sdhi1),
        SH_PFC_FUNCTION(sdhi2),
+       SH_PFC_FUNCTION(ssi),
        SH_PFC_FUNCTION(usb0),
        SH_PFC_FUNCTION(usb1),
        SH_PFC_FUNCTION(vin0),