Re: [PATCH v3 10/10] pinctrl: Ingenic: Add pinctrl driver for X2000.

2021-03-29 Thread Zhou Yanjie

Hi Paul,

On 2021/3/28 上午3:58, Paul Cercueil wrote:

Hi Zhou,

Le jeu. 25 mars 2021 à 17:03, Zhou Yanjie  
a écrit :

Hi Paul,

On 2021/3/23 上午2:39, Paul Cercueil wrote:



 Le mer. 17 mars 2021 à 17:58, 周琰杰 (Zhou Yanjie) 
 a écrit :

Add support for probing the pinctrl-ingenic driver on the
 X2000 SoC from Ingenic.

 Signed-off-by: 周琰杰 (Zhou Yanjie) 
 ---

 Notes:
 v3:
 New patch.

  drivers/pinctrl/pinctrl-ingenic.c | 502 
+-

  1 file changed, 493 insertions(+), 9 deletions(-)

 diff --git a/drivers/pinctrl/pinctrl-ingenic.c 
b/drivers/pinctrl/pinctrl-ingenic.c

 index eb4912d..538d1b5 100644
 --- a/drivers/pinctrl/pinctrl-ingenic.c
 +++ b/drivers/pinctrl/pinctrl-ingenic.c
 @@ -57,6 +57,10 @@
  #define X1830_GPIO_PEL    0x110
  #define X1830_GPIO_PEH    0x120

 +#define X2000_GPIO_EDG    0x70
 +#define X2000_GPIO_PEPU    0x80
 +#define X2000_GPIO_PEPD    0x90
 +
  #define REG_SET(x)    ((x) + 0x4)
  #define REG_CLEAR(x)    ((x) + 0x8)

 @@ -94,6 +98,7 @@ enum jz_version {
  ID_X1000,
  ID_X1500,
  ID_X1830,
 +    ID_X2000,
  };

  struct ingenic_chip_info {
 @@ -2273,6 +2278,439 @@ static const struct ingenic_chip_info 
x1830_chip_info = {

  .pull_downs = x1830_pull_downs,
  };

 +static const u32 x2000_pull_ups[5] = {
 +    0x0003, 0x, 0x1ff0, 0xc7fe3f3f, 0x8fff003f,
 +};
 +
 +static const u32 x2000_pull_downs[5] = {
 +    0x0003, 0x, 0x1ff0, 0x, 0x8fff003f,
 +};
 +
 +static int x2000_uart0_data_pins[] = { 0x77, 0x78, };
 +static int x2000_uart0_hwflow_pins[] = { 0x79, 0x7a, };
 +static int x2000_uart1_data_pins[] = { 0x57, 0x58, };
 +static int x2000_uart1_hwflow_pins[] = { 0x55, 0x56, };
 +static int x2000_uart2_data_pins[] = { 0x7e, 0x7f, };
 +static int x2000_uart3_data_c_pins[] = { 0x59, 0x5a, };
 +static int x2000_uart3_data_d_pins[] = { 0x62, 0x63, };
 +static int x2000_uart3_hwflow_c_pins[] = { 0x5b, 0x5c, };
 +static int x2000_uart3_hwflow_d_pins[] = { 0x60, 0x61, };
 +static int x2000_uart4_data_a_pins[] = { 0x02, 0x03, };
 +static int x2000_uart4_data_c_pins[] = { 0x4b, 0x4c, };
 +static int x2000_uart4_hwflow_a_pins[] = { 0x00, 0x01, };
 +static int x2000_uart4_hwflow_c_pins[] = { 0x49, 0x4a, };
 +static int x2000_uart5_data_a_pins[] = { 0x04, 0x05, };
 +static int x2000_uart5_data_c_pins[] = { 0x45, 0x46, };
 +static int x2000_uart6_data_a_pins[] = { 0x06, 0x07, };
 +static int x2000_uart6_data_c_pins[] = { 0x47, 0x48, };
 +static int x2000_uart7_data_a_pins[] = { 0x08, 0x09, };
 +static int x2000_uart7_data_c_pins[] = { 0x41, 0x42, };
 +static int x2000_uart8_data_pins[] = { 0x3c, 0x3d, };
 +static int x2000_uart9_data_pins[] = { 0x3e, 0x3f, };
 +static int x2000_sfc0_d_pins[] = { 0x73, 0x74, 0x75, 0x76, 0x71, 
0x72, };
 +static int x2000_sfc0_e_pins[] = { 0x92, 0x93, 0x94, 0x95, 0x90, 
0x91, };

 +static int x2000_sfc1_pins[] = { 0x77, 0x78, 0x79, 0x7a, };
 +static int x2000_ssi0_dt_b_pins[] = { 0x3e, };
 +static int x2000_ssi0_dt_d_pins[] = { 0x69, };
 +static int x2000_ssi0_dr_b_pins[] = { 0x3d, };
 +static int x2000_ssi0_dr_d_pins[] = { 0x6a, };
 +static int x2000_ssi0_clk_b_pins[] = { 0x3f, };
 +static int x2000_ssi0_clk_d_pins[] = { 0x68, };
 +static int x2000_ssi0_ce0_b_pins[] = { 0x3c, };
 +static int x2000_ssi0_ce0_d_pins[] = { 0x6d, };
 +static int x2000_ssi1_dt_c_pins[] = { 0x4b, };
 +static int x2000_ssi1_dt_d_pins[] = { 0x72, };
 +static int x2000_ssi1_dt_e_pins[] = { 0x91, };
 +static int x2000_ssi1_dr_c_pins[] = { 0x4a, };
 +static int x2000_ssi1_dr_d_pins[] = { 0x73, };
 +static int x2000_ssi1_dr_e_pins[] = { 0x92, };
 +static int x2000_ssi1_clk_c_pins[] = { 0x4c, };
 +static int x2000_ssi1_clk_d_pins[] = { 0x71, };
 +static int x2000_ssi1_clk_e_pins[] = { 0x90, };
 +static int x2000_ssi1_ce0_c_pins[] = { 0x49, };
 +static int x2000_ssi1_ce0_d_pins[] = { 0x76, };
 +static int x2000_ssi1_ce0_e_pins[] = { 0x95, };
 +static int x2000_mmc0_1bit_pins[] = { 0x71, 0x72, 0x73, };
 +static int x2000_mmc0_4bit_pins[] = { 0x74, 0x75, 0x75, };
 +static int x2000_mmc0_8bit_pins[] = { 0x77, 0x78, 0x79, 0x7a, };
 +static int x2000_mmc1_1bit_pins[] = { 0x68, 0x69, 0x6a, };
 +static int x2000_mmc1_4bit_pins[] = { 0x6b, 0x6c, 0x6d, };
 +static int x2000_mmc2_1bit_pins[] = { 0x80, 0x81, 0x82, };
 +static int x2000_mmc2_4bit_pins[] = { 0x83, 0x84, 0x85, };
 +static int x2000_emc_8bit_data_pins[] = {
 +    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
 +};
 +static int x2000_emc_16bit_data_pins[] = {
 +    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
 +};
 +static int x2000_emc_addr_pins[] = {
 +    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
 +    0x28, 0x29, 0x2a, 0x2b, 0x2c,
 +};
 +static int x2000_emc_rd_we_pins[] = { 0x2d, 0x2e, };
 +static int x2000_emc_wait_pins[] = { 0x2f, };
 +static int x2000_emc_cs1_pins[] = { 0x57, };
 +static int x2000_emc_cs2_pins[] = { 0x58, };
 +static int 

Re: [PATCH v3 10/10] pinctrl: Ingenic: Add pinctrl driver for X2000.

2021-03-27 Thread Paul Cercueil

Hi Zhou,

Le jeu. 25 mars 2021 à 17:03, Zhou Yanjie  
a écrit :

Hi Paul,

On 2021/3/23 上午2:39, Paul Cercueil wrote:



 Le mer. 17 mars 2021 à 17:58, 周琰杰 (Zhou Yanjie) 
 a écrit :

Add support for probing the pinctrl-ingenic driver on the
 X2000 SoC from Ingenic.

 Signed-off-by: 周琰杰 (Zhou Yanjie) 
 ---

 Notes:
 v3:
 New patch.

  drivers/pinctrl/pinctrl-ingenic.c | 502 
+-

  1 file changed, 493 insertions(+), 9 deletions(-)

 diff --git a/drivers/pinctrl/pinctrl-ingenic.c 
b/drivers/pinctrl/pinctrl-ingenic.c

 index eb4912d..538d1b5 100644
 --- a/drivers/pinctrl/pinctrl-ingenic.c
 +++ b/drivers/pinctrl/pinctrl-ingenic.c
 @@ -57,6 +57,10 @@
  #define X1830_GPIO_PEL0x110
  #define X1830_GPIO_PEH0x120

 +#define X2000_GPIO_EDG0x70
 +#define X2000_GPIO_PEPU0x80
 +#define X2000_GPIO_PEPD0x90
 +
  #define REG_SET(x)((x) + 0x4)
  #define REG_CLEAR(x)((x) + 0x8)

 @@ -94,6 +98,7 @@ enum jz_version {
  ID_X1000,
  ID_X1500,
  ID_X1830,
 +ID_X2000,
  };

  struct ingenic_chip_info {
 @@ -2273,6 +2278,439 @@ static const struct ingenic_chip_info 
x1830_chip_info = {

  .pull_downs = x1830_pull_downs,
  };

 +static const u32 x2000_pull_ups[5] = {
 +0x0003, 0x, 0x1ff0, 0xc7fe3f3f, 0x8fff003f,
 +};
 +
 +static const u32 x2000_pull_downs[5] = {
 +0x0003, 0x, 0x1ff0, 0x, 0x8fff003f,
 +};
 +
 +static int x2000_uart0_data_pins[] = { 0x77, 0x78, };
 +static int x2000_uart0_hwflow_pins[] = { 0x79, 0x7a, };
 +static int x2000_uart1_data_pins[] = { 0x57, 0x58, };
 +static int x2000_uart1_hwflow_pins[] = { 0x55, 0x56, };
 +static int x2000_uart2_data_pins[] = { 0x7e, 0x7f, };
 +static int x2000_uart3_data_c_pins[] = { 0x59, 0x5a, };
 +static int x2000_uart3_data_d_pins[] = { 0x62, 0x63, };
 +static int x2000_uart3_hwflow_c_pins[] = { 0x5b, 0x5c, };
 +static int x2000_uart3_hwflow_d_pins[] = { 0x60, 0x61, };
 +static int x2000_uart4_data_a_pins[] = { 0x02, 0x03, };
 +static int x2000_uart4_data_c_pins[] = { 0x4b, 0x4c, };
 +static int x2000_uart4_hwflow_a_pins[] = { 0x00, 0x01, };
 +static int x2000_uart4_hwflow_c_pins[] = { 0x49, 0x4a, };
 +static int x2000_uart5_data_a_pins[] = { 0x04, 0x05, };
 +static int x2000_uart5_data_c_pins[] = { 0x45, 0x46, };
 +static int x2000_uart6_data_a_pins[] = { 0x06, 0x07, };
 +static int x2000_uart6_data_c_pins[] = { 0x47, 0x48, };
 +static int x2000_uart7_data_a_pins[] = { 0x08, 0x09, };
 +static int x2000_uart7_data_c_pins[] = { 0x41, 0x42, };
 +static int x2000_uart8_data_pins[] = { 0x3c, 0x3d, };
 +static int x2000_uart9_data_pins[] = { 0x3e, 0x3f, };
 +static int x2000_sfc0_d_pins[] = { 0x73, 0x74, 0x75, 0x76, 0x71, 
0x72, };
 +static int x2000_sfc0_e_pins[] = { 0x92, 0x93, 0x94, 0x95, 0x90, 
0x91, };

 +static int x2000_sfc1_pins[] = { 0x77, 0x78, 0x79, 0x7a, };
 +static int x2000_ssi0_dt_b_pins[] = { 0x3e, };
 +static int x2000_ssi0_dt_d_pins[] = { 0x69, };
 +static int x2000_ssi0_dr_b_pins[] = { 0x3d, };
 +static int x2000_ssi0_dr_d_pins[] = { 0x6a, };
 +static int x2000_ssi0_clk_b_pins[] = { 0x3f, };
 +static int x2000_ssi0_clk_d_pins[] = { 0x68, };
 +static int x2000_ssi0_ce0_b_pins[] = { 0x3c, };
 +static int x2000_ssi0_ce0_d_pins[] = { 0x6d, };
 +static int x2000_ssi1_dt_c_pins[] = { 0x4b, };
 +static int x2000_ssi1_dt_d_pins[] = { 0x72, };
 +static int x2000_ssi1_dt_e_pins[] = { 0x91, };
 +static int x2000_ssi1_dr_c_pins[] = { 0x4a, };
 +static int x2000_ssi1_dr_d_pins[] = { 0x73, };
 +static int x2000_ssi1_dr_e_pins[] = { 0x92, };
 +static int x2000_ssi1_clk_c_pins[] = { 0x4c, };
 +static int x2000_ssi1_clk_d_pins[] = { 0x71, };
 +static int x2000_ssi1_clk_e_pins[] = { 0x90, };
 +static int x2000_ssi1_ce0_c_pins[] = { 0x49, };
 +static int x2000_ssi1_ce0_d_pins[] = { 0x76, };
 +static int x2000_ssi1_ce0_e_pins[] = { 0x95, };
 +static int x2000_mmc0_1bit_pins[] = { 0x71, 0x72, 0x73, };
 +static int x2000_mmc0_4bit_pins[] = { 0x74, 0x75, 0x75, };
 +static int x2000_mmc0_8bit_pins[] = { 0x77, 0x78, 0x79, 0x7a, };
 +static int x2000_mmc1_1bit_pins[] = { 0x68, 0x69, 0x6a, };
 +static int x2000_mmc1_4bit_pins[] = { 0x6b, 0x6c, 0x6d, };
 +static int x2000_mmc2_1bit_pins[] = { 0x80, 0x81, 0x82, };
 +static int x2000_mmc2_4bit_pins[] = { 0x83, 0x84, 0x85, };
 +static int x2000_emc_8bit_data_pins[] = {
 +0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
 +};
 +static int x2000_emc_16bit_data_pins[] = {
 +0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
 +};
 +static int x2000_emc_addr_pins[] = {
 +0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
 +0x28, 0x29, 0x2a, 0x2b, 0x2c,
 +};
 +static int x2000_emc_rd_we_pins[] = { 0x2d, 0x2e, };
 +static int x2000_emc_wait_pins[] = { 0x2f, };
 +static int x2000_emc_cs1_pins[] = { 0x57, };
 +static int x2000_emc_cs2_pins[] = { 0x58, };
 +static int x2000_i2c0_pins[] = { 0x4e, 0x4d, };
 +static int 

Re: [PATCH v3 10/10] pinctrl: Ingenic: Add pinctrl driver for X2000.

2021-03-22 Thread Paul Cercueil




Le mer. 17 mars 2021 à 17:58, 周琰杰 (Zhou Yanjie) 
 a écrit :

Add support for probing the pinctrl-ingenic driver on the
X2000 SoC from Ingenic.

Signed-off-by: 周琰杰 (Zhou Yanjie) 
---

Notes:
v3:
New patch.

 drivers/pinctrl/pinctrl-ingenic.c | 502 
+-

 1 file changed, 493 insertions(+), 9 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-ingenic.c 
b/drivers/pinctrl/pinctrl-ingenic.c

index eb4912d..538d1b5 100644
--- a/drivers/pinctrl/pinctrl-ingenic.c
+++ b/drivers/pinctrl/pinctrl-ingenic.c
@@ -57,6 +57,10 @@
 #define X1830_GPIO_PEL 0x110
 #define X1830_GPIO_PEH 0x120

+#define X2000_GPIO_EDG 0x70
+#define X2000_GPIO_PEPU0x80
+#define X2000_GPIO_PEPD0x90
+
 #define REG_SET(x) ((x) + 0x4)
 #define REG_CLEAR(x)   ((x) + 0x8)

@@ -94,6 +98,7 @@ enum jz_version {
ID_X1000,
ID_X1500,
ID_X1830,
+   ID_X2000,
 };

 struct ingenic_chip_info {
@@ -2273,6 +2278,439 @@ static const struct ingenic_chip_info 
x1830_chip_info = {

.pull_downs = x1830_pull_downs,
 };

+static const u32 x2000_pull_ups[5] = {
+   0x0003, 0x, 0x1ff0, 0xc7fe3f3f, 0x8fff003f,
+};
+
+static const u32 x2000_pull_downs[5] = {
+   0x0003, 0x, 0x1ff0, 0x, 0x8fff003f,
+};
+
+static int x2000_uart0_data_pins[] = { 0x77, 0x78, };
+static int x2000_uart0_hwflow_pins[] = { 0x79, 0x7a, };
+static int x2000_uart1_data_pins[] = { 0x57, 0x58, };
+static int x2000_uart1_hwflow_pins[] = { 0x55, 0x56, };
+static int x2000_uart2_data_pins[] = { 0x7e, 0x7f, };
+static int x2000_uart3_data_c_pins[] = { 0x59, 0x5a, };
+static int x2000_uart3_data_d_pins[] = { 0x62, 0x63, };
+static int x2000_uart3_hwflow_c_pins[] = { 0x5b, 0x5c, };
+static int x2000_uart3_hwflow_d_pins[] = { 0x60, 0x61, };
+static int x2000_uart4_data_a_pins[] = { 0x02, 0x03, };
+static int x2000_uart4_data_c_pins[] = { 0x4b, 0x4c, };
+static int x2000_uart4_hwflow_a_pins[] = { 0x00, 0x01, };
+static int x2000_uart4_hwflow_c_pins[] = { 0x49, 0x4a, };
+static int x2000_uart5_data_a_pins[] = { 0x04, 0x05, };
+static int x2000_uart5_data_c_pins[] = { 0x45, 0x46, };
+static int x2000_uart6_data_a_pins[] = { 0x06, 0x07, };
+static int x2000_uart6_data_c_pins[] = { 0x47, 0x48, };
+static int x2000_uart7_data_a_pins[] = { 0x08, 0x09, };
+static int x2000_uart7_data_c_pins[] = { 0x41, 0x42, };
+static int x2000_uart8_data_pins[] = { 0x3c, 0x3d, };
+static int x2000_uart9_data_pins[] = { 0x3e, 0x3f, };
+static int x2000_sfc0_d_pins[] = { 0x73, 0x74, 0x75, 0x76, 0x71, 
0x72, };
+static int x2000_sfc0_e_pins[] = { 0x92, 0x93, 0x94, 0x95, 0x90, 
0x91, };

+static int x2000_sfc1_pins[] = { 0x77, 0x78, 0x79, 0x7a, };
+static int x2000_ssi0_dt_b_pins[] = { 0x3e, };
+static int x2000_ssi0_dt_d_pins[] = { 0x69, };
+static int x2000_ssi0_dr_b_pins[] = { 0x3d, };
+static int x2000_ssi0_dr_d_pins[] = { 0x6a, };
+static int x2000_ssi0_clk_b_pins[] = { 0x3f, };
+static int x2000_ssi0_clk_d_pins[] = { 0x68, };
+static int x2000_ssi0_ce0_b_pins[] = { 0x3c, };
+static int x2000_ssi0_ce0_d_pins[] = { 0x6d, };
+static int x2000_ssi1_dt_c_pins[] = { 0x4b, };
+static int x2000_ssi1_dt_d_pins[] = { 0x72, };
+static int x2000_ssi1_dt_e_pins[] = { 0x91, };
+static int x2000_ssi1_dr_c_pins[] = { 0x4a, };
+static int x2000_ssi1_dr_d_pins[] = { 0x73, };
+static int x2000_ssi1_dr_e_pins[] = { 0x92, };
+static int x2000_ssi1_clk_c_pins[] = { 0x4c, };
+static int x2000_ssi1_clk_d_pins[] = { 0x71, };
+static int x2000_ssi1_clk_e_pins[] = { 0x90, };
+static int x2000_ssi1_ce0_c_pins[] = { 0x49, };
+static int x2000_ssi1_ce0_d_pins[] = { 0x76, };
+static int x2000_ssi1_ce0_e_pins[] = { 0x95, };
+static int x2000_mmc0_1bit_pins[] = { 0x71, 0x72, 0x73, };
+static int x2000_mmc0_4bit_pins[] = { 0x74, 0x75, 0x75, };
+static int x2000_mmc0_8bit_pins[] = { 0x77, 0x78, 0x79, 0x7a, };
+static int x2000_mmc1_1bit_pins[] = { 0x68, 0x69, 0x6a, };
+static int x2000_mmc1_4bit_pins[] = { 0x6b, 0x6c, 0x6d, };
+static int x2000_mmc2_1bit_pins[] = { 0x80, 0x81, 0x82, };
+static int x2000_mmc2_4bit_pins[] = { 0x83, 0x84, 0x85, };
+static int x2000_emc_8bit_data_pins[] = {
+   0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+};
+static int x2000_emc_16bit_data_pins[] = {
+   0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+};
+static int x2000_emc_addr_pins[] = {
+   0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+   0x28, 0x29, 0x2a, 0x2b, 0x2c,
+};
+static int x2000_emc_rd_we_pins[] = { 0x2d, 0x2e, };
+static int x2000_emc_wait_pins[] = { 0x2f, };
+static int x2000_emc_cs1_pins[] = { 0x57, };
+static int x2000_emc_cs2_pins[] = { 0x58, };
+static int x2000_i2c0_pins[] = { 0x4e, 0x4d, };
+static int x2000_i2c1_c_pins[] = { 0x58, 0x57, };
+static int x2000_i2c1_d_pins[] = { 0x6c, 0x6b, };
+static int 

[PATCH v3 10/10] pinctrl: Ingenic: Add pinctrl driver for X2000.

2021-03-17 Thread Zhou Yanjie
Add support for probing the pinctrl-ingenic driver on the
X2000 SoC from Ingenic.

Signed-off-by: 周琰杰 (Zhou Yanjie) 
---

Notes:
v3:
New patch.

 drivers/pinctrl/pinctrl-ingenic.c | 502 +-
 1 file changed, 493 insertions(+), 9 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-ingenic.c 
b/drivers/pinctrl/pinctrl-ingenic.c
index eb4912d..538d1b5 100644
--- a/drivers/pinctrl/pinctrl-ingenic.c
+++ b/drivers/pinctrl/pinctrl-ingenic.c
@@ -57,6 +57,10 @@
 #define X1830_GPIO_PEL 0x110
 #define X1830_GPIO_PEH 0x120
 
+#define X2000_GPIO_EDG 0x70
+#define X2000_GPIO_PEPU0x80
+#define X2000_GPIO_PEPD0x90
+
 #define REG_SET(x) ((x) + 0x4)
 #define REG_CLEAR(x)   ((x) + 0x8)
 
@@ -94,6 +98,7 @@ enum jz_version {
ID_X1000,
ID_X1500,
ID_X1830,
+   ID_X2000,
 };
 
 struct ingenic_chip_info {
@@ -2273,6 +2278,439 @@ static const struct ingenic_chip_info x1830_chip_info = 
{
.pull_downs = x1830_pull_downs,
 };
 
+static const u32 x2000_pull_ups[5] = {
+   0x0003, 0x, 0x1ff0, 0xc7fe3f3f, 0x8fff003f,
+};
+
+static const u32 x2000_pull_downs[5] = {
+   0x0003, 0x, 0x1ff0, 0x, 0x8fff003f,
+};
+
+static int x2000_uart0_data_pins[] = { 0x77, 0x78, };
+static int x2000_uart0_hwflow_pins[] = { 0x79, 0x7a, };
+static int x2000_uart1_data_pins[] = { 0x57, 0x58, };
+static int x2000_uart1_hwflow_pins[] = { 0x55, 0x56, };
+static int x2000_uart2_data_pins[] = { 0x7e, 0x7f, };
+static int x2000_uart3_data_c_pins[] = { 0x59, 0x5a, };
+static int x2000_uart3_data_d_pins[] = { 0x62, 0x63, };
+static int x2000_uart3_hwflow_c_pins[] = { 0x5b, 0x5c, };
+static int x2000_uart3_hwflow_d_pins[] = { 0x60, 0x61, };
+static int x2000_uart4_data_a_pins[] = { 0x02, 0x03, };
+static int x2000_uart4_data_c_pins[] = { 0x4b, 0x4c, };
+static int x2000_uart4_hwflow_a_pins[] = { 0x00, 0x01, };
+static int x2000_uart4_hwflow_c_pins[] = { 0x49, 0x4a, };
+static int x2000_uart5_data_a_pins[] = { 0x04, 0x05, };
+static int x2000_uart5_data_c_pins[] = { 0x45, 0x46, };
+static int x2000_uart6_data_a_pins[] = { 0x06, 0x07, };
+static int x2000_uart6_data_c_pins[] = { 0x47, 0x48, };
+static int x2000_uart7_data_a_pins[] = { 0x08, 0x09, };
+static int x2000_uart7_data_c_pins[] = { 0x41, 0x42, };
+static int x2000_uart8_data_pins[] = { 0x3c, 0x3d, };
+static int x2000_uart9_data_pins[] = { 0x3e, 0x3f, };
+static int x2000_sfc0_d_pins[] = { 0x73, 0x74, 0x75, 0x76, 0x71, 0x72, };
+static int x2000_sfc0_e_pins[] = { 0x92, 0x93, 0x94, 0x95, 0x90, 0x91, };
+static int x2000_sfc1_pins[] = { 0x77, 0x78, 0x79, 0x7a, };
+static int x2000_ssi0_dt_b_pins[] = { 0x3e, };
+static int x2000_ssi0_dt_d_pins[] = { 0x69, };
+static int x2000_ssi0_dr_b_pins[] = { 0x3d, };
+static int x2000_ssi0_dr_d_pins[] = { 0x6a, };
+static int x2000_ssi0_clk_b_pins[] = { 0x3f, };
+static int x2000_ssi0_clk_d_pins[] = { 0x68, };
+static int x2000_ssi0_ce0_b_pins[] = { 0x3c, };
+static int x2000_ssi0_ce0_d_pins[] = { 0x6d, };
+static int x2000_ssi1_dt_c_pins[] = { 0x4b, };
+static int x2000_ssi1_dt_d_pins[] = { 0x72, };
+static int x2000_ssi1_dt_e_pins[] = { 0x91, };
+static int x2000_ssi1_dr_c_pins[] = { 0x4a, };
+static int x2000_ssi1_dr_d_pins[] = { 0x73, };
+static int x2000_ssi1_dr_e_pins[] = { 0x92, };
+static int x2000_ssi1_clk_c_pins[] = { 0x4c, };
+static int x2000_ssi1_clk_d_pins[] = { 0x71, };
+static int x2000_ssi1_clk_e_pins[] = { 0x90, };
+static int x2000_ssi1_ce0_c_pins[] = { 0x49, };
+static int x2000_ssi1_ce0_d_pins[] = { 0x76, };
+static int x2000_ssi1_ce0_e_pins[] = { 0x95, };
+static int x2000_mmc0_1bit_pins[] = { 0x71, 0x72, 0x73, };
+static int x2000_mmc0_4bit_pins[] = { 0x74, 0x75, 0x75, };
+static int x2000_mmc0_8bit_pins[] = { 0x77, 0x78, 0x79, 0x7a, };
+static int x2000_mmc1_1bit_pins[] = { 0x68, 0x69, 0x6a, };
+static int x2000_mmc1_4bit_pins[] = { 0x6b, 0x6c, 0x6d, };
+static int x2000_mmc2_1bit_pins[] = { 0x80, 0x81, 0x82, };
+static int x2000_mmc2_4bit_pins[] = { 0x83, 0x84, 0x85, };
+static int x2000_emc_8bit_data_pins[] = {
+   0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+};
+static int x2000_emc_16bit_data_pins[] = {
+   0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+};
+static int x2000_emc_addr_pins[] = {
+   0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+   0x28, 0x29, 0x2a, 0x2b, 0x2c,
+};
+static int x2000_emc_rd_we_pins[] = { 0x2d, 0x2e, };
+static int x2000_emc_wait_pins[] = { 0x2f, };
+static int x2000_emc_cs1_pins[] = { 0x57, };
+static int x2000_emc_cs2_pins[] = { 0x58, };
+static int x2000_i2c0_pins[] = { 0x4e, 0x4d, };
+static int x2000_i2c1_c_pins[] = { 0x58, 0x57, };
+static int x2000_i2c1_d_pins[] = { 0x6c, 0x6b, };
+static int x2000_i2c2_b_pins[] = { 0x37, 0x36, };
+static int x2000_i2c2_d_pins[] = { 0x75,