diff mbox series

[2/3] pinctrl: uniphier: Divide pinmux group to support 1ch and 2ch I2S

Message ID 1643283344-24911-3-git-send-email-hayashi.kunihiko@socionext.com
State New
Headers show
Series pinctrl: uniphier: Add some more pinmux settings | expand

Commit Message

Kunihiko Hayashi Jan. 27, 2022, 11:35 a.m. UTC
Current pinmux group for audio in/out assumes 4ch I2S case but the
UniPhier AIO hardware also supports 1ch and 2ch I2S. So divide current
ain1 group into ain1, ain1_dat2 and ain1_dat4 groups. Divide other
ain and aout in the same way.

Signed-off-by: Ryuta NAKANISHI <nakanishi.ryuta@socionext.com>
Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
---
 drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c | 26 +++++++---
 drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c | 64 ++++++++++++++++++------
 drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c | 55 +++++++++++++++-----
 drivers/pinctrl/uniphier/pinctrl-uniphier-pxs3.c | 52 ++++++++++++++-----
 4 files changed, 153 insertions(+), 44 deletions(-)

Comments

kernel test robot Jan. 27, 2022, 5:04 p.m. UTC | #1
Hi Kunihiko,

I love your patch! Yet something to improve:

[auto build test ERROR on linusw-pinctrl/devel]
[also build test ERROR on v5.17-rc1 next-20220127]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Kunihiko-Hayashi/pinctrl-uniphier-Add-some-more-pinmux-settings/20220127-193715
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
config: arm-randconfig-r005-20220124 (https://download.01.org/0day-ci/archive/20220128/202201280003.icgPhtLw-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project f32dccb9a43b02ce4e540d6ba5dbbdb188f2dc7d)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/0day-ci/linux/commit/e0e366a006b79517336423f8a2c72661178d5e41
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Kunihiko-Hayashi/pinctrl-uniphier-Add-some-more-pinmux-settings/20220127-193715
        git checkout e0e366a006b79517336423f8a2c72661178d5e41
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/pinctrl/uniphier/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:958:2: error: use of undeclared identifier 'aout4_groups'
           UNIPHIER_PINMUX_FUNCTION(aout4),
           ^
   drivers/pinctrl/uniphier/pinctrl-uniphier.h:179:13: note: expanded from macro 'UNIPHIER_PINMUX_FUNCTION'
                   .groups = func##_groups,                                \
                             ^
   <scratch space>:175:1: note: expanded from here
   aout4_groups
   ^
>> drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:958:2: error: use of undeclared identifier 'aout4_groups'
   drivers/pinctrl/uniphier/pinctrl-uniphier.h:180:28: note: expanded from macro 'UNIPHIER_PINMUX_FUNCTION'
                   .num_groups = ARRAY_SIZE(func##_groups),                \
                                            ^
   <scratch space>:176:1: note: expanded from here
   aout4_groups
   ^
>> drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:958:2: error: use of undeclared identifier 'aout4_groups'
   drivers/pinctrl/uniphier/pinctrl-uniphier.h:180:28: note: expanded from macro 'UNIPHIER_PINMUX_FUNCTION'
                   .num_groups = ARRAY_SIZE(func##_groups),                \
                                            ^
   <scratch space>:176:1: note: expanded from here
   aout4_groups
   ^
>> drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:958:2: error: use of undeclared identifier 'aout4_groups'
   drivers/pinctrl/uniphier/pinctrl-uniphier.h:180:28: note: expanded from macro 'UNIPHIER_PINMUX_FUNCTION'
                   .num_groups = ARRAY_SIZE(func##_groups),                \
                                            ^
   <scratch space>:176:1: note: expanded from here
   aout4_groups
   ^
>> drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:1002:21: error: invalid application of 'sizeof' to an incomplete type 'const struct uniphier_pinmux_function[]'
           .functions_count = ARRAY_SIZE(uniphier_pxs2_functions),
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:55:32: note: expanded from macro 'ARRAY_SIZE'
   #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
                                  ^~~~~
   5 errors generated.


vim +/aout4_groups +958 drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c

   949	
   950	static const struct uniphier_pinmux_function uniphier_pxs2_functions[] = {
   951		UNIPHIER_PINMUX_FUNCTION(ain1),
   952		UNIPHIER_PINMUX_FUNCTION(ain2),
   953		UNIPHIER_PINMUX_FUNCTION(ain3),
   954		UNIPHIER_PINMUX_FUNCTION(ainiec1),
   955		UNIPHIER_PINMUX_FUNCTION(aout1),
   956		UNIPHIER_PINMUX_FUNCTION(aout2),
   957		UNIPHIER_PINMUX_FUNCTION(aout3),
 > 958		UNIPHIER_PINMUX_FUNCTION(aout4),
   959		UNIPHIER_PINMUX_FUNCTION(aoutiec1),
   960		UNIPHIER_PINMUX_FUNCTION(aoutiec2),
   961		UNIPHIER_PINMUX_FUNCTION(emmc),
   962		UNIPHIER_PINMUX_FUNCTION(ether_mii),
   963		UNIPHIER_PINMUX_FUNCTION(ether_rgmii),
   964		UNIPHIER_PINMUX_FUNCTION(ether_rmii),
   965		UNIPHIER_PINMUX_FUNCTION(i2c0),
   966		UNIPHIER_PINMUX_FUNCTION(i2c1),
   967		UNIPHIER_PINMUX_FUNCTION(i2c2),
   968		UNIPHIER_PINMUX_FUNCTION(i2c3),
   969		UNIPHIER_PINMUX_FUNCTION(i2c5),
   970		UNIPHIER_PINMUX_FUNCTION(i2c6),
   971		UNIPHIER_PINMUX_FUNCTION(nand),
   972		UNIPHIER_PINMUX_FUNCTION(sd),
   973		UNIPHIER_PINMUX_FUNCTION(spi0),
   974		UNIPHIER_PINMUX_FUNCTION(spi1),
   975		UNIPHIER_PINMUX_FUNCTION(system_bus),
   976		UNIPHIER_PINMUX_FUNCTION(uart0),
   977		UNIPHIER_PINMUX_FUNCTION(uart1),
   978		UNIPHIER_PINMUX_FUNCTION(uart2),
   979		UNIPHIER_PINMUX_FUNCTION(uart3),
   980		UNIPHIER_PINMUX_FUNCTION(usb0),
   981		UNIPHIER_PINMUX_FUNCTION(usb1),
   982		UNIPHIER_PINMUX_FUNCTION(usb2),
   983		UNIPHIER_PINMUX_FUNCTION(usb3),
   984	};
   985	
   986	static int uniphier_pxs2_get_gpio_muxval(unsigned int pin,
   987						 unsigned int gpio_offset)
   988	{
   989		if (gpio_offset >= 120 && gpio_offset <= 143)	/* XIRQx */
   990			/* 15 will do because XIRQ0-23 are aliases of PORT150-177. */
   991			return 14;
   992	
   993		return 15;
   994	}
   995	
   996	static const struct uniphier_pinctrl_socdata uniphier_pxs2_pindata = {
   997		.pins = uniphier_pxs2_pins,
   998		.npins = ARRAY_SIZE(uniphier_pxs2_pins),
   999		.groups = uniphier_pxs2_groups,
  1000		.groups_count = ARRAY_SIZE(uniphier_pxs2_groups),
  1001		.functions = uniphier_pxs2_functions,
> 1002		.functions_count = ARRAY_SIZE(uniphier_pxs2_functions),
  1003		.get_gpio_muxval = uniphier_pxs2_get_gpio_muxval,
  1004		.caps = 0,
  1005	};
  1006	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
kernel test robot Jan. 27, 2022, 9 p.m. UTC | #2
Hi Kunihiko,

I love your patch! Yet something to improve:

[auto build test ERROR on linusw-pinctrl/devel]
[also build test ERROR on v5.17-rc1 next-20220127]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Kunihiko-Hayashi/pinctrl-uniphier-Add-some-more-pinmux-settings/20220127-193715
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
config: openrisc-buildonly-randconfig-r003-20220124 (https://download.01.org/0day-ci/archive/20220128/202201280448.njc6LUNd-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/e0e366a006b79517336423f8a2c72661178d5e41
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Kunihiko-Hayashi/pinctrl-uniphier-Add-some-more-pinmux-settings/20220127-193715
        git checkout e0e366a006b79517336423f8a2c72661178d5e41
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=openrisc SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:12:
>> drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:958:34: error: 'aout4_groups' undeclared here (not in a function); did you mean 'aout3_groups'?
     958 |         UNIPHIER_PINMUX_FUNCTION(aout4),
         |                                  ^~~~~
   drivers/pinctrl/uniphier/pinctrl-uniphier.h:179:27: note: in definition of macro 'UNIPHIER_PINMUX_FUNCTION'
     179 |                 .groups = func##_groups,                                \
         |                           ^~~~
   In file included from include/linux/container_of.h:5,
                    from include/linux/kernel.h:21,
                    from drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:6:
>> include/linux/build_bug.h:16:51: error: bit-field '<anonymous>' width not an integer constant
      16 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))
         |                                                   ^
   include/linux/compiler.h:258:33: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
     258 | #define __must_be_array(a)      BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
         |                                 ^~~~~~~~~~~~~~~~~
   include/linux/kernel.h:55:59: note: in expansion of macro '__must_be_array'
      55 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
         |                                                           ^~~~~~~~~~~~~~~
   drivers/pinctrl/uniphier/pinctrl-uniphier.h:180:31: note: in expansion of macro 'ARRAY_SIZE'
     180 |                 .num_groups = ARRAY_SIZE(func##_groups),                \
         |                               ^~~~~~~~~~
   drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:958:9: note: in expansion of macro 'UNIPHIER_PINMUX_FUNCTION'
     958 |         UNIPHIER_PINMUX_FUNCTION(aout4),
         |         ^~~~~~~~~~~~~~~~~~~~~~~~


vim +958 drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c

   949	
   950	static const struct uniphier_pinmux_function uniphier_pxs2_functions[] = {
   951		UNIPHIER_PINMUX_FUNCTION(ain1),
   952		UNIPHIER_PINMUX_FUNCTION(ain2),
   953		UNIPHIER_PINMUX_FUNCTION(ain3),
   954		UNIPHIER_PINMUX_FUNCTION(ainiec1),
   955		UNIPHIER_PINMUX_FUNCTION(aout1),
   956		UNIPHIER_PINMUX_FUNCTION(aout2),
   957		UNIPHIER_PINMUX_FUNCTION(aout3),
 > 958		UNIPHIER_PINMUX_FUNCTION(aout4),
   959		UNIPHIER_PINMUX_FUNCTION(aoutiec1),
   960		UNIPHIER_PINMUX_FUNCTION(aoutiec2),
   961		UNIPHIER_PINMUX_FUNCTION(emmc),
   962		UNIPHIER_PINMUX_FUNCTION(ether_mii),
   963		UNIPHIER_PINMUX_FUNCTION(ether_rgmii),
   964		UNIPHIER_PINMUX_FUNCTION(ether_rmii),
   965		UNIPHIER_PINMUX_FUNCTION(i2c0),
   966		UNIPHIER_PINMUX_FUNCTION(i2c1),
   967		UNIPHIER_PINMUX_FUNCTION(i2c2),
   968		UNIPHIER_PINMUX_FUNCTION(i2c3),
   969		UNIPHIER_PINMUX_FUNCTION(i2c5),
   970		UNIPHIER_PINMUX_FUNCTION(i2c6),
   971		UNIPHIER_PINMUX_FUNCTION(nand),
   972		UNIPHIER_PINMUX_FUNCTION(sd),
   973		UNIPHIER_PINMUX_FUNCTION(spi0),
   974		UNIPHIER_PINMUX_FUNCTION(spi1),
   975		UNIPHIER_PINMUX_FUNCTION(system_bus),
   976		UNIPHIER_PINMUX_FUNCTION(uart0),
   977		UNIPHIER_PINMUX_FUNCTION(uart1),
   978		UNIPHIER_PINMUX_FUNCTION(uart2),
   979		UNIPHIER_PINMUX_FUNCTION(uart3),
   980		UNIPHIER_PINMUX_FUNCTION(usb0),
   981		UNIPHIER_PINMUX_FUNCTION(usb1),
   982		UNIPHIER_PINMUX_FUNCTION(usb2),
   983		UNIPHIER_PINMUX_FUNCTION(usb3),
   984	};
   985	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Kunihiko Hayashi Jan. 28, 2022, 4:24 a.m. UTC | #3
On 2022/01/28 6:00, kernel test robot wrote:
> Hi Kunihiko,
> 
> I love your patch! Yet something to improve:
> 
> [auto build test ERROR on linusw-pinctrl/devel]
> [also build test ERROR on v5.17-rc1 next-20220127]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
> 
> url:
> https://github.com/0day-ci/linux/commits/Kunihiko-Hayashi/pinctrl-uniphier
> -Add-some-more-pinmux-settings/20220127-193715
> base:
> https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
> devel
> config: openrisc-buildonly-randconfig-r003-20220124
> (https://download.01.org/0day-ci/archive/20220128/202201280448.njc6LUNd-lk
> p@intel.com/config)
> compiler: or1k-linux-gcc (GCC) 11.2.0
> reproduce (this is a W=1 build):
>          wget
> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
> -O ~/bin/make.cross
>          chmod +x ~/bin/make.cross
>          #
> https://github.com/0day-ci/linux/commit/e0e366a006b79517336423f8a2c7266117
> 8d5e41
>          git remote add linux-review https://github.com/0day-ci/linux
>          git fetch --no-tags linux-review
> Kunihiko-Hayashi/pinctrl-uniphier-Add-some-more-pinmux-settings/20220127-1
> 93715
>          git checkout e0e366a006b79517336423f8a2c72661178d5e41
>          # save the config file to linux build tree
>          mkdir build_dir
>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross
> O=build_dir ARCH=openrisc SHELL=/bin/bash
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> All errors (new ones prefixed by >>):
> 
>     In file included from drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:
> 12:
>>> drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:958:34: error:
> 'aout4_groups' undeclared here (not in a function); did you mean
> 'aout3_groups'?
>       958 |         UNIPHIER_PINMUX_FUNCTION(aout4),
>           |                                  ^~~~~
>     drivers/pinctrl/uniphier/pinctrl-uniphier.h:179:27: note: in definition
> of macro 'UNIPHIER_PINMUX_FUNCTION'
>       179 |                 .groups = func##_groups,
> \
>           |                           ^~~~
>     In file included from include/linux/container_of.h:5,
>                      from include/linux/kernel.h:21,
>                      from drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:
> 6:
>>> include/linux/build_bug.h:16:51: error: bit-field '<anonymous>' width
> not an integer constant
>        16 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct {
> int:(-!!(e)); })))
>           |                                                   ^
>     include/linux/compiler.h:258:33: note: in expansion of macro
> 'BUILD_BUG_ON_ZERO'
>       258 | #define __must_be_array(a)
> BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
>           |                                 ^~~~~~~~~~~~~~~~~
>     include/linux/kernel.h:55:59: note: in expansion of macro
> '__must_be_array'
>        55 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) +
> __must_be_array(arr))
>           |
> ^~~~~~~~~~~~~~~
>     drivers/pinctrl/uniphier/pinctrl-uniphier.h:180:31: note: in expansion
> of macro 'ARRAY_SIZE'
>       180 |                 .num_groups = ARRAY_SIZE(func##_groups),
> \
>           |                               ^~~~~~~~~~
>     drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c:958:9: note: in
> expansion of macro 'UNIPHIER_PINMUX_FUNCTION'
>       958 |         UNIPHIER_PINMUX_FUNCTION(aout4),
>           |         ^~~~~~~~~~~~~~~~~~~~~~~~
> 
> 
> vim +958 drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c
> 
>     949	
>     950	static const struct uniphier_pinmux_function
> uniphier_pxs2_functions[] = {
>     951		UNIPHIER_PINMUX_FUNCTION(ain1),
>     952		UNIPHIER_PINMUX_FUNCTION(ain2),
>     953		UNIPHIER_PINMUX_FUNCTION(ain3),
>     954		UNIPHIER_PINMUX_FUNCTION(ainiec1),
>     955		UNIPHIER_PINMUX_FUNCTION(aout1),
>     956		UNIPHIER_PINMUX_FUNCTION(aout2),
>     957		UNIPHIER_PINMUX_FUNCTION(aout3),
>   > 958		UNIPHIER_PINMUX_FUNCTION(aout4),

The aout4 function doesn't exist now. I'll remove them in next.

Thank you,

>     959		UNIPHIER_PINMUX_FUNCTION(aoutiec1),
>     960		UNIPHIER_PINMUX_FUNCTION(aoutiec2),
>     961		UNIPHIER_PINMUX_FUNCTION(emmc),
>     962		UNIPHIER_PINMUX_FUNCTION(ether_mii),
>     963		UNIPHIER_PINMUX_FUNCTION(ether_rgmii),
>     964		UNIPHIER_PINMUX_FUNCTION(ether_rmii),
>     965		UNIPHIER_PINMUX_FUNCTION(i2c0),
>     966		UNIPHIER_PINMUX_FUNCTION(i2c1),
>     967		UNIPHIER_PINMUX_FUNCTION(i2c2),
>     968		UNIPHIER_PINMUX_FUNCTION(i2c3),
>     969		UNIPHIER_PINMUX_FUNCTION(i2c5),
>     970		UNIPHIER_PINMUX_FUNCTION(i2c6),
>     971		UNIPHIER_PINMUX_FUNCTION(nand),
>     972		UNIPHIER_PINMUX_FUNCTION(sd),
>     973		UNIPHIER_PINMUX_FUNCTION(spi0),
>     974		UNIPHIER_PINMUX_FUNCTION(spi1),
>     975		UNIPHIER_PINMUX_FUNCTION(system_bus),
>     976		UNIPHIER_PINMUX_FUNCTION(uart0),
>     977		UNIPHIER_PINMUX_FUNCTION(uart1),
>     978		UNIPHIER_PINMUX_FUNCTION(uart2),
>     979		UNIPHIER_PINMUX_FUNCTION(uart3),
>     980		UNIPHIER_PINMUX_FUNCTION(usb0),
>     981		UNIPHIER_PINMUX_FUNCTION(usb1),
>     982		UNIPHIER_PINMUX_FUNCTION(usb2),
>     983		UNIPHIER_PINMUX_FUNCTION(usb3),
>     984	};
>     985	
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>
diff mbox series

Patch

diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c
index a4fa8e3af607..65ed20bc1fa2 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c
@@ -461,10 +461,18 @@  static const struct pinctrl_pin_desc uniphier_ld11_pins[] = {
 			     166, UNIPHIER_PIN_PULL_DOWN),
 };
 
