| From ea7d11c0372f0c1dbb73c24f42a11896daa92ccf Mon Sep 17 00:00:00 2001 |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Date: Tue, 3 Oct 2017 02:23:11 +0000 |
| Subject: [PATCH 0195/1795] pinctrl: sh-pfc: r8a7795: Add Audio SSI pin support |
| |
| Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| (cherry picked from commit 0526234d6786c749ca6014edc6dd1242dfe1ddac) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| --- |
| drivers/pinctrl/sh-pfc/pfc-r8a7795.c | 231 +++++++++++++++++++++++++++ |
| 1 file changed, 231 insertions(+) |
| |
| diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7795.c b/drivers/pinctrl/sh-pfc/pfc-r8a7795.c |
| index 3363453c4e4e..3712b9187c61 100644 |
| --- a/drivers/pinctrl/sh-pfc/pfc-r8a7795.c |
| +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7795.c |
| @@ -3277,6 +3277,183 @@ static const unsigned int sdhi3_ds_mux[] = { |
| SD3_DS_MARK, |
| }; |
| |
| +/* - SSI -------------------------------------------------------------------- */ |
| +static const unsigned int ssi0_data_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(6, 2), |
| +}; |
| +static const unsigned int ssi0_data_mux[] = { |
| + SSI_SDATA0_MARK, |
| +}; |
| +static const unsigned int ssi01239_ctrl_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(6, 0), RCAR_GP_PIN(6, 1), |
| +}; |
| +static const unsigned int ssi01239_ctrl_mux[] = { |
| + SSI_SCK01239_MARK, SSI_WS01239_MARK, |
| +}; |
| +static const unsigned int ssi1_data_a_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(6, 3), |
| +}; |
| +static const unsigned int ssi1_data_a_mux[] = { |
| + SSI_SDATA1_A_MARK, |
| +}; |
| +static const unsigned int ssi1_data_b_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(5, 12), |
| +}; |
| +static const unsigned int ssi1_data_b_mux[] = { |
| + SSI_SDATA1_B_MARK, |
| +}; |
| +static const unsigned int ssi1_ctrl_a_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(6, 26), RCAR_GP_PIN(6, 27), |
| +}; |
| +static const unsigned int ssi1_ctrl_a_mux[] = { |
| + SSI_SCK1_A_MARK, SSI_WS1_A_MARK, |
| +}; |
| +static const unsigned int ssi1_ctrl_b_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(6, 4), RCAR_GP_PIN(6, 21), |
| +}; |
| +static const unsigned int ssi1_ctrl_b_mux[] = { |
| + SSI_SCK1_B_MARK, SSI_WS1_B_MARK, |
| +}; |
| +static const unsigned int ssi2_data_a_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(6, 4), |
| +}; |
| +static const unsigned int ssi2_data_a_mux[] = { |
| + SSI_SDATA2_A_MARK, |
| +}; |
| +static const unsigned int ssi2_data_b_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(5, 13), |
| +}; |
| +static const unsigned int ssi2_data_b_mux[] = { |
| + SSI_SDATA2_B_MARK, |
| +}; |
| +static const unsigned int ssi2_ctrl_a_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(5, 19), RCAR_GP_PIN(5, 21), |
| +}; |
| +static const unsigned int ssi2_ctrl_a_mux[] = { |
| + SSI_SCK2_A_MARK, SSI_WS2_A_MARK, |
| +}; |
| +static const unsigned int ssi2_ctrl_b_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(6, 28), RCAR_GP_PIN(6, 29), |
| +}; |
| +static const unsigned int ssi2_ctrl_b_mux[] = { |
| + SSI_SCK2_B_MARK, SSI_WS2_B_MARK, |
| +}; |
| +static const unsigned int ssi3_data_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(6, 7), |
| +}; |
| +static const unsigned int ssi3_data_mux[] = { |
| + SSI_SDATA3_MARK, |
| +}; |
| +static const unsigned int ssi349_ctrl_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(6, 5), RCAR_GP_PIN(6, 6), |
| +}; |
| +static const unsigned int ssi349_ctrl_mux[] = { |
| + SSI_SCK349_MARK, SSI_WS349_MARK, |
| +}; |
| +static const unsigned int ssi4_data_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(6, 10), |
| +}; |
| +static const unsigned int ssi4_data_mux[] = { |
| + SSI_SDATA4_MARK, |
| +}; |
| +static const unsigned int ssi4_ctrl_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(6, 8), RCAR_GP_PIN(6, 9), |
| +}; |
| +static const unsigned int ssi4_ctrl_mux[] = { |
| + SSI_SCK4_MARK, SSI_WS4_MARK, |
| +}; |
| +static const unsigned int ssi5_data_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(6, 13), |
| +}; |
| +static const unsigned int ssi5_data_mux[] = { |
| + SSI_SDATA5_MARK, |
| +}; |
| +static const unsigned int ssi5_ctrl_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(6, 11), RCAR_GP_PIN(6, 12), |
| +}; |
| +static const unsigned int ssi5_ctrl_mux[] = { |
| + SSI_SCK5_MARK, SSI_WS5_MARK, |
| +}; |
| +static const unsigned int ssi6_data_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(6, 16), |
| +}; |
| +static const unsigned int ssi6_data_mux[] = { |
| + SSI_SDATA6_MARK, |
| +}; |
| +static const unsigned int ssi6_ctrl_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(6, 14), RCAR_GP_PIN(6, 15), |
| +}; |
| +static const unsigned int ssi6_ctrl_mux[] = { |
| + SSI_SCK6_MARK, SSI_WS6_MARK, |
| +}; |
| +static const unsigned int ssi7_data_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(6, 19), |
| +}; |
| +static const unsigned int ssi7_data_mux[] = { |
| + SSI_SDATA7_MARK, |
| +}; |
| +static const unsigned int ssi78_ctrl_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(6, 17), RCAR_GP_PIN(6, 18), |
| +}; |
| +static const unsigned int ssi78_ctrl_mux[] = { |
| + SSI_SCK78_MARK, SSI_WS78_MARK, |
| +}; |
| +static const unsigned int ssi8_data_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(6, 20), |
| +}; |
| +static const unsigned int ssi8_data_mux[] = { |
| + SSI_SDATA8_MARK, |
| +}; |
| +static const unsigned int ssi9_data_a_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(6, 21), |
| +}; |
| +static const unsigned int ssi9_data_a_mux[] = { |
| + SSI_SDATA9_A_MARK, |
| +}; |
| +static const unsigned int ssi9_data_b_pins[] = { |
| + /* SDATA */ |
| + RCAR_GP_PIN(5, 14), |
| +}; |
| +static const unsigned int ssi9_data_b_mux[] = { |
| + SSI_SDATA9_B_MARK, |
| +}; |
| +static const unsigned int ssi9_ctrl_a_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(5, 15), RCAR_GP_PIN(5, 16), |
| +}; |
| +static const unsigned int ssi9_ctrl_a_mux[] = { |
| + SSI_SCK9_A_MARK, SSI_WS9_A_MARK, |
| +}; |
| +static const unsigned int ssi9_ctrl_b_pins[] = { |
| + /* SCK, WS */ |
| + RCAR_GP_PIN(6, 30), RCAR_GP_PIN(6, 31), |
| +}; |
| +static const unsigned int ssi9_ctrl_b_mux[] = { |
| + SSI_SCK9_B_MARK, SSI_WS9_B_MARK, |
| +}; |
| + |
| /* - SCIF Clock ------------------------------------------------------------- */ |
| static const unsigned int scif_clk_a_pins[] = { |
| /* SCIF_CLK */ |
| @@ -3568,6 +3745,31 @@ static const struct sh_pfc_pin_group pinmux_groups[] = { |
| SH_PFC_PIN_GROUP(sdhi3_cd), |
| SH_PFC_PIN_GROUP(sdhi3_wp), |
| SH_PFC_PIN_GROUP(sdhi3_ds), |
| + SH_PFC_PIN_GROUP(ssi0_data), |
| + SH_PFC_PIN_GROUP(ssi01239_ctrl), |
| + SH_PFC_PIN_GROUP(ssi1_data_a), |
| + SH_PFC_PIN_GROUP(ssi1_data_b), |
| + SH_PFC_PIN_GROUP(ssi1_ctrl_a), |
| + SH_PFC_PIN_GROUP(ssi1_ctrl_b), |
| + SH_PFC_PIN_GROUP(ssi2_data_a), |
| + SH_PFC_PIN_GROUP(ssi2_data_b), |
| + SH_PFC_PIN_GROUP(ssi2_ctrl_a), |
| + SH_PFC_PIN_GROUP(ssi2_ctrl_b), |
| + SH_PFC_PIN_GROUP(ssi3_data), |
| + SH_PFC_PIN_GROUP(ssi349_ctrl), |
| + SH_PFC_PIN_GROUP(ssi4_data), |
| + SH_PFC_PIN_GROUP(ssi4_ctrl), |
| + SH_PFC_PIN_GROUP(ssi5_data), |
| + SH_PFC_PIN_GROUP(ssi5_ctrl), |
| + SH_PFC_PIN_GROUP(ssi6_data), |
| + SH_PFC_PIN_GROUP(ssi6_ctrl), |
| + SH_PFC_PIN_GROUP(ssi7_data), |
| + SH_PFC_PIN_GROUP(ssi78_ctrl), |
| + SH_PFC_PIN_GROUP(ssi8_data), |
| + SH_PFC_PIN_GROUP(ssi9_data_a), |
| + SH_PFC_PIN_GROUP(ssi9_data_b), |
| + SH_PFC_PIN_GROUP(ssi9_ctrl_a), |
| + SH_PFC_PIN_GROUP(ssi9_ctrl_b), |
| SH_PFC_PIN_GROUP(usb0), |
| SH_PFC_PIN_GROUP(usb1), |
| SH_PFC_PIN_GROUP(usb2), |
| @@ -3894,6 +4096,34 @@ static const char * const sdhi3_groups[] = { |
| "sdhi3_ds", |
| }; |
| |
| +static const char * const ssi_groups[] = { |
| + "ssi0_data", |
| + "ssi01239_ctrl", |
| + "ssi1_data_a", |
| + "ssi1_data_b", |
| + "ssi1_ctrl_a", |
| + "ssi1_ctrl_b", |
| + "ssi2_data_a", |
| + "ssi2_data_b", |
| + "ssi2_ctrl_a", |
| + "ssi2_ctrl_b", |
| + "ssi3_data", |
| + "ssi349_ctrl", |
| + "ssi4_data", |
| + "ssi4_ctrl", |
| + "ssi5_data", |
| + "ssi5_ctrl", |
| + "ssi6_data", |
| + "ssi6_ctrl", |
| + "ssi7_data", |
| + "ssi78_ctrl", |
| + "ssi8_data", |
| + "ssi9_data_a", |
| + "ssi9_data_b", |
| + "ssi9_ctrl_a", |
| + "ssi9_ctrl_b", |
| +}; |
| + |
| static const char * const usb0_groups[] = { |
| "usb0", |
| }; |
| @@ -3944,6 +4174,7 @@ static const struct sh_pfc_function pinmux_functions[] = { |
| SH_PFC_FUNCTION(sdhi1), |
| SH_PFC_FUNCTION(sdhi2), |
| SH_PFC_FUNCTION(sdhi3), |
| + SH_PFC_FUNCTION(ssi), |
| SH_PFC_FUNCTION(usb0), |
| SH_PFC_FUNCTION(usb1), |
| SH_PFC_FUNCTION(usb2), |
| -- |
| 2.19.0 |
| |