lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <13d28808-b73f-9cdf-3a53-a0dd219c0e46@wanyeetech.com>
Date:   Tue, 28 Jul 2020 23:43:17 +0800
From:   Zhou Yanjie <zhouyanjie@...yeetech.com>
To:     Paul Cercueil <paul@...pouillou.net>
Cc:     linus.walleij@...aro.org, linux-gpio@...r.kernel.org,
        linux-kernel@...r.kernel.org, prasannatsmkumar@...il.com,
        dongsheng.qiu@...enic.com, aric.pzqi@...enic.com,
        rick.tyliu@...enic.com, yanfei.li@...enic.com,
        sernia.zhou@...mail.com, zhenwenjin@...il.com,
        Zeartul Rojek <contact@...ur-rojek.eu>
Subject: Re: [PATCH 1/1] pinctrl: Ingenic: Add SSI pins support for JZ4770 and
 JZ4780.

Hi Paul,

在 2020/7/25 下午8:35, Paul Cercueil 写道:
> Hi Zhou,
>
> Le sam. 25 juil. 2020 à 15:46, 周琰杰 (Zhou Yanjie) 
> <zhouyanjie@...yeetech.com> a écrit :
>> Add SSI pins support for the JZ4770 SoC and the
>> JZ4780 SoC from Ingenic.
>>
>> Signed-off-by: 周琰杰 (Zhou Yanjie) <zhouyanjie@...yeetech.com>
>> ---
>>  drivers/pinctrl/pinctrl-ingenic.c | 267 
>> ++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 267 insertions(+)
>>
>> diff --git a/drivers/pinctrl/pinctrl-ingenic.c 
>> b/drivers/pinctrl/pinctrl-ingenic.c
>> index 6a8d44504f94..804c538fa08d 100644
>> --- a/drivers/pinctrl/pinctrl-ingenic.c
>> +++ b/drivers/pinctrl/pinctrl-ingenic.c
>> @@ -630,6 +630,46 @@ static int jz4770_uart2_data_pins[] = { 0x5c, 
>> 0x5e, };
>>  static int jz4770_uart2_hwflow_pins[] = { 0x5d, 0x5f, };
>>  static int jz4770_uart3_data_pins[] = { 0x6c, 0x85, };
>>  static int jz4770_uart3_hwflow_pins[] = { 0x88, 0x89, };
>> +static int jz4770_ssi0_dt_a_pins[] = { 0x15, };
>> +static int jz4770_ssi0_dt_b_pins[] = { 0x35, };
>> +static int jz4770_ssi0_dt_d_pins[] = { 0x55, };
>> +static int jz4770_ssi0_dt_e_pins[] = { 0x71, };
>> +static int jz4770_ssi0_dr_a_pins[] = { 0x14, };
>> +static int jz4770_ssi0_dr_b_pins[] = { 0x34, };
>> +static int jz4770_ssi0_dr_d_pins[] = { 0x54, };
>> +static int jz4770_ssi0_dr_e_pins[] = { 0x6e, };
>> +static int jz4770_ssi0_clk_a_pins[] = { 0x12, };
>> +static int jz4770_ssi0_clk_b_pins[] = { 0x3c, };
>> +static int jz4770_ssi0_clk_d_pins[] = { 0x58, };
>> +static int jz4770_ssi0_clk_e_pins[] = { 0x6f, };
>> +static int jz4770_ssi0_gpc_b_pins[] = { 0x3e, };
>> +static int jz4770_ssi0_gpc_d_pins[] = { 0x56, };
>> +static int jz4770_ssi0_gpc_e_pins[] = { 0x73, };
>> +static int jz4770_ssi0_ce0_a_pins[] = { 0x13, };
>> +static int jz4770_ssi0_ce0_b_pins[] = { 0x3d, };
>> +static int jz4770_ssi0_ce0_d_pins[] = { 0x59, };
>> +static int jz4770_ssi0_ce0_e_pins[] = { 0x70, };
>> +static int jz4770_ssi0_ce1_b_pins[] = { 0x3f, };
>> +static int jz4770_ssi0_ce1_d_pins[] = { 0x57, };
>> +static int jz4770_ssi0_ce1_e_pins[] = { 0x72, };
>
> I think you could group dt/dr/clk together each time, with ce0/ce1/gpc 
> apart, unless you really need such granularity.
>
When connecting certain devices, sometimes only the dt or dr pins (such 
as AD7266, only use dr) need to be used separately. If dt, dr, and clk 
are put in the same group, then the dt pin cannot be used for other 
purposes at this time, ce0, ce1 and gpc also have similar situations, so 
grouping them independently can ensure maximum flexibility and maximum 
utilization.