-static const unsigned ain1_pins[] = {151, 152, 153, 154, 155, 156, 157};
-static const int ain1_muxvals[] = {4, 4, 4, 4, 4, 4, 4};
-static const unsigned aout1_pins[] = {137, 138, 139, 140, 141, 142};
-static const int aout1_muxvals[] = {0, 0, 0, 0, 0, 0};
+static const unsigned ain1_pins[] = {151, 152, 153, 154};
+static const int ain1_muxvals[] = {4, 4, 4, 4};
+static const unsigned ain1_dat2_pins[] = {155};
+static const int ain1_dat2_muxvals[] = {4};
+static const unsigned ain1_dat4_pins[] = {156, 157};
+static const int ain1_dat4_muxvals[] = {4, 4};
+static const unsigned aout1_pins[] = {137, 138, 139, 140};
+static const int aout1_muxvals[] = {0, 0, 0, 0};
+static const unsigned aout1_dat2_pins[] = {141};
+static const int aout1_dat2_muxvals[] = {0};
+static const unsigned aout1_dat4_pins[] = {142, 143};
+static const int aout1_dat4_muxvals[] = {0, 3};
 static const unsigned ainiec1_pins[] = {150};
 static const int ainiec1_muxvals[] = {4};
 static const unsigned ainiec1b_pins[] = {141};
@@ -582,7 +590,11 @@  static const unsigned int gpio_range5_pins[] = {
 
 static const struct uniphier_pinctrl_group uniphier_ld11_groups[] = {
 	UNIPHIER_PINCTRL_GROUP(ain1),
+	UNIPHIER_PINCTRL_GROUP(ain1_dat2),
+	UNIPHIER_PINCTRL_GROUP(ain1_dat4),
 	UNIPHIER_PINCTRL_GROUP(aout1),
+	UNIPHIER_PINCTRL_GROUP(aout1_dat2),
+	UNIPHIER_PINCTRL_GROUP(aout1_dat4),
 	UNIPHIER_PINCTRL_GROUP(ainiec1),
 	UNIPHIER_PINCTRL_GROUP(ainiec1b),
 	UNIPHIER_PINCTRL_GROUP(aoutiec1),
@@ -626,8 +638,10 @@  static const struct uniphier_pinctrl_group uniphier_ld11_groups[] = {
 	UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range5),
 };
 
-static const char * const ain1_groups[] = {"ain1"};
-static const char * const aout1_groups[] = {"aout1"};
+static const char * const ain1_groups[] = {"ain1", "ain1_dat2",
+					   "ain1_dat4"};
+static const char * const aout1_groups[] = {"aout1", "aout1_dat2",
+					    "aout1_dat4"};
 static const char * const ainiec1_groups[] = {"ainiec1", "ainiec1b"};
 static const char * const aoutiec1_groups[] = {"aoutiec1"};
 static const char * const aoutiec2_groups[] = {"aoutiec2"};
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c
index 850736998206..a68b21fbd0c7 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c
@@ -542,18 +542,38 @@  static const struct pinctrl_pin_desc uniphier_ld20_pins[] = {
 			     175, UNIPHIER_PIN_PULL_DOWN),
 };
 
-static const unsigned ain1_pins[] = {150, 151, 152, 153, 154, 155, 156};
-static const int ain1_muxvals[] = {4, 4, 4, 4, 4, 4, 4};
-static const unsigned ain2_pins[] = {116, 117, 118, 119, 120, 121, 122};
-static const int ain2_muxvals[] = {26, 26, 26, 26, 26, 26, 26};
+static const unsigned ain1_pins[] = {150, 151, 152, 153};
+static const int ain1_muxvals[] = {4, 4, 4, 4};
+static const unsigned ain1_dat2_pins[] = {154};
+static const int ain1_dat2_muxvals[] = {4};
+static const unsigned ain1_dat4_pins[] = {155, 156};
+static const int ain1_dat4_muxvals[] = {4, 4};
+static const unsigned ain2_pins[] = {116, 117, 118, 119};
+static const int ain2_muxvals[] = {26, 26, 26, 26};
+static const unsigned ain2_dat2_pins[] = {120};
+static const int ain2_dat2_muxvals[] = {26};
+static const unsigned ain2_dat4_pins[] = {121, 122};
+static const int ain2_dat4_muxvals[] = {26, 26};
 static const unsigned ain3_pins[] = {116, 117, 118, 119};
 static const int ain3_muxvals[] = {27, 27, 27, 27};
