[U-Boot] [u-boot v2] and i2c

Sascha Hauer s.hauer at pengutronix.de
Tue Apr 28 11:47:10 CEST 2009


Hi Heiko,

On Tue, Apr 28, 2009 at 09:36:46AM +0200, Heiko Schocher wrote:
> Hello Sascha,
> 
> I actually looked in the u-boot-v2.git in the i2c branch,
> because I wanted to look how things in v2 work, specially
> I2C Subsystem ... and I have a first question:

Note that the I2C branch is out of date and probably needs some
updating. That does not affect your current problem though.

> 
> - In ppc area, we start running from flash and have to relocate
>   code. Before setting up RAM, we maybe have to read SPD EEprom
>   over I2C for this. How could this work in v2? I see in
>   drivers/i2c/i2c-core.c in i2c_register_adapter () an
>   INIT_LIST_HEAD(&adap->clients);
> 
>   This could not work, when running from Flash, because we have no
>   usable RAM ...
>   So I looked how this device approach globally works, and found in
>   lib/driver.c in register_device() also:
> 
>   107
>   108         list_add_tail(&new_device->list, &device_list);
>   109         INIT_LIST_HEAD(&new_device->children);
>   110
> 
>   so would this device_driver approach in v2 actually only work,
>   if running from RAM?

Yes

> What if we need the devices earlier?

You would need portions of the driver which bypass the I2C framework.
I did something similar for the console (see
drivers/serial/serial_mpc5xxx.c). This is not particularly nice but I
see no other way handling this. If done with care you can reuse most
of the driver code.
Once the framework is initialized the normal functions can be used.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |


More information about the U-Boot mailing list