Hello, Eric Bénard wrote: > From: Sascha Hauer > > Signed-off-by: Sascha Hauer 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 |