-static const unsigned aout1_pins[] = {137, 138, 139, 140, 141, 142};
-static const int aout1_muxvals[] = {0, 0, 0, 0, 0, 0};
-static const unsigned aout1b_pins[] = {150, 151, 152, 153, 154, 155, 156};
-static const int aout1b_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
-static const unsigned aout2_pins[] = {165, 157, 162, 158, 159, 160, 161};
-static const int aout2_muxvals[] = {2, 2, 2, 1, 1, 1, 1};
+static const unsigned aout1_pins[] = {137, 138, 139, 140};
+static const int aout1_muxvals[] = {0, 0, 0, 0};
+static const unsigned aout1_dat2_pins[] = {141};
+static const int aout1_dat2_muxvals[] = {0};
+static const unsigned aout1_dat4_pins[] = {142, 156};
+static const int aout1_dat4_muxvals[] = {0, 1};
+static const unsigned aout1b_pins[] = {150, 151, 152, 153};
+static const int aout1b_muxvals[] = {1, 1, 1, 1};
+static const unsigned aout1b_dat2_pins[] = {154};
+static const int aout1b_dat2_muxvals[] = {1};
+static const unsigned aout1b_dat4_pins[] = {155, 156};
+static const int aout1b_dat4_muxvals[] = {1, 1};
+static const unsigned aout2_pins[] = {165, 157, 162, 158};
+static const int aout2_muxvals[] = {2, 2, 2, 1};
+static const unsigned aout2_dat2_pins[] = {159};
+static const int aout2_dat2_muxvals[] = {1};
+static const unsigned aout2_dat4_pins[] = {160, 161};
+static const int aout2_dat4_muxvals[] = {1, 1};
 static const unsigned aout3_pins[] = {166, 167, 168, 163};
 static const int aout3_muxvals[] = {2, 2, 2, 1};
 static const unsigned aout4_pins[] = {169, 170, 171, 164};
@@ -682,11 +702,21 @@  static const unsigned int gpio_range2_pins[] = {
 
 static const struct uniphier_pinctrl_group uniphier_ld20_groups[] = {
 	UNIPHIER_PINCTRL_GROUP(ain1),
+	UNIPHIER_PINCTRL_GROUP(ain1_dat2),
+	UNIPHIER_PINCTRL_GROUP(ain1_dat4),
 	UNIPHIER_PINCTRL_GROUP(ain2),
+	UNIPHIER_PINCTRL_GROUP(ain2_dat2),
+	UNIPHIER_PINCTRL_GROUP(ain2_dat4),
 	UNIPHIER_PINCTRL_GROUP(ain3),
 	UNIPHIER_PINCTRL_GROUP(aout1),
+	UNIPHIER_PINCTRL_GROUP(aout1_dat2),
+	UNIPHIER_PINCTRL_GROUP(aout1_dat4),
 	UNIPHIER_PINCTRL_GROUP(aout1b),
+	UNIPHIER_PINCTRL_GROUP(aout1b_dat2),
+	UNIPHIER_PINCTRL_GROUP(aout1b_dat4),
 	UNIPHIER_PINCTRL_GROUP(aout2),
+	UNIPHIER_PINCTRL_GROUP(aout2_dat2),
+	UNIPHIER_PINCTRL_GROUP(aout2_dat4),
 	UNIPHIER_PINCTRL_GROUP(aout3),
 	UNIPHIER_PINCTRL_GROUP(aout4),
 	UNIPHIER_PINCTRL_GROUP(aoutiec1),
@@ -734,11 +764,17 @@  static const struct uniphier_pinctrl_group uniphier_ld20_groups[] = {
 	UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range2),
 };
 
-static const char * const ain1_groups[] = {"ain1"};
-static const char * const ain2_groups[] = {"ain2"};
+static const char * const ain1_groups[] = {"ain1", "ain1_dat2",
+					   "ain1_dat4"};
+static const char * const ain2_groups[] = {"ain2", "ain2_dat2",
+					   "ain2_dat4"};
 static const char * const ain3_groups[] = {"ain3"};
-static const char * const aout1_groups[] = {"aout1", "aout1b"};
-static const char * const aout2_groups[] = {"aout2"};
+static const char * const aout1_groups[] = {"aout1", "aout1_dat2",
+					    "aout1_dat4",
+					    "aout1b", "aout1b_dat2",
+					    "aout1b_dat4"};
+static const char * const aout2_groups[] = {"aout2", "aout2_dat2",
+					    "aout2_dat4"};
 static const char * const aout3_groups[] = {"aout3"};
 static const char * const aout4_groups[] = {"aout4"};
 static const char * const aoutiec1_groups[] = {"aoutiec1"};
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c
index 6ef892543cb9..efeca8fd7c9f 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c
@@ -719,18 +719,34 @@  static const struct pinctrl_pin_desc uniphier_pxs2_pins[] = {
 			     234, UNIPHIER_PIN_PULL_DOWN),
 };
 
-static const unsigned ain1_pins[] = {161, 162, 173, 174, 127, 128, 129};
-static const int ain1_muxvals[] = {8, 8, 8, 8, 3, 3, 3};
-static const unsigned ain2_pins[] = {98, 99, 100, 101, 102, 103, 104};
-static const int ain2_muxvals[] = {8, 8, 8, 8, 8, 8, 8};
+static const unsigned ain1_pins[] = {161, 162, 173, 174};
+static const int ain1_muxvals[] = {8, 8, 8, 8};
+static const unsigned ain1_dat2_pins[] = {127};
+static const int ain1_dat2_muxvals[] = {3};
+static const unsigned ain1_dat4_pins[] = {128, 129};
+static const int ain1_dat4_muxvals[] = {3, 3};
+static const unsigned ain2_pins[] = {98, 99, 100, 101};
+static const int ain2_muxvals[] = {8, 8, 8, 8};
+static const unsigned ain2_dat2_pins[] = {102};
+static const int ain2_dat2_muxvals[] = {8};
+static const unsigned ain2_dat4_pins[] = {103, 104};
+static const int ain2_dat4_muxvals[] = {8, 8};
 static const unsigned ain3_pins[] = {132, 133, 134, 131};
 static const int ain3_muxvals[] = {5, 5, 5, 5};
 static const unsigned ainiec1_pins[] = {91};
 static const int ainiec1_muxvals[] = {11};
-static const unsigned aout1_pins[] = {87, 88, 89, 90, 92, 93, 94};
-static const int aout1_muxvals[] = {11, 11, 11, 11, 11, 11, 11};
-static const unsigned aout2_pins[] = {175, 176, 177, 178, 183, 184, 185};
-static const int aout2_muxvals[] = {8, 8, 8, 8, 9, 9, 9};
+static const unsigned aout1_pins[] = {87, 88, 89, 90};
+static const int aout1_muxvals[] = {11, 11, 11, 11};
+static const unsigned aout1_dat2_pins[] = {92};
+static const int aout1_dat2_muxvals[] = {11};
+static const unsigned aout1_dat4_pins[] = {93, 94};
+static const int aout1_dat4_muxvals[] = {11, 11};
+static const unsigned aout2_pins[] = {177, 178, 175, 176};
+static const int aout2_muxvals[] = {8, 8, 8, 8};
+static const unsigned aout2_dat2_pins[] = {183};
+static const int aout2_dat2_muxvals[] = {9};
+static const unsigned aout2_dat4_pins[] = {184, 185};
+static const int aout2_dat4_muxvals[] = {9, 9};
 static const unsigned aout3_pins[] = {105, 106, 107, 108};
 static const int aout3_muxvals[] = {8, 8, 8, 8};
 static const unsigned aoutiec1_pins[] = {95};
