aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/i2c/muxes/i2c-mux-pca954x.c23
1 files changed, 3 insertions, 20 deletions
diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c b/drivers/i2c/muxes/i2c-mux-pca954x.c
index bfabf985e830..e32fef560684 100644
--- a/drivers/i2c/muxes/i2c-mux-pca954x.c
+++ b/drivers/i2c/muxes/i2c-mux-pca954x.c
@@ -46,7 +46,6 @@
46#include <linux/of.h> 46#include <linux/of.h>
47#include <linux/of_device.h> 47#include <linux/of_device.h>
48#include <linux/of_irq.h> 48#include <linux/of_irq.h>
49#include <linux/platform_data/pca954x.h>
50#include <linux/pm.h> 49#include <linux/pm.h>
51#include <linux/slab.h> 50#include <linux/slab.h>
52#include <linux/spinlock.h> 51#include <linux/spinlock.h>
@@ -348,14 +347,13 @@ static int pca954x_probe(struct i2c_client *client,
348 const struct i2c_device_id *id) 347 const struct i2c_device_id *id)
349{ 348{
350 struct i2c_adapter *adap = client->adapter; 349 struct i2c_adapter *adap = client->adapter;
351 struct pca954x_platform_data *pdata = dev_get_platdata(&client->dev);
352 struct device *dev = &client->dev; 350 struct device *dev = &client->dev;
353 struct device_node *np = dev->of_node; 351 struct device_node *np = dev->of_node;
354 bool idle_disconnect_dt; 352 bool idle_disconnect_dt;
355 struct gpio_desc *gpio; 353 struct gpio_desc *gpio;
356 int num, force, class;
357 struct i2c_mux_core *muxc; 354 struct i2c_mux_core *muxc;
358 struct pca954x *data; 355 struct pca954x *data;
356 int num;
359 int ret; 357 int ret;
360 358
361 if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_BYTE)) 359 if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_BYTE))
@@ -422,24 +420,9 @@ static int pca954x_probe(struct i2c_client *client,
422 420
423 /* Now create an adapter for each channel */ 421 /* Now create an adapter for each channel */
424 for (num = 0; num < data->chip->nchans; num++) { 422 for (num = 0; num < data->chip->nchans; num++) {
425 bool idle_disconnect_pd = false; 423 data->deselect |= idle_disconnect_dt << num;
426
427 force = 0; /* dynamic adap number */
428 class = 0; /* no class by default */
429 if (pdata) {
430 if (num < pdata->num_modes) {
431 /* force static number */
432 force = pdata->modes[num].adap_id;
433 class = pdata->modes[num].class;
434 } else
435 /* discard unconfigured channels */
436 break;
437 idle_disconnect_pd = pdata->modes[num].deselect_on_exit;
438 }
439 data->deselect |= (idle_disconnect_pd ||
440 idle_disconnect_dt) << num;
441 424
442 ret = i2c_mux_add_adapter(muxc, force, num, class); 425 ret = i2c_mux_add_adapter(muxc, 0, num, 0);
443 if (ret) 426 if (ret)
444 goto fail_cleanup; 427 goto fail_cleanup;
445 } 428 }