diff -urpN a/drivers/i2c/muxes/Kconfig b/drivers/i2c/muxes/Kconfig
--- a/drivers/i2c/muxes/Kconfig	2019-08-16 08:12:54.000000000 +0000
+++ b/drivers/i2c/muxes/Kconfig	2019-08-21 17:52:53.157929606 +0000
@@ -73,6 +73,13 @@ config I2C_MUX_PCA954x
 	  This driver can also be built as a module.  If so, the module
 	  will be called i2c-mux-pca954x.
 
+config I2C_MUX_PCA954X_DESELECT_ON_EXIT
+       bool "Enable deselect-on-exit feature for PCA954X devices."
+       depends on I2C_MUX_PCA954x
+       help
+          If you say yes here you enable the deselect-on-exit feature in
+          the pca954x i2c driver.
+
 config I2C_MUX_PINCTRL
 	tristate "pinctrl-based I2C multiplexer"
 	depends on PINCTRL
diff -urpN a/drivers/i2c/muxes/i2c-mux-pca954x.c b/drivers/i2c/muxes/i2c-mux-pca954x.c
--- a/drivers/i2c/muxes/i2c-mux-pca954x.c	2019-08-16 08:12:54.000000000 +0000
+++ b/drivers/i2c/muxes/i2c-mux-pca954x.c	2019-08-21 17:52:53.157929606 +0000
@@ -255,8 +255,10 @@ static int pca954x_deselect_mux(struct i
 	struct pca954x *data = i2c_mux_priv(muxc);
 	struct i2c_client *client = data->client;
 
+#if !defined(CONFIG_I2C_MUX_PCA954X_DESELECT_ON_EXIT)
 	if (!(data->deselect & (1 << chan)))
 		return 0;
+#endif
 
 	/* Deselect active channel */
 	data->last_chan = 0;
