[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