Commit 421476ae authored by Guenter Roeck's avatar Guenter Roeck Committed by Wolfram Sang

i2c: mpc: Define unique I2C adapter names

The I2C adapters on Freescale MPC107/824x/85xx/512x/52xx/83xx/86xx all
have the same name "MPC adapter". Since I2C adapter numbers can change
across reboots and even after loading/unloading an I2C bus master driver,
adapter names have to be used to identify adapters and thus should be
unique and well defined. Since this is not the case with this driver,
it is difficult if not impossible to identify a specific adapter from
user space on affected platforms.

To remedy the problem, use the adapter memory address as part of the
adapter name.

With this patch, adapter names are:
On P2020:
MPC adapter at 0xfff703000
MPC adapter at 0xfff703100

On P5040:
MPC adapter at 0xffe118000
MPC adapter at 0xffe118100
MPC adapter at 0xffe119000
MPC adapter at 0xffe119100
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
Acked-by: default avatarJean Delvare <khali@linux-fr.org>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent c66c4cc0
...@@ -609,7 +609,6 @@ static const struct i2c_algorithm mpc_algo = { ...@@ -609,7 +609,6 @@ static const struct i2c_algorithm mpc_algo = {
static struct i2c_adapter mpc_ops = { static struct i2c_adapter mpc_ops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "MPC adapter",
.algo = &mpc_algo, .algo = &mpc_algo,
.timeout = HZ, .timeout = HZ,
}; };
...@@ -623,6 +622,7 @@ static int fsl_i2c_probe(struct platform_device *op) ...@@ -623,6 +622,7 @@ static int fsl_i2c_probe(struct platform_device *op)
u32 clock = MPC_I2C_CLOCK_LEGACY; u32 clock = MPC_I2C_CLOCK_LEGACY;
int result = 0; int result = 0;
int plen; int plen;
struct resource res;
match = of_match_device(mpc_i2c_of_match, &op->dev); match = of_match_device(mpc_i2c_of_match, &op->dev);
if (!match) if (!match)
...@@ -682,6 +682,9 @@ static int fsl_i2c_probe(struct platform_device *op) ...@@ -682,6 +682,9 @@ static int fsl_i2c_probe(struct platform_device *op)
platform_set_drvdata(op, i2c); platform_set_drvdata(op, i2c);
i2c->adap = mpc_ops; i2c->adap = mpc_ops;
of_address_to_resource(op->dev.of_node, 0, &res);
scnprintf(i2c->adap.name, sizeof(i2c->adap.name),
"MPC adapter at 0x%llx", (unsigned long long)res.start);
i2c_set_adapdata(&i2c->adap, i2c); i2c_set_adapdata(&i2c->adap, i2c);
i2c->adap.dev.parent = &op->dev; i2c->adap.dev.parent = &op->dev;
i2c->adap.dev.of_node = of_node_get(op->dev.of_node); i2c->adap.dev.of_node = of_node_get(op->dev.of_node);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment