[U-Boot] [PATCH 0/3] Bring in new I2C framework

Stephen Warren swarren at wwwdotorg.org
Tue Oct 30 17:50:56 CET 2012


On 10/29/2012 11:57 PM, Heiko Schocher wrote:
> Hello Stephen,
> 
> On 29.10.2012 16:34, Stephen Warren wrote:
...
>> If there are e.g. 4 I2C controllers in an SoC, the driver needs to know
>> which one is in use. Passing that information directly to the driver
>> functions is much simple than requiring the SoC I2C driver to go grovel
>> in some I2C core global variables to find out the same information.
> 
> Ah, do you mean we should change the i2c adapter struct from:
> 
> struct i2c_adapter {
>        void            (*init)(int speed, int slaveaddr);
>        int             (*probe)(uint8_t chip);
>        int             (*read)(uint8_t chip, uint addr, int alen,
>                                uint8_t *buffer, int len);
>        int             (*write)(uint8_t chip, uint addr, int alen,
>                                uint8_t *buffer, int len);
>        uint            (*set_bus_speed)(uint speed);
> [...]
> 
> to
> 
> struct i2c_adapter {
>        void            (*init)(struct i2c_adapter *adap, int speed, int
> slaveaddr);
>        int             (*probe)(struct i2c_adapter *adap, uint8_t chip);
>        int             (*read)(struct i2c_adapter *adap, uint8_t chip,
> uint addr, int alen,
>                                uint8_t *buffer, int len);
>        int             (*write)(struct i2c_adapter *adap, uint8_t chip,
> uint addr, int alen,
>                                uint8_t *buffer, int len);
>        uint            (*set_bus_speed)(struct i2c_adapter *adap, uint
> speed);
> [...]
> ?
> 
> We can do this. Simon suggested this too ...

Yes, exactly. (the functions will need some way to get information out
of the struct i2c_adapter; I assume there's some kind of driver_private
field in there too).


More information about the U-Boot mailing list