> Btw, just to avoid duplicated work, know that Artur (Cc'd) is already 
> working on a SPI driver for the JZ4770. In case you were working on one.
>
Yes, I already communicated with him, and because the engineer of 
Ingenic told me that the ssi driver based on Artur's driver has made new 
progress, so I hope to improve the related driver in advance.

Thanks and best regards!

> Cheers,
> -Paul
>
>> +static int jz4770_ssi1_dt_b_pins[] = { 0x35, };
>> +static int jz4770_ssi1_dt_d_pins[] = { 0x55, };
>> +static int jz4770_ssi1_dt_e_pins[] = { 0x71, };
>> +static int jz4770_ssi1_dr_b_pins[] = { 0x34, };
>> +static int jz4770_ssi1_dr_d_pins[] = { 0x54, };
>> +static int jz4770_ssi1_dr_e_pins[] = { 0x6e, };
>> +static int jz4770_ssi1_clk_b_pins[] = { 0x3c, };
>> +static int jz4770_ssi1_clk_d_pins[] = { 0x58, };
>> +static int jz4770_ssi1_clk_e_pins[] = { 0x6f, };
>> +static int jz4770_ssi1_gpc_b_pins[] = { 0x3e, };
>> +static int jz4770_ssi1_gpc_d_pins[] = { 0x56, };
>> +static int jz4770_ssi1_gpc_e_pins[] = { 0x73, };
>> +static int jz4770_ssi1_ce0_b_pins[] = { 0x3d, };
>> +static int jz4770_ssi1_ce0_d_pins[] = { 0x59, };
>> +static int jz4770_ssi1_ce0_e_pins[] = { 0x70, };
>> +static int jz4770_ssi1_ce1_b_pins[] = { 0x3f, };
>> +static int jz4770_ssi1_ce1_d_pins[] = { 0x57, };
>> +static int jz4770_ssi1_ce1_e_pins[] = { 0x72, };
>>  static int jz4770_mmc0_1bit_a_pins[] = { 0x12, 0x13, 0x14, };
>>  static int jz4770_mmc0_4bit_a_pins[] = { 0x15, 0x16, 0x17, };
>>  static int jz4770_mmc0_1bit_e_pins[] = { 0x9c, 0x9d, 0x94, };
>> @@ -700,6 +740,46 @@ static int jz4770_uart2_data_funcs[] = { 0, 0, };
>>  static int jz4770_uart2_hwflow_funcs[] = { 0, 0, };
>>  static int jz4770_uart3_data_funcs[] = { 0, 1, };
>>  static int jz4770_uart3_hwflow_funcs[] = { 0, 0, };
>> +static int jz4770_ssi0_dt_a_funcs[] = { 2, };
>> +static int jz4770_ssi0_dt_b_funcs[] = { 1, };
>> +static int jz4770_ssi0_dt_d_funcs[] = { 1, };
>> +static int jz4770_ssi0_dt_e_funcs[] = { 0, };
>> +static int jz4770_ssi0_dr_a_funcs[] = { 1, };
>> +static int jz4770_ssi0_dr_b_funcs[] = { 1, };
>> +static int jz4770_ssi0_dr_d_funcs[] = { 1, };
>> +static int jz4770_ssi0_dr_e_funcs[] = { 0, };
>> +static int jz4770_ssi0_clk_a_funcs[] = { 2, };
>> +static int jz4770_ssi0_clk_b_funcs[] = { 1, };
>> +static int jz4770_ssi0_clk_d_funcs[] = { 1, };
>> +static int jz4770_ssi0_clk_e_funcs[] = { 0, };
>> +static int jz4770_ssi0_gpc_b_funcs[] = { 1, };
>> +static int jz4770_ssi0_gpc_d_funcs[] = { 1, };
>> +static int jz4770_ssi0_gpc_e_funcs[] = { 0, };
>> +static int jz4770_ssi0_ce0_a_funcs[] = { 2, };
>> +static int jz4770_ssi0_ce0_b_funcs[] = { 1, };
>> +static int jz4770_ssi0_ce0_d_funcs[] = { 1, };
>> +static int jz4770_ssi0_ce0_e_funcs[] = { 0, };
>> +static int jz4770_ssi0_ce1_b_funcs[] = { 1, };
>> +static int jz4770_ssi0_ce1_d_funcs[] = { 1, };
>> +static int jz4770_ssi0_ce1_e_funcs[] = { 0, };
>> +static int jz4770_ssi1_dt_b_funcs[] = { 2, };
>> +static int jz4770_ssi1_dt_d_funcs[] = { 2, };
>> +static int jz4770_ssi1_dt_e_funcs[] = { 1, };
>> +static int jz4770_ssi1_dr_b_funcs[] = { 2, };
>> +static int jz4770_ssi1_dr_d_funcs[] = { 2, };
>> +static int jz4770_ssi1_dr_e_funcs[] = { 1, };
>> +static int jz4770_ssi1_clk_b_funcs[] = { 2, };
>> +static int jz4770_ssi1_clk_d_funcs[] = { 2, };
>> +static int jz4770_ssi1_clk_e_funcs[] = { 1, };
>> +static int jz4770_ssi1_gpc_b_funcs[] = { 2, };
>> +static int jz4770_ssi1_gpc_d_funcs[] = { 2, };
>> +static int jz4770_ssi1_gpc_e_funcs[] = { 1, };
>> +static int jz4770_ssi1_ce0_b_funcs[] = { 2, };
>> +static int jz4770_ssi1_ce0_d_funcs[] = { 2, };
>> +static int jz4770_ssi1_ce0_e_funcs[] = { 1, };
>> +static int jz4770_ssi1_ce1_b_funcs[] = { 2, };
>> +static int jz4770_ssi1_ce1_d_funcs[] = { 2, };
>> +static int jz4770_ssi1_ce1_e_funcs[] = { 1, };
>>  static int jz4770_mmc0_1bit_a_funcs[] = { 1, 1, 0, };
>>  static int jz4770_mmc0_4bit_a_funcs[] = { 1, 1, 1, };
>>  static int jz4770_mmc0_1bit_e_funcs[] = { 0, 0, 0, };
>> @@ -760,6 +840,46 @@ static const struct group_desc jz4770_groups[] = {
>>      INGENIC_PIN_GROUP("uart2-hwflow", jz4770_uart2_hwflow),
>>      INGENIC_PIN_GROUP("uart3-data", jz4770_uart3_data),
>>      INGENIC_PIN_GROUP("uart3-hwflow", jz4770_uart3_hwflow),
>> +    INGENIC_PIN_GROUP("ssi0_dt_a", jz4770_ssi0_dt_a),
>> +    INGENIC_PIN_GROUP("ssi0_dt_b", jz4770_ssi0_dt_b),
>> +    INGENIC_PIN_GROUP("ssi0_dt_d", jz4770_ssi0_dt_d),
>> +    INGENIC_PIN_GROUP("ssi0_dt_e", jz4770_ssi0_dt_e),
>> +    INGENIC_PIN_GROUP("ssi0_dr_a", jz4770_ssi0_dr_a),
>> +    INGENIC_PIN_GROUP("ssi0_dr_b", jz4770_ssi0_dr_b),
>> +    INGENIC_PIN_GROUP("ssi0_dr_d", jz4770_ssi0_dr_d),
>> +    INGENIC_PIN_GROUP("ssi0_dr_e", jz4770_ssi0_dr_e),
>> +    INGENIC_PIN_GROUP("ssi0_clk_a", jz4770_ssi0_clk_a),
>> +    INGENIC_PIN_GROUP("ssi0_clk_b", jz4770_ssi0_clk_b),
>> +    INGENIC_PIN_GROUP("ssi0_clk_d", jz4770_ssi0_clk_d),
>> +    INGENIC_PIN_GROUP("ssi0_clk_e", jz4770_ssi0_clk_e),
>> +    INGENIC_PIN_GROUP("ssi0_gpc_b", jz4770_ssi0_gpc_b),
>> +    INGENIC_PIN_GROUP("ssi0_gpc_d", jz4770_ssi0_gpc_d),
>> +    INGENIC_PIN_GROUP("ssi0_gpc_e", jz4770_ssi0_gpc_e),
>> +    INGENIC_PIN_GROUP("ssi0_ce0_a", jz4770_ssi0_ce0_a),
>> +    INGENIC_PIN_GROUP("ssi0_ce0_b", jz4770_ssi0_ce0_b),
>> +    INGENIC_PIN_GROUP("ssi0_ce0_d", jz4770_ssi0_ce0_d),
>> +    INGENIC_PIN_GROUP("ssi0_ce0_e", jz4770_ssi0_ce0_e),
>> +    INGENIC_PIN_GROUP("ssi0_ce1_b", jz4770_ssi0_ce1_b),
>> +    INGENIC_PIN_GROUP("ssi0_ce1_d", jz4770_ssi0_ce1_d),
>> +    INGENIC_PIN_GROUP("ssi0_ce1_e", jz4770_ssi0_ce1_e),
>> +    INGENIC_PIN_GROUP("ssi1_dt_b", jz4770_ssi1_dt_b),
>> +    INGENIC_PIN_GROUP("ssi1_dt_d", jz4770_ssi1_dt_d),
>> +    INGENIC_PIN_GROUP("ssi1_dt_e", jz4770_ssi1_dt_e),
>> +    INGENIC_PIN_GROUP("ssi1_dr_b", jz4770_ssi1_dr_b),
>> +    INGENIC_PIN_GROUP("ssi1_dr_d", jz4770_ssi1_dr_d),
>> +    INGENIC_PIN_GROUP("ssi1_dr_e", jz4770_ssi1_dr_e),
>> +    INGENIC_PIN_GROUP("ssi1_clk_b", jz4770_ssi1_clk_b),
>> +    INGENIC_PIN_GROUP("ssi1_clk_d", jz4770_ssi1_clk_d),
>> +    INGENIC_PIN_GROUP("ssi1_clk_e", jz4770_ssi1_clk_e),
>> +    INGENIC_PIN_GROUP("ssi1_gpc_b", jz4770_ssi1_gpc_b),
>> +    INGENIC_PIN_GROUP("ssi1_gpc_d", jz4770_ssi1_gpc_d),
>> +    INGENIC_PIN_GROUP("ssi1_gpc_e", jz4770_ssi1_gpc_e),
>> +    INGENIC_PIN_GROUP("ssi1_ce0_b", jz4770_ssi1_ce0_b),
>> +    INGENIC_PIN_GROUP("ssi1_ce0_d", jz4770_ssi1_ce0_d),
>> +    INGENIC_PIN_GROUP("ssi1_ce0_e", jz4770_ssi1_ce0_e),
>> +    INGENIC_PIN_GROUP("ssi1_ce1_b", jz4770_ssi1_ce1_b),
>> +    INGENIC_PIN_GROUP("ssi1_ce1_d", jz4770_ssi1_ce1_d),
>> +    INGENIC_PIN_GROUP("ssi1_ce1_e", jz4770_ssi1_ce1_e),
>>      INGENIC_PIN_GROUP("mmc0-1bit-a", jz4770_mmc0_1bit_a),
>>      INGENIC_PIN_GROUP("mmc0-4bit-a", jz4770_mmc0_4bit_a),
>>      INGENIC_PIN_GROUP("mmc0-1bit-e", jz4770_mmc0_1bit_e),
>> @@ -812,6 +932,22 @@ static const char *jz4770_uart0_groups[] = { 
>> "uart0-data", "uart0-hwflow", };
>>  static const char *jz4770_uart1_groups[] = { "uart1-data", 
>> "uart1-hwflow", };
>>  static const char *jz4770_uart2_groups[] = { "uart2-data", 
>> "uart2-hwflow", };
>>  static const char *jz4770_uart3_groups[] = { "uart3-data", 
>> "uart3-hwflow", };
>> +static const char *jz4770_ssi0_groups[] = {
>> +    "ssi0-dt-a", "ssi0-dt-b", "ssi0-dt-d", "ssi0-dt-e",
>> +    "ssi0-dr-a", "ssi0-dr-b", "ssi0-dr-d", "ssi0-dr-e",
>> +    "ssi0-clk-a", "ssi0-clk-b", "ssi0-clk-d", "ssi0-clk-e",
>> +    "ssi0-gpc-b", "ssi0-gpc-d", "ssi0-gpc-e",
>> +    "ssi0-ce0-a", "ssi0-ce0-b", "ssi0-ce0-d", "ssi0-ce0-e",
>> +    "ssi0-ce1-b", "ssi0-ce1-d", "ssi0-ce1-e",
>> +};
>> +static const char *jz4770_ssi1_groups[] = {
>> +    "ssi1-dt-b", "ssi1-dt-d", "ssi1-dt-e",
>> +    "ssi1-dr-b", "ssi1-dr-d", "ssi1-dr-e",
>> +    "ssi1-clk-b", "ssi1-clk-d", "ssi1-clk-e",
>> +    "ssi1-gpc-b", "ssi1-gpc-d", "ssi1-gpc-e",
>> +    "ssi1-ce0-b", "ssi1-ce0-d", "ssi1-ce0-e",
>> +    "ssi1-ce1-b", "ssi1-ce1-d", "ssi1-ce1-e",
>> +};
>>  static const char *jz4770_mmc0_groups[] = {
>>      "mmc0-1bit-a", "mmc0-4bit-a",
>>      "mmc0-1bit-e", "mmc0-4bit-e", "mmc0-8bit-e",
>> @@ -855,6 +991,8 @@ static const struct function_desc 
>> jz4770_functions[] = {
>>      { "uart1", jz4770_uart1_groups, ARRAY_SIZE(jz4770_uart1_groups), },
>>      { "uart2", jz4770_uart2_groups, ARRAY_SIZE(jz4770_uart2_groups), },
>>      { "uart3", jz4770_uart3_groups, ARRAY_SIZE(jz4770_uart3_groups), },
>> +    { "ssi0", jz4770_ssi0_groups, ARRAY_SIZE(jz4770_ssi0_groups), },
>> +    { "ssi1", jz4770_ssi1_groups, ARRAY_SIZE(jz4770_ssi1_groups), },
>>      { "mmc0", jz4770_mmc0_groups, ARRAY_SIZE(jz4770_mmc0_groups), },
>>      { "mmc1", jz4770_mmc1_groups, ARRAY_SIZE(jz4770_mmc1_groups), },
>>      { "mmc2", jz4770_mmc2_groups, ARRAY_SIZE(jz4770_mmc2_groups), },
>> @@ -897,6 +1035,39 @@ static const struct ingenic_chip_info 
>> jz4770_chip_info = {
>>  static int jz4780_uart2_data_pins[] = { 0x66, 0x67, };
>>  static int jz4780_uart2_hwflow_pins[] = { 0x65, 0x64, };
>>  static int jz4780_uart4_data_pins[] = { 0x54, 0x4a, };
>> +static int jz4780_ssi0_dt_a_19_pins[] = { 0x13, };
>> +static int jz4780_ssi0_dt_a_21_pins[] = { 0x15, };
>> +static int jz4780_ssi0_dt_a_28_pins[] = { 0x1c, };
>> +static int jz4780_ssi0_dt_b_pins[] = { 0x3d, };
>> +static int jz4780_ssi0_dt_d_pins[] = { 0x59, };
>> +static int jz4780_ssi0_dr_a_20_pins[] = { 0x14, };
>> +static int jz4780_ssi0_dr_a_27_pins[] = { 0x1b, };
>> +static int jz4780_ssi0_dr_b_pins[] = { 0x34, };
>> +static int jz4780_ssi0_dr_d_pins[] = { 0x54, };
>> +static int jz4780_ssi0_clk_a_pins[] = { 0x12, };
>> +static int jz4780_ssi0_clk_b_5_pins[] = { 0x25, };
>> +static int jz4780_ssi0_clk_b_28_pins[] = { 0x3c, };
>> +static int jz4780_ssi0_clk_d_pins[] = { 0x58, };
>> +static int jz4780_ssi0_gpc_b_pins[] = { 0x3e, };
>> +static int jz4780_ssi0_gpc_d_pins[] = { 0x56, };
>> +static int jz4780_ssi0_ce0_a_23_pins[] = { 0x17, };
>> +static int jz4780_ssi0_ce0_a_25_pins[] = { 0x19, };
>> +static int jz4780_ssi0_ce0_b_pins[] = { 0x3f, };
>> +static int jz4780_ssi0_ce0_d_pins[] = { 0x57, };
>> +static int jz4780_ssi0_ce1_b_pins[] = { 0x35, };
>> +static int jz4780_ssi0_ce1_d_pins[] = { 0x55, };
>> +static int jz4780_ssi1_dt_b_pins[] = { 0x3d, };
>> +static int jz4780_ssi1_dt_d_pins[] = { 0x59, };
>> +static int jz4780_ssi1_dr_b_pins[] = { 0x34, };
>> +static int jz4780_ssi1_dr_d_pins[] = { 0x54, };
>> +static int jz4780_ssi1_clk_b_pins[] = { 0x3c, };
>> +static int jz4780_ssi1_clk_d_pins[] = { 0x58, };
>> +static int jz4780_ssi1_gpc_b_pins[] = { 0x3e, };
>> +static int jz4780_ssi1_gpc_d_pins[] = { 0x56, };
>> +static int jz4780_ssi1_ce0_b_pins[] = { 0x3f, };
>> +static int jz4780_ssi1_ce0_d_pins[] = { 0x57, };
>> +static int jz4780_ssi1_ce1_b_pins[] = { 0x35, };
>> +static int jz4780_ssi1_ce1_d_pins[] = { 0x55, };
>>  static int jz4780_mmc0_8bit_a_pins[] = { 0x04, 0x05, 0x06, 0x07, 
>> 0x18, };
>>  static int jz4780_i2c3_pins[] = { 0x6a, 0x6b, };
>>  static int jz4780_i2c4_e_pins[] = { 0x8c, 0x8d, };
>> @@ -906,6 +1077,39 @@ static int jz4780_hdmi_ddc_pins[] = { 0xb9, 
>> 0xb8, };
>>  static int jz4780_uart2_data_funcs[] = { 1, 1, };
>>  static int jz4780_uart2_hwflow_funcs[] = { 1, 1, };
>>  static int jz4780_uart4_data_funcs[] = { 2, 2, };
>> +static int jz4780_ssi0_dt_a_19_funcs[] = { 2, };
>> +static int jz4780_ssi0_dt_a_21_funcs[] = { 2, };
>> +static int jz4780_ssi0_dt_a_28_funcs[] = { 2, };
>> +static int jz4780_ssi0_dt_b_funcs[] = { 1, };
>> +static int jz4780_ssi0_dt_d_funcs[] = { 1, };
>> +static int jz4780_ssi0_dr_a_20_funcs[] = { 2, };
>> +static int jz4780_ssi0_dr_a_27_funcs[] = { 2, };
>> +static int jz4780_ssi0_dr_b_funcs[] = { 1, };
>> +static int jz4780_ssi0_dr_d_funcs[] = { 1, };
>> +static int jz4780_ssi0_clk_a_funcs[] = { 2, };
>> +static int jz4780_ssi0_clk_b_5_funcs[] = { 1, };
>> +static int jz4780_ssi0_clk_b_28_funcs[] = { 1, };
>> +static int jz4780_ssi0_clk_d_funcs[] = { 1, };
>> +static int jz4780_ssi0_gpc_b_funcs[] = { 1, };
>> +static int jz4780_ssi0_gpc_d_funcs[] = { 1, };
>> +static int jz4780_ssi0_ce0_a_23_funcs[] = { 2, };
>> +static int jz4780_ssi0_ce0_a_25_funcs[] = { 2, };
>> +static int jz4780_ssi0_ce0_b_funcs[] = { 1, };
>> +static int jz4780_ssi0_ce0_d_funcs[] = { 1, };
>> +static int jz4780_ssi0_ce1_b_funcs[] = { 1, };
>> +static int jz4780_ssi0_ce1_d_funcs[] = { 1, };
>> +static int jz4780_ssi1_dt_b_funcs[] = { 2, };
>> +static int jz4780_ssi1_dt_d_funcs[] = { 2, };
>> +static int jz4780_ssi1_dr_b_funcs[] = { 2, };
>> +static int jz4780_ssi1_dr_d_funcs[] = { 2, };
>> +static int jz4780_ssi1_clk_b_funcs[] = { 2, };
>> +static int jz4780_ssi1_clk_d_funcs[] = { 2, };
>> +static int jz4780_ssi1_gpc_b_funcs[] = { 2, };
>> +static int jz4780_ssi1_gpc_d_funcs[] = { 2, };
>> +static int jz4780_ssi1_ce0_b_funcs[] = { 2, };
>> +static int jz4780_ssi1_ce0_d_funcs[] = { 2, };
>> +static int jz4780_ssi1_ce1_b_funcs[] = { 2, };
>> +static int jz4780_ssi1_ce1_d_funcs[] = { 2, };
>>  static int jz4780_mmc0_8bit_a_funcs[] = { 1, 1, 1, 1, 1, };
>>  static int jz4780_i2c3_funcs[] = { 1, 1, };
>>  static int jz4780_i2c4_e_funcs[] = { 1, 1, };
>> @@ -922,6 +1126,51 @@ static const struct group_desc jz4780_groups[] = {
>>      INGENIC_PIN_GROUP("uart3-data", jz4770_uart3_data),
>>      INGENIC_PIN_GROUP("uart3-hwflow", jz4770_uart3_hwflow),
>>      INGENIC_PIN_GROUP("uart4-data", jz4780_uart4_data),
>> +    INGENIC_PIN_GROUP("ssi0_dt_a_19", jz4780_ssi0_dt_a_19),
>> +    INGENIC_PIN_GROUP("ssi0_dt_a_21", jz4780_ssi0_dt_a_21),
>> +    INGENIC_PIN_GROUP("ssi0_dt_a_28", jz4780_ssi0_dt_a_28),
>> +    INGENIC_PIN_GROUP("ssi0_dt_b", jz4780_ssi0_dt_b),
>> +    INGENIC_PIN_GROUP("ssi0_dt_d", jz4780_ssi0_dt_d),
>> +    INGENIC_PIN_GROUP("ssi0_dt_e", jz4770_ssi0_dt_e),
>> +    INGENIC_PIN_GROUP("ssi0_dr_a_20", jz4780_ssi0_dr_a_20),
>> +    INGENIC_PIN_GROUP("ssi0_dr_a_27", jz4780_ssi0_dr_a_27),
>> +    INGENIC_PIN_GROUP("ssi0_dr_b", jz4780_ssi0_dr_b),
>> +    INGENIC_PIN_GROUP("ssi0_dr_d", jz4780_ssi0_dr_d),
>> +    INGENIC_PIN_GROUP("ssi0_dr_e", jz4770_ssi0_dr_e),
>> +    INGENIC_PIN_GROUP("ssi0_clk_a", jz4780_ssi0_clk_a),
>> +    INGENIC_PIN_GROUP("ssi0_clk_b_5", jz4780_ssi0_clk_b_5),
>> +    INGENIC_PIN_GROUP("ssi0_clk_b_28", jz4780_ssi0_clk_b_28),
>> +    INGENIC_PIN_GROUP("ssi0_clk_d", jz4780_ssi0_clk_d),
>> +    INGENIC_PIN_GROUP("ssi0_clk_e", jz4770_ssi0_clk_e),
>> +    INGENIC_PIN_GROUP("ssi0_gpc_b", jz4780_ssi0_gpc_b),
>> +    INGENIC_PIN_GROUP("ssi0_gpc_d", jz4780_ssi0_gpc_d),
>> +    INGENIC_PIN_GROUP("ssi0_gpc_e", jz4770_ssi0_gpc_e),
>> +    INGENIC_PIN_GROUP("ssi0_ce0_a_23", jz4780_ssi0_ce0_a_23),
>> +    INGENIC_PIN_GROUP("ssi0_ce0_a_25", jz4780_ssi0_ce0_a_25),
>> +    INGENIC_PIN_GROUP("ssi0_ce0_b", jz4780_ssi0_ce0_b),
>> +    INGENIC_PIN_GROUP("ssi0_ce0_d", jz4780_ssi0_ce0_d),
>> +    INGENIC_PIN_GROUP("ssi0_ce0_e", jz4770_ssi0_ce0_e),
>> +    INGENIC_PIN_GROUP("ssi0_ce1_b", jz4780_ssi0_ce1_b),
>> +    INGENIC_PIN_GROUP("ssi0_ce1_d", jz4780_ssi0_ce1_d),
>> +    INGENIC_PIN_GROUP("ssi0_ce1_e", jz4770_ssi0_ce1_e),
>> +    INGENIC_PIN_GROUP("ssi1_dt_b", jz4780_ssi1_dt_b),
>> +    INGENIC_PIN_GROUP("ssi1_dt_d", jz4780_ssi1_dt_d),
>> +    INGENIC_PIN_GROUP("ssi1_dt_e", jz4770_ssi1_dt_e),
>> +    INGENIC_PIN_GROUP("ssi1_dr_b", jz4780_ssi1_dr_b),
>> +    INGENIC_PIN_GROUP("ssi1_dr_d", jz4780_ssi1_dr_d),
>> +    INGENIC_PIN_GROUP("ssi1_dr_e", jz4770_ssi1_dr_e),
>> +    INGENIC_PIN_GROUP("ssi1_clk_b", jz4780_ssi1_clk_b),
>> +    INGENIC_PIN_GROUP("ssi1_clk_d", jz4780_ssi1_clk_d),
>> +    INGENIC_PIN_GROUP("ssi1_clk_e", jz4770_ssi1_clk_e),
>> +    INGENIC_PIN_GROUP("ssi1_gpc_b", jz4780_ssi1_gpc_b),
>> +    INGENIC_PIN_GROUP("ssi1_gpc_d", jz4780_ssi1_gpc_d),
>> +    INGENIC_PIN_GROUP("ssi1_gpc_e", jz4770_ssi1_gpc_e),
>> +    INGENIC_PIN_GROUP("ssi1_ce0_b", jz4780_ssi1_ce0_b),
>> +    INGENIC_PIN_GROUP("ssi1_ce0_d", jz4780_ssi1_ce0_d),
>> +    INGENIC_PIN_GROUP("ssi1_ce0_e", jz4770_ssi1_ce0_e),
>> +    INGENIC_PIN_GROUP("ssi1_ce1_b", jz4780_ssi1_ce1_b),
>> +    INGENIC_PIN_GROUP("ssi1_ce1_d", jz4780_ssi1_ce1_d),
>> +    INGENIC_PIN_GROUP("ssi1_ce1_e", jz4770_ssi1_ce1_e),
>>      INGENIC_PIN_GROUP("mmc0-1bit-a", jz4770_mmc0_1bit_a),
>>      INGENIC_PIN_GROUP("mmc0-4bit-a", jz4770_mmc0_4bit_a),
>>      INGENIC_PIN_GROUP("mmc0-8bit-a", jz4780_mmc0_8bit_a),
>> @@ -969,6 +1218,22 @@ static const struct group_desc jz4780_groups[] = {
>>
>>  static const char *jz4780_uart2_groups[] = { "uart2-data", 
>> "uart2-hwflow", };
>>  static const char *jz4780_uart4_groups[] = { "uart4-data", };
>> +static const char *jz4780_ssi0_groups[] = {
>> +    "ssi0_dt_a_19", "ssi0_dt_a_21", "ssi0_dt_a_28", "ssi0_dt_b", 
>> "ssi0_dt_d", "ssi0_dt_e",
>> +    "ssi0_dr_a_20", "ssi0_dr_a_27", "ssi0_dr_b", "ssi0_dr_d", 
>> "ssi0_dr_e",
>> +    "ssi0_clk_a", "ssi0_clk_b_5", "ssi0_clk_b_28", "ssi0_clk_d", 
>> "ssi0_clk_e",
>> +    "ssi0_gpc_b", "ssi0_gpc_d", "ssi0_gpc_e",
>> +    "ssi0_ce0_a_23", "ssi0_ce0_a_25", "ssi0_ce0_b", "ssi0_ce0_d", 
>> "ssi0_ce0_e",
>> +    "ssi0_ce1_b", "ssi0_ce1_d", "ssi0_ce1_e",
>> +};
>> +static const char *jz4780_ssi1_groups[] = {
>> +    "ssi1_dt_b", "ssi1_dt_d", "ssi1_dt_e",
>> +    "ssi1_dr_b", "ssi1_dr_d", "ssi1_dr_e",
>> +    "ssi1_clk_b", "ssi1_clk_d", "ssi1_clk_e",
>> +    "ssi1_gpc_b", "ssi1_gpc_d", "ssi1_gpc_e",
>> +    "ssi1_ce0_b", "ssi1_ce0_d", "ssi1_ce0_e",
>> +    "ssi1_ce1_b", "ssi1_ce1_d", "ssi1_ce1_e",
>> +};
>>  static const char *jz4780_mmc0_groups[] = {
>>      "mmc0-1bit-a", "mmc0-4bit-a", "mmc0-8bit-a",
>>      "mmc0-1bit-e", "mmc0-4bit-e",
>> @@ -994,6 +1259,8 @@ static const struct function_desc 
>> jz4780_functions[] = {
>>      { "uart2", jz4780_uart2_groups, ARRAY_SIZE(jz4780_uart2_groups), },
>>      { "uart3", jz4770_uart3_groups, ARRAY_SIZE(jz4770_uart3_groups), },
>>      { "uart4", jz4780_uart4_groups, ARRAY_SIZE(jz4780_uart4_groups), },
>> +    { "ssi0", jz4780_ssi0_groups, ARRAY_SIZE(jz4780_ssi0_groups), },
>> +    { "ssi1", jz4780_ssi1_groups, ARRAY_SIZE(jz4780_ssi1_groups), },
>>      { "mmc0", jz4780_mmc0_groups, ARRAY_SIZE(jz4780_mmc0_groups), },
>>      { "mmc1", jz4780_mmc1_groups, ARRAY_SIZE(jz4780_mmc1_groups), },
>>      { "mmc2", jz4780_mmc2_groups, ARRAY_SIZE(jz4780_mmc2_groups), },
>> -- 
>> 2.11.0
>>
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