Skip to content

Bring in new I2C framework

Stephen Warren u-boot 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest0 of 3 patches 0 repliesNew

Patches in v1 No applies recorded yet

None of the 3 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [U-Boot] [PATCH 0/3] Bring in new I2C framework
Quoted 3 lines · Heiko Schocher

Hello Stephen,

On 29.10.2012 16:34, Stephen Warren wrote:

...

Quoted 34 lines
Quoted 4 lines

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);
[...]
?

Quoted 1 line

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).