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). _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot