[PATCH] board: freescale: common: Refactor I2C mux driver

Priyanka Jain priyanka.jain at nxp.com
Fri Jun 18 09:57:43 CEST 2021



>-----Original Message-----
>From: Stephen Carlson <stcarlso at linux.microsoft.com>
>Sent: Thursday, June 10, 2021 5:05 AM
>To: U-Boot Mailing List <u-boot at lists.denx.de>
>Cc: Priyanka Jain <priyanka.jain at nxp.com>
>Subject: [PATCH] board: freescale: common: Refactor I2C mux driver
>
>Refactors the NXP I2C mux driver to clean up duplicate code and allow it to
>be disabled with a config.
>
>New config: CONFIG_FSL_USE_PCA9547_MUX. Defaults to Y since this
>multiplexer was always enabled before on these targets. When enabled, adds
>functions for selecting the current I2C channel on the PCA9547 mux, which
>can be used when accessing I2C peripherals on the board.
>
>Signed-off-by: Stephen Carlson <stcarlso at linux.microsoft.com>
>Signed-off-by: Wasim Khan <wasim.khan at nxp.com>
>Tested-by: Zhao Zheng <zhao.zheng at nxp.com>

As this patch is touching multiple platforms. 
Please share list of the platforms on which the testing has been done.


>---
>  board/freescale/common/Kconfig                |  6 ++
>  board/freescale/common/Makefile               | 11 ++++
>  board/freescale/common/i2c_common.c           | 32 ++++++++++
>  board/freescale/common/i2c_common.h           | 28 +++++++++
>  board/freescale/common/i2c_mux.c              | 38 ++++++++++++
>  board/freescale/common/i2c_mux.h              | 13 +++++
>  board/freescale/common/vid.c                  | 58 ++++---------------
>  board/freescale/ls1021aqds/dcu.c              | 26 +--------
>  board/freescale/ls1021aqds/ls1021aqds.c       | 26 +--------
>  board/freescale/ls1043aqds/ls1043aqds.c       | 27 +--------
>  board/freescale/ls1046afrwy/ls1046afrwy.c     | 27 +--------
>  board/freescale/ls1046aqds/ls1046aqds.c       | 26 +--------
>  board/freescale/ls1088a/ls1088a.c             | 32 ++--------
>  board/freescale/ls2080aqds/ls2080aqds.c       | 25 +-------
>  board/freescale/ls2080ardb/ls2080ardb.c       | 27 +--------
>  board/freescale/lx2160a/lx2160a.c             | 31 ++--------
>  board/freescale/t208xqds/t208xqds.c           | 26 +--------
>  configs/T2080QDS_NAND_defconfig               |  1 +
>  configs/T2080QDS_SDCARD_defconfig             |  1 +
>  configs/T2080QDS_SECURE_BOOT_defconfig        |  1 +
>  configs/T2080QDS_SPIFLASH_defconfig           |  1 +
>  configs/T2080QDS_SRIO_PCIE_BOOT_defconfig     |  1 +
>  configs/T2080QDS_defconfig                    |  1 +
>  configs/ls1021aqds_ddr4_nor_defconfig         |  1 +
>  configs/ls1021aqds_ddr4_nor_lpuart_defconfig  |  1 +
>  configs/ls1021aqds_nand_defconfig             |  1 +
>  configs/ls1021aqds_nor_SECURE_BOOT_defconfig  |  1 +
>  configs/ls1021aqds_nor_defconfig              |  1 +
>  configs/ls1021aqds_nor_lpuart_defconfig       |  1 +
>  configs/ls1021aqds_qspi_defconfig             |  1 +
>  configs/ls1021aqds_sdcard_ifc_defconfig       |  1 +
>  configs/ls1021aqds_sdcard_qspi_defconfig      |  1 +
>  configs/ls1043aqds_defconfig                  |  1 +
>  configs/ls1043aqds_lpuart_defconfig           |  1 +
>  configs/ls1043aqds_nand_defconfig             |  1 +
>  configs/ls1043aqds_nor_ddr3_defconfig         |  1 +
>  configs/ls1043aqds_qspi_defconfig             |  1 +
>  configs/ls1043aqds_sdcard_ifc_defconfig       |  1 +
>  configs/ls1043aqds_sdcard_qspi_defconfig      |  1 +
>  configs/ls1043aqds_tfa_SECURE_BOOT_defconfig  |  1 +
>  configs/ls1043aqds_tfa_defconfig              |  1 +
>  configs/ls1046afrwy_tfa_SECURE_BOOT_defconfig |  1 +
>  configs/ls1046afrwy_tfa_defconfig             |  1 +
>  configs/ls1046aqds_SECURE_BOOT_defconfig      |  1 +
>  configs/ls1046aqds_defconfig                  |  1 +
>  configs/ls1046aqds_lpuart_defconfig           |  1 +
>  configs/ls1046aqds_nand_defconfig             |  1 +
>  configs/ls1046aqds_qspi_defconfig             |  1 +
>  configs/ls1046aqds_sdcard_ifc_defconfig       |  1 +
>  configs/ls1046aqds_sdcard_qspi_defconfig      |  1 +
>  configs/ls1046aqds_tfa_SECURE_BOOT_defconfig  |  1 +
>  configs/ls1046aqds_tfa_defconfig              |  1 +
>  configs/ls1088aqds_defconfig                  |  1 +
>  configs/ls1088aqds_qspi_SECURE_BOOT_defconfig |  1 +
>  configs/ls1088aqds_qspi_defconfig             |  1 +
>  configs/ls1088aqds_sdcard_ifc_defconfig       |  1 +
>  configs/ls1088aqds_sdcard_qspi_defconfig      |  1 +
>  configs/ls1088aqds_tfa_defconfig              |  1 +
>  configs/ls1088ardb_qspi_SECURE_BOOT_defconfig |  1 +
>  configs/ls1088ardb_qspi_defconfig             |  1 +
>  ...1088ardb_sdcard_qspi_SECURE_BOOT_defconfig |  1 +
>  configs/ls1088ardb_sdcard_qspi_defconfig      |  1 +
>  configs/ls1088ardb_tfa_SECURE_BOOT_defconfig  |  1 +
>  configs/ls1088ardb_tfa_defconfig              |  1 +
>  configs/ls2080aqds_SECURE_BOOT_defconfig      |  1 +
>  configs/ls2080aqds_defconfig                  |  1 +
>  configs/ls2080aqds_nand_defconfig             |  1 +
>  configs/ls2080aqds_qspi_defconfig             |  1 +
>  configs/ls2080aqds_sdcard_defconfig           |  1 +
>  configs/ls2080ardb_SECURE_BOOT_defconfig      |  1 +
>  configs/ls2080ardb_defconfig                  |  1 +
>  configs/ls2080ardb_nand_defconfig             |  1 +
>  configs/ls2081ardb_defconfig                  |  1 +
>  configs/ls2088aqds_tfa_defconfig              |  1 +
>  configs/ls2088ardb_qspi_SECURE_BOOT_defconfig |  1 +
>  configs/ls2088ardb_qspi_defconfig             |  1 +
>  configs/ls2088ardb_tfa_SECURE_BOOT_defconfig  |  1 +
>  configs/ls2088ardb_tfa_defconfig              |  1 +
>  configs/lx2160aqds_tfa_SECURE_BOOT_defconfig  |  1 +
>  configs/lx2160aqds_tfa_defconfig              |  1 +
>  configs/lx2160ardb_tfa_SECURE_BOOT_defconfig  |  1 +
>  configs/lx2160ardb_tfa_defconfig              |  1 +
>  configs/lx2160ardb_tfa_stmm_defconfig         |  1 +
>  configs/lx2162aqds_tfa_SECURE_BOOT_defconfig  |  1 +
>  configs/lx2162aqds_tfa_defconfig              |  1 +
>  .../lx2162aqds_tfa_verified_boot_defconfig    |  1 +
>  86 files changed, 232 insertions(+), 296 deletions(-)

Look to be a big patch. Please split this in patch series (driver changes, different platform changes should belong to different patch)

>  create mode 100644 board/freescale/common/i2c_common.c
>  create mode 100644 board/freescale/common/i2c_common.h
>  create mode 100644 board/freescale/common/i2c_mux.c
>  create mode 100644 board/freescale/common/i2c_mux.h
>
>diff --git a/board/freescale/common/Kconfig
>b/board/freescale/common/Kconfig
>index 17db755951..ab9c14ae88 100644
>--- a/board/freescale/common/Kconfig
>+++ b/board/freescale/common/Kconfig
>@@ -21,6 +21,12 @@ config CMD_ESBC_VALIDATE
>  	    esbc_validate - validate signature using RSA verification
>  	    esbc_halt - put the core in spin loop (Secure Boot Only)
>
>+config FSL_USE_PCA9547_MUX
>+	bool "Enable PCA9547 I2C Mux on Freescale boards"
>+	default n
>+	help
>+	 This option enables the PCA9547 I2C mux on Freescale boards.
>+
>  config VID
>  	depends on DM_I2C
>  	bool "Enable Freescale VID"
>diff --git a/board/freescale/common/Makefile
>b/board/freescale/common/Makefile
>index 114b7ba8f9..45aaa16ca4 100644
>--- a/board/freescale/common/Makefile
>+++ b/board/freescale/common/Makefile
>@@ -15,6 +15,15 @@ ifdef MINIMAL
>  # necessary to create built-in.o
>  obj- := __dummy__.o
>  else
>+# include i2c_common.o once if either VID or FSL_USE_PCA9547_MUX
>+I2C_COMMON=
>+ifdef CONFIG_VID
>+I2C_COMMON=y
>+endif
>+ifdef CONFIG_FSL_USE_PCA9547_MUX
>+I2C_COMMON=y
>+endif
>+
>  obj-$(CONFIG_FSL_CADMUS)	+= cadmus.o
>  obj-$(CONFIG_FSL_VIA)		+= cds_via.o
>  obj-$(CONFIG_FMAN_ENET)	+= fman.o
>@@ -22,6 +31,8 @@ obj-$(CONFIG_FSL_PIXIS)	+= pixis.o
>  ifndef CONFIG_SPL_BUILD
>  obj-$(CONFIG_FSL_NGPIXIS)	+= ngpixis.o
>  endif
>+obj-$(I2C_COMMON)		+= i2c_common.o
>+obj-$(CONFIG_FSL_USE_PCA9547_MUX)		+= i2c_mux.o
>  obj-$(CONFIG_VID)		+= vid.o
>  obj-$(CONFIG_FSL_QIXIS)	+= qixis.o
>  obj-$(CONFIG_PQ_MDS_PIB)	+= pq-mds-pib.o
>diff --git a/board/freescale/common/i2c_common.c
>b/board/freescale/common/i2c_common.c
>new file mode 100644
>index 0000000000..bfae94720e
>--- /dev/null
>+++ b/board/freescale/common/i2c_common.c
>@@ -0,0 +1,32 @@
>+// SPDX-License-Identifier: GPL-2.0+
>+/*
>+ * Copyright 2021 Microsoft Corporation
>+ */
>+

It seems The code In this file and other new files is being added after refactor from other files.
Please keep original copyright as well.

>+#include <common.h>
>+#include <i2c.h>
>+#include "i2c_common.h"
>+
>+#ifdef CONFIG_DM_I2C
>+
>+/* If DM is in use, retrieve the chip for the specified bus number */
>+int fsl_i2c_get_device(int address, int bus, DEVICE_HANDLE_T *dev)
>+{
>+	int ret = i2c_get_chip_for_busnum(bus, address, 1, dev);
>+
>+	if (ret)
>+		printf("I2C: Bus %d has no device with address 0x%02X\n",
>+		       bus, address);
>+	return ret;
>+}
>+
>+#else
>+
>+/* Handle is passed directly */
>+int fsl_i2c_get_device(int address, int bus, DEVICE_HANDLE_T *dev)
>+{
>+	*dev = address;
>+	return 0;
>+}
>+
>+#endif
>diff --git a/board/freescale/common/i2c_common.h
>b/board/freescale/common/i2c_common.h
>new file mode 100644
>index 0000000000..23b465b08c
>--- /dev/null
>+++ b/board/freescale/common/i2c_common.h
>@@ -0,0 +1,28 @@
>+/* SPDX-License-Identifier: GPL-2.0+ */
>+/*
>+ * Copyright 2021 Microsoft Corporation
>+ */
>+

It seems The code In this file and other new files is being added after refactor from other files.
Please keep original copyright as well.

>+#ifndef __I2C_COMMON_H__
>+#define __I2C_COMMON_H__

If the content is something NXP board specific. If yes, rename macro to __I2C_NXP_COMMON_H__


>+
>+/* Common functionality shared by the I2C drivers for VID and the mux. */
>+#ifdef CONFIG_DM_I2C
>+#define DEVICE_HANDLE_T struct udevice *
>+
>+#define I2C_READ(dev, register, data, length) \
>+	dm_i2c_read(dev, register, data, length)
>+#define I2C_WRITE(dev, register, data, length) \
>+	dm_i2c_write(dev, register, data, length)
>+#else
>+#define DEVICE_HANDLE_T int
>+
>+#define I2C_READ(dev, register, data, length) \
>+	i2c_read(dev, register, 1, data, length)
>+#define I2C_WRITE(dev, register, data, length) \
>+	i2c_write(dev, register, 1, data, length)
>+#endif
>+
>+int fsl_i2c_get_device(int address, int bus, DEVICE_HANDLE_T *dev);
>+
>+#endif
>diff --git a/board/freescale/common/i2c_mux.c
>b/board/freescale/common/i2c_mux.c
>new file mode 100644
>index 0000000000..18fad6b5a5
>--- /dev/null
>+++ b/board/freescale/common/i2c_mux.c
>@@ -0,0 +1,38 @@
>+// SPDX-License-Identifier: GPL-2.0+
>+/*
>+ * Copyright 2021 Microsoft Corporation
>+ */
>+
>+#include <common.h>
>+#include <i2c.h>
>+#include "i2c_common.h"
>+#include "i2c_mux.h"
>+
>+/*
>+ * A new Kconfig option for something that used to always be built should be
>+ * “default y”.
>+ */
>+#ifdef CONFIG_FSL_USE_PCA9547_MUX
>+
>+int select_i2c_ch_pca9547(u8 ch, int bus)
>+{
>+	int ret;
>+	DEVICE_HANDLE_T dev;
>+
>+	/* Open device handle */
>+	ret = fsl_i2c_get_device(I2C_MUX_PCA_ADDR_PRI, bus, &dev);
>+	if (ret) {
>+		printf("PCA: No PCA9547 device found\n");
>+		return ret;
>+	}
>+
>+	ret = I2C_WRITE(dev, 0, &ch, sizeof(ch));
>+	if (ret) {
>+		printf("PCA: Unable to select channel %d (%d)\n", (int)ch, ret);
>+		return ret;
>+	}
>+
>+	return 0;
>+}
>+
>+#endif


As you are already doing refactoring, this code is not NXP(Freescale) Specific. 
This is i2c mux pca9547 code. I suggest to add support for pca9547 device in generic I2C driver.


>diff --git a/board/freescale/common/i2c_mux.h
>b/board/freescale/common/i2c_mux.h
>new file mode 100644
>index 0000000000..49ec7b2fbe
>--- /dev/null
>+++ b/board/freescale/common/i2c_mux.h
>@@ -0,0 +1,13 @@
>+/* SPDX-License-Identifier: GPL-2.0+ */
>+/*
>+ * Copyright 2021 Microsoft Corporation
>+ */
>+
>+#ifndef __I2C_MUX_H__
>+#define __I2C_MUX_H__
>+
>+#ifdef CONFIG_FSL_USE_PCA9547_MUX
>+int select_i2c_ch_pca9547(u8 ch, int bus);
>+#endif
>+
>+#endif
>diff --git a/board/freescale/common/vid.c b/board/freescale/common/vid.c
>index 6e8296293b..f042627eac 100644
>--- a/board/freescale/common/vid.c
>+++ b/board/freescale/common/vid.c
>@@ -20,8 +20,13 @@
>  #include <asm/immap_85xx.h>
>  #endif
>  #include <linux/delay.h>
>+#include "i2c_common.h"
>  #include "vid.h"
>
>+#ifndef I2C_VOL_MONITOR_BUS
>+#define I2C_VOL_MONITOR_BUS                    0
>+#endif
>+
>  /* Voltages are generally handled in mV to keep them as integers */
>  #define MV_PER_V 1000
>
>@@ -95,44 +100,6 @@ u16 __weak soc_get_fuse_vid(int vid_index)
>  #define I2C_VOL_MONITOR_ADDR                    0
>  #endif
>
>-#if CONFIG_IS_ENABLED(DM_I2C)
>-#define DEVICE_HANDLE_T struct udevice *
>-
>-#ifndef I2C_VOL_MONITOR_BUS
>-#define I2C_VOL_MONITOR_BUS			0
>-#endif
>-
>-/* If DM is in use, retrieve the udevice chip for the specified bus number */
>-static int vid_get_device(int address, DEVICE_HANDLE_T *dev)
>-{
>-	int ret = i2c_get_chip_for_busnum(I2C_VOL_MONITOR_BUS, address, 1,
>dev);
>-
>-	if (ret)
>-		printf("VID: Bus %d has no device with address 0x%02X\n",
>-		       I2C_VOL_MONITOR_BUS, address);
>-	return ret;
>-}
>-
>-#define I2C_READ(dev, register, data, length) \
>-	dm_i2c_read(dev, register, data, length)
>-#define I2C_WRITE(dev, register, data, length) \
>-	dm_i2c_write(dev, register, data, length)
>-#else
>-#define DEVICE_HANDLE_T int
>-
>-/* If DM is not in use, I2C addresses are passed directly */
>-static int vid_get_device(int address, DEVICE_HANDLE_T *dev)
>-{
>-	*dev = address;
>-	return 0;
>-}
>-
>-#define I2C_READ(dev, register, data, length) \
>-	i2c_read(dev, register, 1, data, length)
>-#define I2C_WRITE(dev, register, data, length) \
>-	i2c_write(dev, register, 1, data, length)
>-#endif
>-
>  #if defined(CONFIG_VOL_MONITOR_IR36021_SET) || \
>  	defined(CONFIG_VOL_MONITOR_IR36021_READ)
>  /*
>@@ -158,7 +125,7 @@ static int find_ir_chip_on_i2c(void)
>  	/* Check all the address */
>  	for (i = 0; i < (sizeof(ir_i2c_addr)/sizeof(ir_i2c_addr[0])); i++) {
>  		i2caddress = ir_i2c_addr[i];
>-		ret = vid_get_device(i2caddress, &dev);
>+		ret = fsl_i2c_get_device(i2caddress, I2C_VOL_MONITOR_BUS,
>&dev);
>  		if (!ret) {
>  			ret = I2C_READ(dev, IR36021_MFR_ID_OFFSET,
>  				       (void *)&mfrID, sizeof(mfrID));
>@@ -202,7 +169,7 @@ static int read_voltage_from_INA220(int i2caddress)
>  	DEVICE_HANDLE_T dev;
>
>  	/* Open device handle */
>-	ret = vid_get_device(i2caddress, &dev);
>+	ret = fsl_i2c_get_device(i2caddress, I2C_VOL_MONITOR_BUS, &dev);
>  	if (ret)
>  		return ret;
>
>@@ -243,7 +210,7 @@ static int read_voltage_from_IR(int i2caddress)
>  	DEVICE_HANDLE_T dev;
>
>  	/* Open device handle */
>-	ret = vid_get_device(i2caddress, &dev);
>+	ret = fsl_i2c_get_device(i2caddress, I2C_VOL_MONITOR_BUS, &dev);
>  	if (ret)
>  		return ret;
>
>@@ -344,7 +311,7 @@ static int read_voltage_from_pmbus(int i2caddress)
>  	DEVICE_HANDLE_T dev;
>
>  	/* Open device handle */
>-	ret = vid_get_device(i2caddress, &dev);
>+	ret = fsl_i2c_get_device(i2caddress, I2C_VOL_MONITOR_BUS, &dev);
>  	if (ret)
>  		return ret;
>
>@@ -457,7 +424,7 @@ static int set_voltage_to_IR(int i2caddress, int vdd)
>  	DEVICE_HANDLE_T dev;
>
>  	/* Open device handle */
>-	ret = vid_get_device(i2caddress, &dev);
>+	ret = fsl_i2c_get_device(i2caddress, I2C_VOL_MONITOR_BUS, &dev);
>  	if (ret)
>  		return ret;
>
>@@ -503,7 +470,7 @@ static int set_voltage_to_pmbus(int i2caddress, int vdd)
>  	DEVICE_HANDLE_T dev;
>
>  	/* Open device handle */
>-	ret = vid_get_device(i2caddress, &dev);
>+	ret = fsl_i2c_get_device(i2caddress, I2C_VOL_MONITOR_BUS, &dev);
>  	if (ret)
>  		return ret;
>
>@@ -653,7 +620,7 @@ int adjust_vdd(ulong vdd_override)
>  		debug("VID: IR Chip found on I2C address 0x%02x\n", i2caddress);
>  	}
>
>-	ret = vid_get_device(i2caddress, &dev);
>+	ret = fsl_i2c_get_device(i2caddress, I2C_VOL_MONITOR_BUS, &dev);
>  	if (ret)
>  		return ret;
>
>@@ -785,7 +752,6 @@ exit:
>  	i2c_multiplexer_select_vid_channel(I2C_MUX_CH_DEFAULT);
>
>  	return ret < 0 ? -1 : 0;
>-
>  }
>
>  static int do_vdd_override(struct cmd_tbl *cmdtp,
>diff --git a/board/freescale/ls1021aqds/dcu.c
>b/board/freescale/ls1021aqds/dcu.c
>index 7532f7c0b2..b5fee06b5b 100644
>--- a/board/freescale/ls1021aqds/dcu.c
>+++ b/board/freescale/ls1021aqds/dcu.c
>@@ -11,37 +11,13 @@
>  #include <common.h>
>  #include <fsl_dcu_fb.h>
>  #include <i2c.h>
>+#include "../common/i2c_mux.h"
>  #include "div64.h"
>  #include "../common/diu_ch7301.h"
>  #include "ls1021aqds_qixis.h"
>
>  DECLARE_GLOBAL_DATA_PTR;
>
>-static int select_i2c_ch_pca9547(u8 ch, int bus_num)
>-{
>-	int ret;
>-#if CONFIG_IS_ENABLED(DM_I2C)
>-	struct udevice *dev;
>-
>-	ret = i2c_get_chip_for_busnum(bus_num, I2C_MUX_PCA_ADDR_PRI,
>-				      1, &dev);
>-	if (ret) {
>-		printf("%s: Cannot find udev for a bus %d\n", __func__,
>-		       bus_num);
>-		return ret;
>-	}
>-	ret = dm_i2c_write(dev, 0, &ch, 1);
>-#else
>-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
>-#endif
>-	if (ret) {
>-		puts("PCA: failed to select proper channel\n");
>-		return ret;
>-	}
>-
>-	return 0;
>-}
>-
>  unsigned int dcu_set_pixel_clock(unsigned int pixclock)
>  {
>  	unsigned long long div;
>diff --git a/board/freescale/ls1021aqds/ls1021aqds.c
>b/board/freescale/ls1021aqds/ls1021aqds.c
>index aa1f6025c1..fcbde2ceb7 100644
>--- a/board/freescale/ls1021aqds/ls1021aqds.c
>+++ b/board/freescale/ls1021aqds/ls1021aqds.c
>@@ -25,6 +25,7 @@
>  #include <fsl_devdis.h>
>  #include <fsl_validate.h>
>  #include <fsl_ddr.h>
>+#include "../common/i2c_mux.h"
>  #include "../common/sleep.h"
>  #include "../common/qixis.h"
>  #include "ls1021aqds_qixis.h"
>@@ -141,31 +142,6 @@ unsigned long get_board_ddr_clk(void)
>  	return 66666666;
>  }
>
>-int select_i2c_ch_pca9547(u8 ch, int bus_num)
>-{
>-	int ret;
>-#if CONFIG_IS_ENABLED(DM_I2C)
>-	struct udevice *dev;
>-
>-	ret = i2c_get_chip_for_busnum(bus_num, I2C_MUX_PCA_ADDR_PRI,
>-				      1, &dev);
>-	if (ret) {
>-		printf("%s: Cannot find udev for a bus %d\n", __func__,
>-		       bus_num);
>-		return ret;
>-	}
>-	ret = dm_i2c_write(dev, 0, &ch, 1);
>-#else
>-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
>-#endif
>-	if (ret) {
>-		puts("PCA: failed to select proper channel\n");
>-		return ret;
>-	}
>-
>-	return 0;
>-}
>-
>  int dram_init(void)
>  {
>  	/*
>diff --git a/board/freescale/ls1043aqds/ls1043aqds.c
>b/board/freescale/ls1043aqds/ls1043aqds.c
>index 5b131d1d67..76bbb6087a 100644
>--- a/board/freescale/ls1043aqds/ls1043aqds.c
>+++ b/board/freescale/ls1043aqds/ls1043aqds.c
>@@ -28,6 +28,7 @@
>  #include <fsl_esdhc.h>
>  #include <fsl_ifc.h>
>  #include <spl.h>
>+#include "../common/i2c_mux.h"
>
>  #include "../common/qixis.h"
>  #include "ls1043aqds_qixis.h"
>@@ -279,32 +280,6 @@ unsigned long get_board_ddr_clk(void)
>  	return 66666666;
>  }
>
>-int select_i2c_ch_pca9547(u8 ch, int bus_num)
>-{
>-	int ret;
>-
>-#if CONFIG_IS_ENABLED(DM_I2C)
>-	struct udevice *dev;
>-
>-	ret = i2c_get_chip_for_busnum(bus_num, I2C_MUX_PCA_ADDR_PRI,
>-				      1, &dev);
>-	if (ret) {
>-		printf("%s: Cannot find udev for a bus %d\n", __func__,
>-		       bus_num);
>-		return ret;
>-	}
>-	ret = dm_i2c_write(dev, 0, &ch, 1);
>-#else
>-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
>-#endif
>-	if (ret) {
>-		puts("PCA: failed to select proper channel\n");
>-		return ret;
>-	}
>-
>-	return 0;
>-}
>-
>  int dram_init(void)
>  {
>  	/*
>diff --git a/board/freescale/ls1046afrwy/ls1046afrwy.c
>b/board/freescale/ls1046afrwy/ls1046afrwy.c
>index f1709dcd1c..f1c08a13f7 100644
>--- a/board/freescale/ls1046afrwy/ls1046afrwy.c
>+++ b/board/freescale/ls1046afrwy/ls1046afrwy.c
>@@ -22,6 +22,7 @@
>  #include <fsl_esdhc.h>
>  #include <fsl_sec.h>
>  #include <fsl_dspi.h>
>+#include "../common/i2c_mux.h"
>
>  #define LS1046A_PORSR1_REG 0x1EE0000
>  #define BOOT_SRC_SD        0x20000000
>@@ -38,32 +39,6 @@
>
>  DECLARE_GLOBAL_DATA_PTR;
>
>-int select_i2c_ch_pca9547(u8 ch, int bus_num)
>-{
>-	int ret;
>-
>-#if CONFIG_IS_ENABLED(DM_I2C)
>-	struct udevice *dev;
>-
>-	ret = i2c_get_chip_for_busnum(bus_num, I2C_MUX_PCA_ADDR_PRI,
>-				      1, &dev);
>-	if (ret) {
>-		printf("%s: Cannot find udev for a bus %d\n", __func__,
>-		       bus_num);
>-		return ret;
>-	}
>-	ret = dm_i2c_write(dev, 0, &ch, 1);
>-#else
>-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
>-#endif
>-	if (ret) {
>-		puts("PCA: failed to select proper channel\n");
>-		return ret;
>-	}
>-
>-	return 0;
>-}
>-
>  static inline void demux_select_usb2(void)
>  {
>  	u32 val;
>diff --git a/board/freescale/ls1046aqds/ls1046aqds.c
>b/board/freescale/ls1046aqds/ls1046aqds.c
>index 20694426af..2b0786ac30 100644
>--- a/board/freescale/ls1046aqds/ls1046aqds.c
>+++ b/board/freescale/ls1046aqds/ls1046aqds.c
>@@ -29,6 +29,7 @@
>  #include <fsl_ifc.h>
>  #include <fsl_sec.h>
>  #include <spl.h>
>+#include "../common/i2c_mux.h"
>
>  #include "../common/vid.h"
>  #include "../common/qixis.h"
>@@ -276,31 +277,6 @@ u32 get_lpuart_clk(void)
>  }
>  #endif
>
>-int select_i2c_ch_pca9547(u8 ch, int bus_num)
>-{
>-	int ret;
>-#if CONFIG_IS_ENABLED(DM_I2C)
>-	struct udevice *dev;
>-
>-	ret = i2c_get_chip_for_busnum(bus_num, I2C_MUX_PCA_ADDR_PRI,
>-				      1, &dev);
>-	if (ret) {
>-		printf("%s: Cannot find udev for a bus %d\n", __func__,
>-		       bus_num);
>-		return ret;
>-	}
>-	ret = dm_i2c_write(dev, 0, &ch, 1);
>-#else
>-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
>-#endif
>-	if (ret) {
>-		puts("PCA: failed to select proper channel\n");
>-		return ret;
>-	}
>-
>-	return 0;
>-}
>-
>  int dram_init(void)
>  {
>  	/*
>diff --git a/board/freescale/ls1088a/ls1088a.c
>b/board/freescale/ls1088a/ls1088a.c
>index f5dc449d89..2f422634d5 100644
>--- a/board/freescale/ls1088a/ls1088a.c
>+++ b/board/freescale/ls1088a/ls1088a.c
>@@ -26,6 +26,7 @@
>  #include <asm/arch/fsl_serdes.h>
>  #include <asm/arch/soc.h>
>  #include <asm/arch-fsl-layerscape/fsl_icid.h>
>+#include "../common/i2c_mux.h"
>
>  #include "../common/qixis.h"
>  #include "ls1088a_qixis.h"
>@@ -415,34 +416,13 @@ unsigned long get_board_ddr_clk(void)
>  	return 66666666;
>  }
>
>-int select_i2c_ch_pca9547(u8 ch)
>-{
>-	int ret;
>-
>-#if !CONFIG_IS_ENABLED(DM_I2C)
>-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
>-#else
>-	struct udevice *dev;
>-
>-	ret = i2c_get_chip_for_busnum(0, I2C_MUX_PCA_ADDR_PRI, 1, &dev);
>-	if (!ret)
>-		ret = dm_i2c_write(dev, 0, &ch, 1);
>-#endif
>-	if (ret) {
>-		puts("PCA: failed to select proper channel\n");
>-		return ret;
>-	}
>-
>-	return 0;
>-}
>-
>  #if !defined(CONFIG_SPL_BUILD)
>  void board_retimer_init(void)
>  {
>  	u8 reg;
>
>  	/* Retimer is connected to I2C1_CH5 */
>-	select_i2c_ch_pca9547(I2C_MUX_CH5);
>+	select_i2c_ch_pca9547(I2C_MUX_CH5, 0);
>
>  	/* Access to Control/Shared register */
>  	reg = 0x0;
>@@ -532,7 +512,7 @@ void board_retimer_init(void)
>
>  #ifdef	CONFIG_TARGET_LS1088AQDS
>  	/* Retimer is connected to I2C1_CH5 */
>-	select_i2c_ch_pca9547(I2C_MUX_CH5);
>+	select_i2c_ch_pca9547(I2C_MUX_CH5, 0);
>
>  	/* Access to Control/Shared register */
>  	reg = 0x0;
>@@ -620,7 +600,7 @@ void board_retimer_init(void)
>
>  #endif
>  	/*return the default channel*/
>-	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
>+	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT, 0);
>  }
>
>  #ifdef CONFIG_MISC_INIT_R
>@@ -669,7 +649,7 @@ int misc_init_r(void)
>
>  int i2c_multiplexer_select_vid_channel(u8 channel)
>  {
>-	return select_i2c_ch_pca9547(channel);
>+	return select_i2c_ch_pca9547(channel, 0);
>  }
>
>  #ifdef CONFIG_TARGET_LS1088AQDS
>@@ -827,7 +807,7 @@ int board_init(void)
>  	u32 __iomem *irq_ccsr = (u32 __iomem *)ISC_BASE;
>  #endif
>
>-	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
>+	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT, 0);
>  	board_retimer_init();
>
>  #ifdef CONFIG_ENV_IS_NOWHERE
>diff --git a/board/freescale/ls2080aqds/ls2080aqds.c
>b/board/freescale/ls2080aqds/ls2080aqds.c
>index 9572319234..c48b01f7d7 100644
>--- a/board/freescale/ls2080aqds/ls2080aqds.c
>+++ b/board/freescale/ls2080aqds/ls2080aqds.c
>@@ -23,7 +23,7 @@
>  #include <fsl_sec.h>
>  #include <asm/arch/ppa.h>
>  #include <asm/arch-fsl-layerscape/fsl_icid.h>
>-
>+#include "../common/i2c_mux.h"
>
>  #include "../common/qixis.h"
>  #include "ls2080aqds_qixis.h"
>@@ -161,27 +161,6 @@ unsigned long get_board_ddr_clk(void)
>  	return 66666666;
>  }
>
>-int select_i2c_ch_pca9547(u8 ch)
>-{
>-	int ret;
>-#if CONFIG_IS_ENABLED(DM_I2C)
>-	struct udevice *dev;
>-
>-	ret = i2c_get_chip_for_busnum(0, I2C_MUX_PCA_ADDR_PRI, 1, &dev);
>-	if (!ret)
>-		ret = dm_i2c_write(dev, 0, &ch, 1);
>-
>-#else
>-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
>-#endif
>-	if (ret) {
>-		puts("PCA: failed to select proper channel\n");
>-		return ret;
>-	}
>-
>-	return 0;
>-}
>-
>  int config_board_mux(int ctrl_type)
>  {
>  	u8 reg5;
>@@ -235,7 +214,7 @@ int board_init(void)
>  #ifdef CONFIG_ENV_IS_NOWHERE
>  	gd->env_addr = (ulong)&default_environment[0];
>  #endif
>-	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
>+	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT, 0);
>
>  #ifdef CONFIG_RTC_ENABLE_32KHZ_OUTPUT
>  #if CONFIG_IS_ENABLED(DM_I2C)
>diff --git a/board/freescale/ls2080ardb/ls2080ardb.c
>b/board/freescale/ls2080ardb/ls2080ardb.c
>index 3a026b0827..6504cf768f 100644
>--- a/board/freescale/ls2080ardb/ls2080ardb.c
>+++ b/board/freescale/ls2080ardb/ls2080ardb.c
>@@ -25,6 +25,7 @@
>  #include <asm/arch/ppa.h>
>  #include <fsl_sec.h>
>  #include <asm/arch-fsl-layerscape/fsl_icid.h>
>+#include "../common/i2c_mux.h"
>
>  #ifdef CONFIG_FSL_QIXIS
>  #include "../common/qixis.h"
>@@ -205,31 +206,9 @@ unsigned long get_board_sys_clk(void)
>  	return 100000000;
>  }
>
>-int select_i2c_ch_pca9547(u8 ch)
>-{
>-	int ret;
>-
>-#if !CONFIG_IS_ENABLED(DM_I2C)
>-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
>-#else
>-	struct udevice *dev;
>-
>-	ret = i2c_get_chip_for_busnum(0, I2C_MUX_PCA_ADDR_PRI, 1, &dev);
>-	if (!ret)
>-		ret = dm_i2c_write(dev, 0, &ch, 1);
>-#endif
>-
>-	if (ret) {
>-		puts("PCA: failed to select proper channel\n");
>-		return ret;
>-	}
>-
>-	return 0;
>-}
>-
>  int i2c_multiplexer_select_vid_channel(u8 channel)
>  {
>-	return select_i2c_ch_pca9547(channel);
>+	return select_i2c_ch_pca9547(channel, 0);
>  }
>
>  int config_board_mux(int ctrl_type)
>@@ -267,7 +246,7 @@ int board_init(void)
>  #ifdef CONFIG_ENV_IS_NOWHERE
>  	gd->env_addr = (ulong)&default_environment[0];
>  #endif
>-	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
>+	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT, 0);
>
>  #ifdef CONFIG_FSL_QIXIS
>  	QIXIS_WRITE(rst_ctl, QIXIS_RST_CTL_RESET_EN);
>diff --git a/board/freescale/lx2160a/lx2160a.c
>b/board/freescale/lx2160a/lx2160a.c
>index 47a7024f33..04a6296a36 100644
>--- a/board/freescale/lx2160a/lx2160a.c
>+++ b/board/freescale/lx2160a/lx2160a.c
>@@ -29,6 +29,8 @@
>  #include <asm/arch/config.h>
>  #include <asm/arch/fsl_serdes.h>
>  #include <asm/arch/soc.h>
>+#include "../common/i2c_mux.h"
>+
>  #include "../common/qixis.h"
>  #include "../common/vid.h"
>  #include <fsl_immap.h>
>@@ -79,27 +81,6 @@ U_BOOT_DRVINFO(nxp_serial1) = {
>  	.plat = &serial1,
>  };
>
>-int select_i2c_ch_pca9547(u8 ch)
>-{
>-	int ret;
>-
>-#if !CONFIG_IS_ENABLED(DM_I2C)
>-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
>-#else
>-	struct udevice *dev;
>-
>-	ret = i2c_get_chip_for_busnum(0, I2C_MUX_PCA_ADDR_PRI, 1, &dev);
>-	if (!ret)
>-		ret = dm_i2c_write(dev, 0, &ch, 1);
>-#endif
>-	if (ret) {
>-		puts("PCA: failed to select proper channel\n");
>-		return ret;
>-	}
>-
>-	return 0;
>-}
>-
>  static void uart_get_clock(void)
>  {
>  	serial0.clock = get_serial_clock();
>@@ -115,10 +96,10 @@ int board_early_init_f(void)
>  	uart_get_clock();
>
>  #ifdef CONFIG_EMC2305
>-	select_i2c_ch_pca9547(I2C_MUX_CH_EMC2305);
>+	select_i2c_ch_pca9547(I2C_MUX_CH_EMC2305, 0);
>  	emc2305_init(I2C_EMC2305_ADDR);
>  	set_fan_speed(I2C_EMC2305_PWM, I2C_EMC2305_ADDR);
>-	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
>+	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT, 0);
>  #endif
>
>  	fsl_lsch3_early_init_f();
>@@ -275,7 +256,7 @@ int esdhc_status_fixup(void *blob, const char *compat)
>  #if defined(CONFIG_VID)
>  int i2c_multiplexer_select_vid_channel(u8 channel)
>  {
>-	return select_i2c_ch_pca9547(channel);
>+	return select_i2c_ch_pca9547(channel, 0);
>  }
>
>  int init_func_vid(void)
>@@ -611,7 +592,7 @@ int board_init(void)
>  	gd->env_addr = (ulong)&default_environment[0];
>  #endif
>
>-	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
>+	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT, 0);
>
>  #if defined(CONFIG_FSL_MC_ENET) && defined(CONFIG_TARGET_LX2160ARDB)
>  	/* invert AQR107 IRQ pins polarity */
>diff --git a/board/freescale/t208xqds/t208xqds.c
>b/board/freescale/t208xqds/t208xqds.c
>index fd3217f24d..715de106d6 100644
>--- a/board/freescale/t208xqds/t208xqds.c
>+++ b/board/freescale/t208xqds/t208xqds.c
>@@ -22,6 +22,7 @@
>  #include <asm/fsl_serdes.h>
>  #include <asm/fsl_liodn.h>
>  #include <fm_eth.h>
>+#include "../common/i2c_mux.h"
>
>  #include "../common/qixis.h"
>  #include "../common/vsc3316_3308.h"
>@@ -79,31 +80,6 @@ int checkboard(void)
>  	return 0;
>  }
>
>-int select_i2c_ch_pca9547(u8 ch, int bus_num)
>-{
>-	int ret;
>-
>-#if CONFIG_IS_ENABLED(DM_I2C)
>-	struct udevice *dev;
>-
>-	ret = i2c_get_chip_for_busnum(bus_num, I2C_MUX_PCA_ADDR_PRI, 1,
>&dev);
>-	if (ret) {
>-		printf("%s: Cannot find udev for a bus %d\n", __func__,
>-		       bus_num);
>-		return ret;
>-	}
>-	ret = dm_i2c_write(dev, 0, &ch, 1);
>-#else
>-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
>-#endif
>-	if (ret) {
>-		puts("PCA: failed to select proper channel\n");
>-		return ret;
>-	}
>-
>-	return 0;
>-}
>-
>  int i2c_multiplexer_select_vid_channel(u8 channel)
>  {
>  	return select_i2c_ch_pca9547(channel, 0);
>diff --git a/configs/T2080QDS_NAND_defconfig
>b/configs/T2080QDS_NAND_defconfig
>index ffd23fab6b..62ce9eeecd 100644
>--- a/configs/T2080QDS_NAND_defconfig
>+++ b/configs/T2080QDS_NAND_defconfig
>@@ -83,3 +83,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_STORAGE=y
>  CONFIG_ADDR_MAP=y
>  CONFIG_SYS_NUM_ADDR_MAP=64
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/T2080QDS_SDCARD_defconfig
>b/configs/T2080QDS_SDCARD_defconfig
>index cb5d7ff233..c7987fa3bf 100644
>--- a/configs/T2080QDS_SDCARD_defconfig
>+++ b/configs/T2080QDS_SDCARD_defconfig
>@@ -80,3 +80,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_STORAGE=y
>  CONFIG_ADDR_MAP=y
>  CONFIG_SYS_NUM_ADDR_MAP=64
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/T2080QDS_SECURE_BOOT_defconfig
>b/configs/T2080QDS_SECURE_BOOT_defconfig
>index 4d33dc6a3a..f8f031f778 100644
>--- a/configs/T2080QDS_SECURE_BOOT_defconfig
>+++ b/configs/T2080QDS_SECURE_BOOT_defconfig
>@@ -70,3 +70,4 @@ CONFIG_SYS_NUM_ADDR_MAP=64
>  CONFIG_RSA=y
>  CONFIG_SPL_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/T2080QDS_SPIFLASH_defconfig
>b/configs/T2080QDS_SPIFLASH_defconfig
>index 1029a8ec34..cdcbf37edc 100644
>--- a/configs/T2080QDS_SPIFLASH_defconfig
>+++ b/configs/T2080QDS_SPIFLASH_defconfig
>@@ -82,3 +82,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_STORAGE=y
>  CONFIG_ADDR_MAP=y
>  CONFIG_SYS_NUM_ADDR_MAP=64
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
>b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
>index 0677053e21..9ab1cdfe8c 100644
>--- a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
>+++ b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
>@@ -60,3 +60,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_STORAGE=y
>  CONFIG_ADDR_MAP=y
>  CONFIG_SYS_NUM_ADDR_MAP=64
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/T2080QDS_defconfig b/configs/T2080QDS_defconfig
>index c9d1fec300..1cbc947454 100644
>--- a/configs/T2080QDS_defconfig
>+++ b/configs/T2080QDS_defconfig
>@@ -68,3 +68,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_STORAGE=y
>  CONFIG_ADDR_MAP=y
>  CONFIG_SYS_NUM_ADDR_MAP=64
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1021aqds_ddr4_nor_defconfig
>b/configs/ls1021aqds_ddr4_nor_defconfig
>index a02a9fd955..04ad866731 100644
>--- a/configs/ls1021aqds_ddr4_nor_defconfig
>+++ b/configs/ls1021aqds_ddr4_nor_defconfig
>@@ -69,3 +69,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_STORAGE=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1021aqds_ddr4_nor_lpuart_defconfig
>b/configs/ls1021aqds_ddr4_nor_lpuart_defconfig
>index d42e351754..700768294d 100644
>--- a/configs/ls1021aqds_ddr4_nor_lpuart_defconfig
>+++ b/configs/ls1021aqds_ddr4_nor_lpuart_defconfig
>@@ -69,3 +69,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_STORAGE=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1021aqds_nand_defconfig
>b/configs/ls1021aqds_nand_defconfig
>index 93cb6bfbf2..d36d957995 100644
>--- a/configs/ls1021aqds_nand_defconfig
>+++ b/configs/ls1021aqds_nand_defconfig
>@@ -84,3 +84,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_STORAGE=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1021aqds_nor_SECURE_BOOT_defconfig
>b/configs/ls1021aqds_nor_SECURE_BOOT_defconfig
>index d3b68b9f95..43e77c95bc 100644
>--- a/configs/ls1021aqds_nor_SECURE_BOOT_defconfig
>+++ b/configs/ls1021aqds_nor_SECURE_BOOT_defconfig
>@@ -68,3 +68,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_STORAGE=y
>  CONFIG_RSA=y
>  CONFIG_SPL_RSA=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1021aqds_nor_defconfig
>b/configs/ls1021aqds_nor_defconfig
>index a67d040443..26d2e5e567 100644
>--- a/configs/ls1021aqds_nor_defconfig
>+++ b/configs/ls1021aqds_nor_defconfig
>@@ -70,3 +70,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_STORAGE=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1021aqds_nor_lpuart_defconfig
>b/configs/ls1021aqds_nor_lpuart_defconfig
>index 46625f1430..f2d81ce0e1 100644
>--- a/configs/ls1021aqds_nor_lpuart_defconfig
>+++ b/configs/ls1021aqds_nor_lpuart_defconfig
>@@ -70,3 +70,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_STORAGE=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1021aqds_qspi_defconfig
>b/configs/ls1021aqds_qspi_defconfig
>index 17a7a60b23..1f6f819d91 100644
>--- a/configs/ls1021aqds_qspi_defconfig
>+++ b/configs/ls1021aqds_qspi_defconfig
>@@ -69,3 +69,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_STORAGE=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1021aqds_sdcard_ifc_defconfig
>b/configs/ls1021aqds_sdcard_ifc_defconfig
>index 344211826f..4dc3260296 100644
>--- a/configs/ls1021aqds_sdcard_ifc_defconfig
>+++ b/configs/ls1021aqds_sdcard_ifc_defconfig
>@@ -83,3 +83,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_STORAGE=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1021aqds_sdcard_qspi_defconfig
>b/configs/ls1021aqds_sdcard_qspi_defconfig
>index c6d5c1ec95..0c1d714eda 100644
>--- a/configs/ls1021aqds_sdcard_qspi_defconfig
>+++ b/configs/ls1021aqds_sdcard_qspi_defconfig
>@@ -81,3 +81,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_STORAGE=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1043aqds_defconfig b/configs/ls1043aqds_defconfig
>index 42fd350075..2f1da44884 100644
>--- a/configs/ls1043aqds_defconfig
>+++ b/configs/ls1043aqds_defconfig
>@@ -69,3 +69,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1043aqds_lpuart_defconfig
>b/configs/ls1043aqds_lpuart_defconfig
>index 1bafc2bb03..41b304cee8 100644
>--- a/configs/ls1043aqds_lpuart_defconfig
>+++ b/configs/ls1043aqds_lpuart_defconfig
>@@ -71,3 +71,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1043aqds_nand_defconfig
>b/configs/ls1043aqds_nand_defconfig
>index 8fb23acd88..25c5d93fcb 100644
>--- a/configs/ls1043aqds_nand_defconfig
>+++ b/configs/ls1043aqds_nand_defconfig
>@@ -85,3 +85,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1043aqds_nor_ddr3_defconfig
>b/configs/ls1043aqds_nor_ddr3_defconfig
>index f87c9a7cbf..a324291824 100644
>--- a/configs/ls1043aqds_nor_ddr3_defconfig
>+++ b/configs/ls1043aqds_nor_ddr3_defconfig
>@@ -70,3 +70,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1043aqds_qspi_defconfig
>b/configs/ls1043aqds_qspi_defconfig
>index 5de4e07457..3724d392bc 100644
>--- a/configs/ls1043aqds_qspi_defconfig
>+++ b/configs/ls1043aqds_qspi_defconfig
>@@ -66,3 +66,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1043aqds_sdcard_ifc_defconfig
>b/configs/ls1043aqds_sdcard_ifc_defconfig
>index 6e3318b1ed..eedabdbc6b 100644
>--- a/configs/ls1043aqds_sdcard_ifc_defconfig
>+++ b/configs/ls1043aqds_sdcard_ifc_defconfig
>@@ -86,3 +86,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1043aqds_sdcard_qspi_defconfig
>b/configs/ls1043aqds_sdcard_qspi_defconfig
>index cd20980c98..3058442cdd 100644
>--- a/configs/ls1043aqds_sdcard_qspi_defconfig
>+++ b/configs/ls1043aqds_sdcard_qspi_defconfig
>@@ -80,3 +80,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1043aqds_tfa_SECURE_BOOT_defconfig
>b/configs/ls1043aqds_tfa_SECURE_BOOT_defconfig
>index 4caabcadb8..ee92209d63 100644
>--- a/configs/ls1043aqds_tfa_SECURE_BOOT_defconfig
>+++ b/configs/ls1043aqds_tfa_SECURE_BOOT_defconfig
>@@ -72,3 +72,4 @@ CONFIG_RSA=y
>  CONFIG_SPL_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1043aqds_tfa_defconfig
>b/configs/ls1043aqds_tfa_defconfig
>index fb28072638..c15f956b0a 100644
>--- a/configs/ls1043aqds_tfa_defconfig
>+++ b/configs/ls1043aqds_tfa_defconfig
>@@ -79,3 +79,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046afrwy_tfa_SECURE_BOOT_defconfig
>b/configs/ls1046afrwy_tfa_SECURE_BOOT_defconfig
>index f953106a3d..61e3229431 100644
>--- a/configs/ls1046afrwy_tfa_SECURE_BOOT_defconfig
>+++ b/configs/ls1046afrwy_tfa_SECURE_BOOT_defconfig
>@@ -60,3 +60,4 @@ CONFIG_USB_ETHER_ASIX=y
>  CONFIG_USB_ETHER_ASIX88179=y
>  CONFIG_USB_ETHER_RTL8152=y
>  CONFIG_RSA=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046afrwy_tfa_defconfig
>b/configs/ls1046afrwy_tfa_defconfig
>index ea62d7fa7e..6861d22193 100644
>--- a/configs/ls1046afrwy_tfa_defconfig
>+++ b/configs/ls1046afrwy_tfa_defconfig
>@@ -68,3 +68,4 @@ CONFIG_USB_HOST_ETHER=y
>  CONFIG_USB_ETHER_ASIX=y
>  CONFIG_USB_ETHER_ASIX88179=y
>  CONFIG_USB_ETHER_RTL8152=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046aqds_SECURE_BOOT_defconfig
>b/configs/ls1046aqds_SECURE_BOOT_defconfig
>index 7e7ae34226..5d58cc40a2 100644
>--- a/configs/ls1046aqds_SECURE_BOOT_defconfig
>+++ b/configs/ls1046aqds_SECURE_BOOT_defconfig
>@@ -70,3 +70,4 @@ CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_RSA=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046aqds_defconfig b/configs/ls1046aqds_defconfig
>index 8905d450da..205a129bce 100644
>--- a/configs/ls1046aqds_defconfig
>+++ b/configs/ls1046aqds_defconfig
>@@ -72,3 +72,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046aqds_lpuart_defconfig
>b/configs/ls1046aqds_lpuart_defconfig
>index 6627ac2bb0..0001b55aee 100644
>--- a/configs/ls1046aqds_lpuart_defconfig
>+++ b/configs/ls1046aqds_lpuart_defconfig
>@@ -74,3 +74,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046aqds_nand_defconfig
>b/configs/ls1046aqds_nand_defconfig
>index 9da564a788..d71e13df99 100644
>--- a/configs/ls1046aqds_nand_defconfig
>+++ b/configs/ls1046aqds_nand_defconfig
>@@ -80,3 +80,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046aqds_qspi_defconfig
>b/configs/ls1046aqds_qspi_defconfig
>index 6cf46ff2c9..3eb204fd07 100644
>--- a/configs/ls1046aqds_qspi_defconfig
>+++ b/configs/ls1046aqds_qspi_defconfig
>@@ -70,3 +70,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046aqds_sdcard_ifc_defconfig
>b/configs/ls1046aqds_sdcard_ifc_defconfig
>index 165c272c41..91fde75c9e 100644
>--- a/configs/ls1046aqds_sdcard_ifc_defconfig
>+++ b/configs/ls1046aqds_sdcard_ifc_defconfig
>@@ -90,3 +90,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046aqds_sdcard_qspi_defconfig
>b/configs/ls1046aqds_sdcard_qspi_defconfig
>index 8e60a35858..e81096fc2b 100644
>--- a/configs/ls1046aqds_sdcard_qspi_defconfig
>+++ b/configs/ls1046aqds_sdcard_qspi_defconfig
>@@ -85,3 +85,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046aqds_tfa_SECURE_BOOT_defconfig
>b/configs/ls1046aqds_tfa_SECURE_BOOT_defconfig
>index 7e57b53a1f..f78bbcf695 100644
>--- a/configs/ls1046aqds_tfa_SECURE_BOOT_defconfig
>+++ b/configs/ls1046aqds_tfa_SECURE_BOOT_defconfig
>@@ -72,3 +72,4 @@ CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_RSA=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1046aqds_tfa_defconfig
>b/configs/ls1046aqds_tfa_defconfig
>index 9366bc1d32..919c407618 100644
>--- a/configs/ls1046aqds_tfa_defconfig
>+++ b/configs/ls1046aqds_tfa_defconfig
>@@ -82,3 +82,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088aqds_defconfig b/configs/ls1088aqds_defconfig
>index c0fb4c9872..d9b8c9a18d 100644
>--- a/configs/ls1088aqds_defconfig
>+++ b/configs/ls1088aqds_defconfig
>@@ -74,3 +74,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_DWC3=y
>  CONFIG_USB_STORAGE=y
>  CONFIG_USB_GADGET=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088aqds_qspi_SECURE_BOOT_defconfig
>b/configs/ls1088aqds_qspi_SECURE_BOOT_defconfig
>index 57c91c1ad8..518a3ce6b9 100644
>--- a/configs/ls1088aqds_qspi_SECURE_BOOT_defconfig
>+++ b/configs/ls1088aqds_qspi_SECURE_BOOT_defconfig
>@@ -75,3 +75,4 @@ CONFIG_USB_GADGET=y
>  CONFIG_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088aqds_qspi_defconfig
>b/configs/ls1088aqds_qspi_defconfig
>index 9abaead1c8..641efd982e 100644
>--- a/configs/ls1088aqds_qspi_defconfig
>+++ b/configs/ls1088aqds_qspi_defconfig
>@@ -76,3 +76,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_DWC3=y
>  CONFIG_USB_GADGET=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088aqds_sdcard_ifc_defconfig
>b/configs/ls1088aqds_sdcard_ifc_defconfig
>index 44d4c13632..b70720c1d7 100644
>--- a/configs/ls1088aqds_sdcard_ifc_defconfig
>+++ b/configs/ls1088aqds_sdcard_ifc_defconfig
>@@ -82,3 +82,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_DWC3=y
>  CONFIG_USB_STORAGE=y
>  CONFIG_USB_GADGET=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088aqds_sdcard_qspi_defconfig
>b/configs/ls1088aqds_sdcard_qspi_defconfig
>index dadea57078..764df3b698 100644
>--- a/configs/ls1088aqds_sdcard_qspi_defconfig
>+++ b/configs/ls1088aqds_sdcard_qspi_defconfig
>@@ -85,3 +85,4 @@ CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_DWC3=y
>  CONFIG_USB_GADGET=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088aqds_tfa_defconfig
>b/configs/ls1088aqds_tfa_defconfig
>index 5229a351e1..9edabc9c80 100644
>--- a/configs/ls1088aqds_tfa_defconfig
>+++ b/configs/ls1088aqds_tfa_defconfig
>@@ -100,3 +100,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_DWC3=y
>  CONFIG_USB_GADGET=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088ardb_qspi_SECURE_BOOT_defconfig
>b/configs/ls1088ardb_qspi_SECURE_BOOT_defconfig
>index de3759951e..97912da79b 100644
>--- a/configs/ls1088ardb_qspi_SECURE_BOOT_defconfig
>+++ b/configs/ls1088ardb_qspi_SECURE_BOOT_defconfig
>@@ -77,3 +77,4 @@ CONFIG_USB_GADGET=y
>  CONFIG_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088ardb_qspi_defconfig
>b/configs/ls1088ardb_qspi_defconfig
>index 0e32aeb634..0ef9ef3da5 100644
>--- a/configs/ls1088ardb_qspi_defconfig
>+++ b/configs/ls1088ardb_qspi_defconfig
>@@ -78,3 +78,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_DWC3=y
>  CONFIG_USB_GADGET=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088ardb_sdcard_qspi_SECURE_BOOT_defconfig
>b/configs/ls1088ardb_sdcard_qspi_SECURE_BOOT_defconfig
>index 7b85bf6174..847afa9cef 100644
>--- a/configs/ls1088ardb_sdcard_qspi_SECURE_BOOT_defconfig
>+++ b/configs/ls1088ardb_sdcard_qspi_SECURE_BOOT_defconfig
>@@ -88,3 +88,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_DWC3=y
>  CONFIG_RSA=y
>  CONFIG_SPL_RSA=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088ardb_sdcard_qspi_defconfig
>b/configs/ls1088ardb_sdcard_qspi_defconfig
>index 59469d3b7e..25115f4658 100644
>--- a/configs/ls1088ardb_sdcard_qspi_defconfig
>+++ b/configs/ls1088ardb_sdcard_qspi_defconfig
>@@ -87,3 +87,4 @@ CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_USB_DWC3=y
>  CONFIG_USB_GADGET=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088ardb_tfa_SECURE_BOOT_defconfig
>b/configs/ls1088ardb_tfa_SECURE_BOOT_defconfig
>index 84fbab0f42..d1f75ef76c 100644
>--- a/configs/ls1088ardb_tfa_SECURE_BOOT_defconfig
>+++ b/configs/ls1088ardb_tfa_SECURE_BOOT_defconfig
>@@ -86,3 +86,4 @@ CONFIG_RSA=y
>  CONFIG_SPL_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls1088ardb_tfa_defconfig
>b/configs/ls1088ardb_tfa_defconfig
>index 007a80c2c6..f54339930b 100644
>--- a/configs/ls1088ardb_tfa_defconfig
>+++ b/configs/ls1088ardb_tfa_defconfig
>@@ -92,3 +92,4 @@ CONFIG_USB_ETHER_ASIX=y
>  CONFIG_USB_ETHER_ASIX88179=y
>  CONFIG_USB_ETHER_RTL8152=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2080aqds_SECURE_BOOT_defconfig
>b/configs/ls2080aqds_SECURE_BOOT_defconfig
>index bfa697c9ef..9e687f8066 100644
>--- a/configs/ls2080aqds_SECURE_BOOT_defconfig
>+++ b/configs/ls2080aqds_SECURE_BOOT_defconfig
>@@ -68,3 +68,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2080aqds_defconfig b/configs/ls2080aqds_defconfig
>index 6f9cce5b25..a13e471a68 100644
>--- a/configs/ls2080aqds_defconfig
>+++ b/configs/ls2080aqds_defconfig
>@@ -69,3 +69,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2080aqds_nand_defconfig
>b/configs/ls2080aqds_nand_defconfig
>index cc0f2b16aa..808140f10b 100644
>--- a/configs/ls2080aqds_nand_defconfig
>+++ b/configs/ls2080aqds_nand_defconfig
>@@ -76,3 +76,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2080aqds_qspi_defconfig
>b/configs/ls2080aqds_qspi_defconfig
>index cbdf733456..51ab47a583 100644
>--- a/configs/ls2080aqds_qspi_defconfig
>+++ b/configs/ls2080aqds_qspi_defconfig
>@@ -68,3 +68,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2080aqds_sdcard_defconfig
>b/configs/ls2080aqds_sdcard_defconfig
>index 71174de458..79fa0e179f 100644
>--- a/configs/ls2080aqds_sdcard_defconfig
>+++ b/configs/ls2080aqds_sdcard_defconfig
>@@ -75,3 +75,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2080ardb_SECURE_BOOT_defconfig
>b/configs/ls2080ardb_SECURE_BOOT_defconfig
>index 1175aafadb..b3cc52ba03 100644
>--- a/configs/ls2080ardb_SECURE_BOOT_defconfig
>+++ b/configs/ls2080ardb_SECURE_BOOT_defconfig
>@@ -66,3 +66,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2080ardb_defconfig b/configs/ls2080ardb_defconfig
>index 53abd06ec6..b3c5001c50 100644
>--- a/configs/ls2080ardb_defconfig
>+++ b/configs/ls2080ardb_defconfig
>@@ -67,3 +67,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2080ardb_nand_defconfig
>b/configs/ls2080ardb_nand_defconfig
>index 93032edc0c..63fadc5255 100644
>--- a/configs/ls2080ardb_nand_defconfig
>+++ b/configs/ls2080ardb_nand_defconfig
>@@ -72,3 +72,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2081ardb_defconfig b/configs/ls2081ardb_defconfig
>index ab1a9e22e0..d9134d6a01 100644
>--- a/configs/ls2081ardb_defconfig
>+++ b/configs/ls2081ardb_defconfig
>@@ -65,3 +65,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2088aqds_tfa_defconfig
>b/configs/ls2088aqds_tfa_defconfig
>index 5620e8a786..bbd76e31d6 100644
>--- a/configs/ls2088aqds_tfa_defconfig
>+++ b/configs/ls2088aqds_tfa_defconfig
>@@ -90,3 +90,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2088ardb_qspi_SECURE_BOOT_defconfig
>b/configs/ls2088ardb_qspi_SECURE_BOOT_defconfig
>index 10c139c98e..fb77c8942e 100644
>--- a/configs/ls2088ardb_qspi_SECURE_BOOT_defconfig
>+++ b/configs/ls2088ardb_qspi_SECURE_BOOT_defconfig
>@@ -67,3 +67,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2088ardb_qspi_defconfig
>b/configs/ls2088ardb_qspi_defconfig
>index 58fc6b2384..c09568b52a 100644
>--- a/configs/ls2088ardb_qspi_defconfig
>+++ b/configs/ls2088ardb_qspi_defconfig
>@@ -72,3 +72,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2088ardb_tfa_SECURE_BOOT_defconfig
>b/configs/ls2088ardb_tfa_SECURE_BOOT_defconfig
>index eed26fa898..032d6125f2 100644
>--- a/configs/ls2088ardb_tfa_SECURE_BOOT_defconfig
>+++ b/configs/ls2088ardb_tfa_SECURE_BOOT_defconfig
>@@ -83,3 +83,4 @@ CONFIG_RSA=y
>  CONFIG_SPL_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/ls2088ardb_tfa_defconfig
>b/configs/ls2088ardb_tfa_defconfig
>index 56cd02418c..522b381bb7 100644
>--- a/configs/ls2088ardb_tfa_defconfig
>+++ b/configs/ls2088ardb_tfa_defconfig
>@@ -88,3 +88,4 @@ CONFIG_DM_USB=y
>  CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/lx2160aqds_tfa_SECURE_BOOT_defconfig
>b/configs/lx2160aqds_tfa_SECURE_BOOT_defconfig
>index 54d88c88d5..75a6bdd19a 100644
>--- a/configs/lx2160aqds_tfa_SECURE_BOOT_defconfig
>+++ b/configs/lx2160aqds_tfa_SECURE_BOOT_defconfig
>@@ -86,3 +86,4 @@ CONFIG_RSA=y
>  CONFIG_SPL_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/lx2160aqds_tfa_defconfig
>b/configs/lx2160aqds_tfa_defconfig
>index d25d3e8b98..fafe42c559 100644
>--- a/configs/lx2160aqds_tfa_defconfig
>+++ b/configs/lx2160aqds_tfa_defconfig
>@@ -92,3 +92,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_WDT=y
>  CONFIG_WDT_SBSA=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/lx2160ardb_tfa_SECURE_BOOT_defconfig
>b/configs/lx2160ardb_tfa_SECURE_BOOT_defconfig
>index 1d61807c11..501e9ae44a 100644
>--- a/configs/lx2160ardb_tfa_SECURE_BOOT_defconfig
>+++ b/configs/lx2160ardb_tfa_SECURE_BOOT_defconfig
>@@ -77,3 +77,4 @@ CONFIG_RSA=y
>  CONFIG_SPL_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/lx2160ardb_tfa_defconfig
>b/configs/lx2160ardb_tfa_defconfig
>index a160cfe21e..4b8e7edf94 100644
>--- a/configs/lx2160ardb_tfa_defconfig
>+++ b/configs/lx2160ardb_tfa_defconfig
>@@ -87,3 +87,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_WDT=y
>  CONFIG_WDT_SBSA=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/lx2160ardb_tfa_stmm_defconfig
>b/configs/lx2160ardb_tfa_stmm_defconfig
>index 8b69a36dd9..06cfacab6d 100644
>--- a/configs/lx2160ardb_tfa_stmm_defconfig
>+++ b/configs/lx2160ardb_tfa_stmm_defconfig
>@@ -86,3 +86,4 @@ CONFIG_USB_XHCI_HCD=y
>  CONFIG_USB_XHCI_DWC3=y
>  CONFIG_EFI_MM_COMM_TEE=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/lx2162aqds_tfa_SECURE_BOOT_defconfig
>b/configs/lx2162aqds_tfa_SECURE_BOOT_defconfig
>index fcc78c6fe5..8dc601ff2c 100644
>--- a/configs/lx2162aqds_tfa_SECURE_BOOT_defconfig
>+++ b/configs/lx2162aqds_tfa_SECURE_BOOT_defconfig
>@@ -89,3 +89,4 @@ CONFIG_RSA=y
>  CONFIG_SPL_RSA=y
>  CONFIG_RSA_SOFTWARE_EXP=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/lx2162aqds_tfa_defconfig
>b/configs/lx2162aqds_tfa_defconfig
>index 42a3a3af44..d493bc1e7f 100644
>--- a/configs/lx2162aqds_tfa_defconfig
>+++ b/configs/lx2162aqds_tfa_defconfig
>@@ -96,3 +96,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_WDT=y
>  CONFIG_WDT_SBSA=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>diff --git a/configs/lx2162aqds_tfa_verified_boot_defconfig
>b/configs/lx2162aqds_tfa_verified_boot_defconfig
>index bf0ac38ff2..8ff6f8113e 100644
>--- a/configs/lx2162aqds_tfa_verified_boot_defconfig
>+++ b/configs/lx2162aqds_tfa_verified_boot_defconfig
>@@ -97,3 +97,4 @@ CONFIG_USB_XHCI_DWC3=y
>  CONFIG_WDT=y
>  CONFIG_WDT_SBSA=y
>  CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
>+CONFIG_FSL_USE_PCA9547_MUX=y
>--
>2.25.1


Regards
Priyanka


More information about the U-Boot mailing list