[PATCH 2/4] i2c: implement i2c_get_adapter()

Marc Kleine-Budde mkl at pengutronix.de
Mon May 24 18:01:22 EDT 2010


Hello,

Eric Bénard wrote:
> From: Sascha Hauer <s.hauer at pengutronix.de>
> 
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>

You have to add you S-o-b, if the patch goes through your hands.

Cheers, Marc
> ---
> v2 : add i2c_get_adapter to include/i2c/i2c.h
> 
>  drivers/i2c/i2c.c |   24 +++++++++++++++++++++++-
>  include/i2c/i2c.h |    2 ++
>  2 files changed, 25 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/i2c/i2c.c b/drivers/i2c/i2c.c
> index 32fd026..1fa114a 100644
> --- a/drivers/i2c/i2c.c
> +++ b/drivers/i2c/i2c.c
> @@ -39,7 +39,7 @@ struct boardinfo {
>  };
>  
>  static LIST_HEAD(board_list);
> -
> +static LIST_HEAD(adapter_list);
>  
>  /**
>   * i2c_transfer - execute a single or combined I2C message
> @@ -327,6 +327,23 @@ static void scan_boardinfo(struct i2c_adapter *adapter)
>  }
>  
>  /**
> + *
> + * i2c_get_adapter - get an i2c adapter from its busnum
> + *
> + * @param	busnum	the desired bus number
> + *
> + */
> +struct i2c_adapter *i2c_get_adapter(int busnum)
> +{
> +	struct i2c_adapter *adap;
> +
> +	list_for_each_entry(adap, &adapter_list, list)
> +		if (adap->nr == busnum)
> +			return adap;
> +	return NULL;
> +}
> +
> +/**
>   * i2c_register_master - register I2C master controller
>   *
>   * @param	master	initialized master, originally from i2c_alloc_master()
> @@ -345,6 +362,11 @@ static void scan_boardinfo(struct i2c_adapter *adapter)
>   */
>  int i2c_add_numbered_adapter(struct i2c_adapter *adapter)
>  {
> +	if (i2c_get_adapter(adapter->nr))
> +		return -EBUSY;
> +
> +	list_add_tail(&adapter_list, &adapter->list);
> +
>  	/* populate children from any i2c device tables */
>  	scan_boardinfo(adapter);
>  
> diff --git a/include/i2c/i2c.h b/include/i2c/i2c.h
> index 0760fdc..c031bbb 100644
> --- a/include/i2c/i2c.h
> +++ b/include/i2c/i2c.h
> @@ -66,6 +66,7 @@ struct i2c_adapter {
>  	struct device_d		*dev;	/* ptr to device */
>  	int			nr;	/* bus number */
>  	int (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num);
> +	struct list_head	list;
>  };
>  
>  
> @@ -120,6 +121,7 @@ static inline int i2c_register_board_info(int busnum,
>  }
>  #endif
>  extern int i2c_add_numbered_adapter(struct i2c_adapter *adapter);
> +struct i2c_adapter *i2c_get_adapter(int busnum);
>  
>  extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num);
>  extern int i2c_master_send(struct i2c_client *client, const char *buf, int count);


-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 260 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/barebox/attachments/20100525/4ea5f33d/attachment.sig>


More information about the barebox mailing list