diff options
author | David Daney <david.daney@cavium.com> | 2012-04-12 17:14:22 -0400 |
---|---|---|
committer | Wolfram Sang <w.sang@pengutronix.de> | 2012-05-12 08:28:15 -0400 |
commit | 5a3ecd5f9877b963a581ca5d4495a1a24dafc88c (patch) | |
tree | 9a027ed9fa53e859f79b007f5e661324cf9bfd60 /drivers/i2c | |
parent | d9afca37dea077d11ed67fc7f93b95c003e58819 (diff) |
i2c: Add a struct device * parameter to i2c_add_mux_adapter()
And adjust all callers.
The new device parameter is used in the next patch to initialize the
mux's of_node so that its children may be automatically populated.
Signed-off-by: David Daney <david.daney@cavium.com>
Tested-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/i2c-mux.c | 19 | ||||
-rw-r--r-- | drivers/i2c/muxes/gpio-i2cmux.c | 3 | ||||
-rw-r--r-- | drivers/i2c/muxes/pca9541.c | 3 | ||||
-rw-r--r-- | drivers/i2c/muxes/pca954x.c | 2 |
4 files changed, 15 insertions, 12 deletions
diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c index d7a4833be416..26ab31dd742b 100644 --- a/drivers/i2c/i2c-mux.c +++ b/drivers/i2c/i2c-mux.c | |||
@@ -31,11 +31,11 @@ struct i2c_mux_priv { | |||
31 | struct i2c_algorithm algo; | 31 | struct i2c_algorithm algo; |
32 | 32 | ||
33 | struct i2c_adapter *parent; | 33 | struct i2c_adapter *parent; |
34 | void *mux_dev; /* the mux chip/device */ | 34 | void *mux_priv; /* the mux chip/device */ |
35 | u32 chan_id; /* the channel id */ | 35 | u32 chan_id; /* the channel id */ |
36 | 36 | ||
37 | int (*select)(struct i2c_adapter *, void *mux_dev, u32 chan_id); | 37 | int (*select)(struct i2c_adapter *, void *mux_priv, u32 chan_id); |
38 | int (*deselect)(struct i2c_adapter *, void *mux_dev, u32 chan_id); | 38 | int (*deselect)(struct i2c_adapter *, void *mux_priv, u32 chan_id); |
39 | }; | 39 | }; |
40 | 40 | ||
41 | static int i2c_mux_master_xfer(struct i2c_adapter *adap, | 41 | static int i2c_mux_master_xfer(struct i2c_adapter *adap, |
@@ -47,11 +47,11 @@ static int i2c_mux_master_xfer(struct i2c_adapter *adap, | |||
47 | 47 | ||
48 | /* Switch to the right mux port and perform the transfer. */ | 48 | /* Switch to the right mux port and perform the transfer. */ |
49 | 49 | ||
50 | ret = priv->select(parent, priv->mux_dev, priv->chan_id); | 50 | ret = priv->select(parent, priv->mux_priv, priv->chan_id); |
51 | if (ret >= 0) | 51 | if (ret >= 0) |
52 | ret = parent->algo->master_xfer(parent, msgs, num); | 52 | ret = parent->algo->master_xfer(parent, msgs, num); |
53 | if (priv->deselect) | 53 | if (priv->deselect) |
54 | priv->deselect(parent, priv->mux_dev, priv->chan_id); | 54 | priv->deselect(parent, priv->mux_priv, priv->chan_id); |
55 | 55 | ||
56 | return ret; | 56 | return ret; |
57 | } | 57 | } |
@@ -67,12 +67,12 @@ static int i2c_mux_smbus_xfer(struct i2c_adapter *adap, | |||
67 | 67 | ||
68 | /* Select the right mux port and perform the transfer. */ | 68 | /* Select the right mux port and perform the transfer. */ |
69 | 69 | ||
70 | ret = priv->select(parent, priv->mux_dev, priv->chan_id); | 70 | ret = priv->select(parent, priv->mux_priv, priv->chan_id); |
71 | if (ret >= 0) | 71 | if (ret >= 0) |
72 | ret = parent->algo->smbus_xfer(parent, addr, flags, | 72 | ret = parent->algo->smbus_xfer(parent, addr, flags, |
73 | read_write, command, size, data); | 73 | read_write, command, size, data); |
74 | if (priv->deselect) | 74 | if (priv->deselect) |
75 | priv->deselect(parent, priv->mux_dev, priv->chan_id); | 75 | priv->deselect(parent, priv->mux_priv, priv->chan_id); |
76 | 76 | ||
77 | return ret; | 77 | return ret; |
78 | } | 78 | } |
@@ -87,7 +87,8 @@ static u32 i2c_mux_functionality(struct i2c_adapter *adap) | |||
87 | } | 87 | } |
88 | 88 | ||
89 | struct i2c_adapter *i2c_add_mux_adapter(struct i2c_adapter *parent, | 89 | struct i2c_adapter *i2c_add_mux_adapter(struct i2c_adapter *parent, |
90 | void *mux_dev, u32 force_nr, u32 chan_id, | 90 | struct device *mux_dev, |
91 | void *mux_priv, u32 force_nr, u32 chan_id, | ||
91 | int (*select) (struct i2c_adapter *, | 92 | int (*select) (struct i2c_adapter *, |
92 | void *, u32), | 93 | void *, u32), |
93 | int (*deselect) (struct i2c_adapter *, | 94 | int (*deselect) (struct i2c_adapter *, |
@@ -102,7 +103,7 @@ struct i2c_adapter *i2c_add_mux_adapter(struct i2c_adapter *parent, | |||
102 | 103 | ||
103 | /* Set up private adapter data */ | 104 | /* Set up private adapter data */ |
104 | priv->parent = parent; | 105 | priv->parent = parent; |
105 | priv->mux_dev = mux_dev; | 106 | priv->mux_priv = mux_priv; |
106 | priv->chan_id = chan_id; | 107 | priv->chan_id = chan_id; |
107 | priv->select = select; | 108 | priv->select = select; |
108 | priv->deselect = deselect; | 109 | priv->deselect = deselect; |
diff --git a/drivers/i2c/muxes/gpio-i2cmux.c b/drivers/i2c/muxes/gpio-i2cmux.c index e5fa695eb0fa..fc5c1ef9b6ec 100644 --- a/drivers/i2c/muxes/gpio-i2cmux.c +++ b/drivers/i2c/muxes/gpio-i2cmux.c | |||
@@ -105,7 +105,8 @@ static int __devinit gpiomux_probe(struct platform_device *pdev) | |||
105 | for (i = 0; i < pdata->n_values; i++) { | 105 | for (i = 0; i < pdata->n_values; i++) { |
106 | u32 nr = pdata->base_nr ? (pdata->base_nr + i) : 0; | 106 | u32 nr = pdata->base_nr ? (pdata->base_nr + i) : 0; |
107 | 107 | ||
108 | mux->adap[i] = i2c_add_mux_adapter(parent, mux, nr, i, | 108 | mux->adap[i] = i2c_add_mux_adapter(parent, &pdev->dev, mux, |
109 | nr, i, | ||
109 | gpiomux_select, deselect); | 110 | gpiomux_select, deselect); |
110 | if (!mux->adap[i]) { | 111 | if (!mux->adap[i]) { |
111 | ret = -ENODEV; | 112 | ret = -ENODEV; |
diff --git a/drivers/i2c/muxes/pca9541.c b/drivers/i2c/muxes/pca9541.c index e0df9b6c66b3..8aacde1516ac 100644 --- a/drivers/i2c/muxes/pca9541.c +++ b/drivers/i2c/muxes/pca9541.c | |||
@@ -353,7 +353,8 @@ static int pca9541_probe(struct i2c_client *client, | |||
353 | force = 0; | 353 | force = 0; |
354 | if (pdata) | 354 | if (pdata) |
355 | force = pdata->modes[0].adap_id; | 355 | force = pdata->modes[0].adap_id; |
356 | data->mux_adap = i2c_add_mux_adapter(adap, client, force, 0, | 356 | data->mux_adap = i2c_add_mux_adapter(adap, &client->dev, client, |
357 | force, 0, | ||
357 | pca9541_select_chan, | 358 | pca9541_select_chan, |
358 | pca9541_release_chan); | 359 | pca9541_release_chan); |
359 | 360 | ||
diff --git a/drivers/i2c/muxes/pca954x.c b/drivers/i2c/muxes/pca954x.c index 0e37ef27aa12..f2dfe0d8fcce 100644 --- a/drivers/i2c/muxes/pca954x.c +++ b/drivers/i2c/muxes/pca954x.c | |||
@@ -226,7 +226,7 @@ static int pca954x_probe(struct i2c_client *client, | |||
226 | } | 226 | } |
227 | 227 | ||
228 | data->virt_adaps[num] = | 228 | data->virt_adaps[num] = |
229 | i2c_add_mux_adapter(adap, client, | 229 | i2c_add_mux_adapter(adap, &client->dev, client, |
230 | force, num, pca954x_select_chan, | 230 | force, num, pca954x_select_chan, |
231 | (pdata && pdata->modes[num].deselect_on_exit) | 231 | (pdata && pdata->modes[num].deselect_on_exit) |
232 | ? pca954x_deselect_mux : NULL); | 232 | ? pca954x_deselect_mux : NULL); |