@@ -842,11 +858,19 @@  static const unsigned int gpio_range1_pins[] = {
 
 static const struct uniphier_pinctrl_group uniphier_pxs2_groups[] = {
 	UNIPHIER_PINCTRL_GROUP(ain1),
+	UNIPHIER_PINCTRL_GROUP(ain1_dat2),
+	UNIPHIER_PINCTRL_GROUP(ain1_dat4),
 	UNIPHIER_PINCTRL_GROUP(ain2),
+	UNIPHIER_PINCTRL_GROUP(ain2_dat2),
+	UNIPHIER_PINCTRL_GROUP(ain2_dat4),
 	UNIPHIER_PINCTRL_GROUP(ain3),
 	UNIPHIER_PINCTRL_GROUP(ainiec1),
 	UNIPHIER_PINCTRL_GROUP(aout1),
+	UNIPHIER_PINCTRL_GROUP(aout1_dat2),
+	UNIPHIER_PINCTRL_GROUP(aout1_dat4),
 	UNIPHIER_PINCTRL_GROUP(aout2),
+	UNIPHIER_PINCTRL_GROUP(aout2_dat2),
+	UNIPHIER_PINCTRL_GROUP(aout2_dat4),
 	UNIPHIER_PINCTRL_GROUP(aout3),
 	UNIPHIER_PINCTRL_GROUP(aoutiec1),
 	UNIPHIER_PINCTRL_GROUP(aoutiec2),
@@ -884,12 +908,16 @@  static const struct uniphier_pinctrl_group uniphier_pxs2_groups[] = {
 	UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range1),
 };
 
-static const char * const ain1_groups[] = {"ain1"};
-static const char * const ain2_groups[] = {"ain2"};
+static const char * const ain1_groups[] = {"ain1", "ain1_dat2",
+					   "ain1_dat4"};
+static const char * const ain2_groups[] = {"ain2", "ain2_dat2",
+					   "ain2_dat4"};
 static const char * const ain3_groups[] = {"ain3"};
 static const char * const ainiec1_groups[] = {"ainiec1"};
-static const char * const aout1_groups[] = {"aout1"};
-static const char * const aout2_groups[] = {"aout2"};
+static const char * const aout1_groups[] = {"aout1", "aout1_dat2",
+					    "aout1_dat4"};
+static const char * const aout2_groups[] = {"aout2", "aout2_dat2",
+					    "aout2_dat4"};
 static const char * const aout3_groups[] = {"aout3"};
 static const char * const aoutiec1_groups[] = {"aoutiec1"};
 static const char * const aoutiec2_groups[] = {"aoutiec2"};
@@ -922,9 +950,12 @@  static const char * const usb3_groups[] = {"usb3"};
 static const struct uniphier_pinmux_function uniphier_pxs2_functions[] = {
 	UNIPHIER_PINMUX_FUNCTION(ain1),
 	UNIPHIER_PINMUX_FUNCTION(ain2),
+	UNIPHIER_PINMUX_FUNCTION(ain3),
 	UNIPHIER_PINMUX_FUNCTION(ainiec1),
+	UNIPHIER_PINMUX_FUNCTION(aout1),
 	UNIPHIER_PINMUX_FUNCTION(aout2),
 	UNIPHIER_PINMUX_FUNCTION(aout3),
+	UNIPHIER_PINMUX_FUNCTION(aout4),
 	UNIPHIER_PINMUX_FUNCTION(aoutiec1),
 	UNIPHIER_PINMUX_FUNCTION(aoutiec2),
 	UNIPHIER_PINMUX_FUNCTION(emmc),
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs3.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs3.c
index 4810db6c0ee8..eb3c9b55f6e3 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs3.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs3.c
@@ -767,14 +767,30 @@  static const struct pinctrl_pin_desc uniphier_pxs3_pins[] = {
 			     250, UNIPHIER_PIN_PULL_DOWN),
 };
 
-static const unsigned ain1_pins[] = {186, 187, 188, 189, 237, 238, 239};
-static const int ain1_muxvals[] = {0, 0, 0, 0, 1, 1, 1};
-static const unsigned ain2_pins[] = {243, 244, 245, 246, 247, 248, 249};
-static const int ain2_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
-static const unsigned aout1_pins[] = {226, 227, 228, 229, 230, 231, 232};
-static const int aout1_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
-static const unsigned aout2_pins[] = {192, 193, 194, 195, 196, 197, 198};
-static const int aout2_muxvals[] = {0, 0, 0, 0, 0, 0, 0};
+static const unsigned ain1_pins[] = {186, 187, 188, 189};
+static const int ain1_muxvals[] = {0, 0, 0, 0};
+static const unsigned ain1_dat2_pins[] = {237};
+static const int ain1_dat2_muxvals[] = {1};
+static const unsigned ain1_dat4_pins[] = {238, 239};
+static const int ain1_dat4_muxvals[] = {1, 1};
+static const unsigned ain2_pins[] = {243, 244, 245, 246};
+static const int ain2_muxvals[] = {1, 1, 1, 1};
+static const unsigned ain2_dat2_pins[] = {247};
+static const int ain2_dat2_muxvals[] = {1};
+static const unsigned ain2_dat4_pins[] = {248, 249};
+static const int ain2_dat4_muxvals[] = {1, 1};
+static const unsigned aout1_pins[] = {226, 227, 228, 229};
+static const int aout1_muxvals[] = {1, 1, 1, 1};
+static const unsigned aout1_dat2_pins[] = {230};
+static const int aout1_dat2_muxvals[] = {1};
+static const unsigned aout1_dat4_pins[] = {231, 232};
+static const int aout1_dat4_muxvals[] = {1, 1};
+static const unsigned aout2_pins[] = {192, 193, 194, 195};
+static const int aout2_muxvals[] = {0, 0, 0, 0};
+static const unsigned aout2_dat2_pins[] = {196};
+static const int aout2_dat2_muxvals[] = {0};
+static const unsigned aout2_dat4_pins[] = {197, 198};
+static const int aout2_dat4_muxvals[] = {0, 0};
 static const unsigned aout3_pins[] = {199, 200, 201, 202};
 static const int aout3_muxvals[] = {0, 0, 0, 0};
 static const unsigned ainiec1_pins[] = {240};
@@ -888,9 +904,17 @@  static const unsigned int gpio_range2_pins[] = {
 
 static const struct uniphier_pinctrl_group uniphier_pxs3_groups[] = {
 	UNIPHIER_PINCTRL_GROUP(ain1),
+	UNIPHIER_PINCTRL_GROUP(ain1_dat2),
+	UNIPHIER_PINCTRL_GROUP(ain1_dat4),
 	UNIPHIER_PINCTRL_GROUP(ain2),
+	UNIPHIER_PINCTRL_GROUP(ain2_dat2),
+	UNIPHIER_PINCTRL_GROUP(ain2_dat4),
 	UNIPHIER_PINCTRL_GROUP(aout1),
+	UNIPHIER_PINCTRL_GROUP(aout1_dat2),
+	UNIPHIER_PINCTRL_GROUP(aout1_dat4),
 	UNIPHIER_PINCTRL_GROUP(aout2),
+	UNIPHIER_PINCTRL_GROUP(aout2_dat2),
+	UNIPHIER_PINCTRL_GROUP(aout2_dat4),
 	UNIPHIER_PINCTRL_GROUP(aout3),
 	UNIPHIER_PINCTRL_GROUP(ainiec1),
 	UNIPHIER_PINCTRL_GROUP(aoutiec1),
@@ -926,10 +950,14 @@  static const struct uniphier_pinctrl_group uniphier_pxs3_groups[] = {
 	UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range2),
 };
 
-static const char * const ain1_groups[] = {"ain1"};
-static const char * const ain2_groups[] = {"ain2"};
-static const char * const aout1_groups[] = {"aout1"};
-static const char * const aout2_groups[] = {"aout2"};
+static const char * const ain1_groups[] = {"ain1", "ain1_dat2",
+					   "ain1_dat4"};
+static const char * const ain2_groups[] = {"ain2", "ain2_dat2",
+					   "ain1_dat4"};
+static const char * const aout1_groups[] = {"aout1", "aout1_dat2",
+					    "aout1_dat4"};
+static const char * const aout2_groups[] = {"aout2", "aout2_dat2",
+					    "aout2_dat4"};
 static const char * const aout3_groups[] = {"aout3"};
 static const char * const ainiec1_groups[] = {"ainiec1"};
 static const char * const aoutiec1_groups[] = {"aoutiec1"};