diff options
| -rw-r--r-- | drivers/i2c/muxes/i2c-mux-pca954x.c | 23 |
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 | } |
