[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-i2c
Subject:    Re: [PATCH] i2c: mpc: Define unique I2C adapter names
From:       Guenter Roeck <linux () roeck-us ! net>
Date:       2013-07-18 21:34:24
Message-ID: 20130718213424.GB6237 () roeck-us ! net
[Download RAW message or body]

On Wed, Jul 10, 2013 at 12:03:21PM -0700, Guenter Roeck wrote:
> 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.
> 
ping ... any comments on this patch ?

Thanks,
Guenter

> 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: Guenter Roeck <linux@roeck-us.net>
> ---
>  drivers/i2c/busses/i2c-mpc.c |    5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
> index 7607dc0..99acf63 100644
> --- a/drivers/i2c/busses/i2c-mpc.c
> +++ b/drivers/i2c/busses/i2c-mpc.c
> @@ -609,7 +609,6 @@ static const struct i2c_algorithm mpc_algo = {
>  
>  static struct i2c_adapter mpc_ops = {
>  	.owner = THIS_MODULE,
> -	.name = "MPC adapter",
>  	.algo = &mpc_algo,
>  	.timeout = HZ,
>  };
> @@ -623,6 +622,7 @@ static int fsl_i2c_probe(struct platform_device *op)
>  	u32 clock = MPC_I2C_CLOCK_LEGACY;
>  	int result = 0;
>  	int plen;
> +	struct resource res;
>  
>  	match = of_match_device(mpc_i2c_of_match, &op->dev);
>  	if (!match)
> @@ -682,6 +682,9 @@ static int fsl_i2c_probe(struct platform_device *op)
>  	platform_set_drvdata(op, i2c);
>  
>  	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->adap.dev.parent = &op->dev;
>  	i2c->adap.dev.of_node = of_node_get(op->dev.of_node);
> -- 
> 1.7.9.7
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic