Hello Simon,

On 29.10.2012 14:48, Simon Glass wrote:
Hi Heiko,

On Mon, Oct 29, 2012 at 2:44 AM, Heiko Schocher<h...@denx.de>  wrote:
Hello Simon,


On 26.10.2012 18:08, Simon Glass wrote:

On Thu, Oct 25, 2012 at 10:48 PM, Heiko Schocher<h...@denx.de>   wrote:

Hello Simon,


On 25.10.2012 23:37, Simon Glass wrote:


On Mon, Oct 22, 2012 at 10:40 AM, Heiko Schocher<h...@denx.de>    wrote:

[...]

2. The init is a bit odd, in that we can call init() repeatedly.
Perhaps that function should be renamed to reset, and the init should
be used for calling just once at the start?



What do you mean here exactly? I couldnĀ“t parse this ...


Well there is start-of-day setup, which I think should be called init.
This is done once on boot for each i2c adapter.


Hmm... I am not sure if this is only done on boot, because we should
"close" or "deinit" an adapter if not used any more in U-Boot as the
U-Boot principle says:

http://www.denx.de/wiki/view/U-Boot/DesignPrinciples#2_Keep_it_Fast

So I want to add in future some "deinit" to every adapter, and
call it from i2c_set_bus() when switching to another i2c adapter ...

Well deinit() should be probably be done before finishing U-Boot, not
after every transaction, since you don't know that the current
transaction will be the last.

Not after every transaction, only when switching to another adapter,
or before booting linux ...

When using FDT, you need to look up the available i2c ports in the
driver, and this should be done once at the start. If the i2c core can
call a suitable init function then this is easier, rather than us
having to keep track of whether the init is done or not.

Dummy question, why is this needed when using FDT?

And then there is the i2c_init() which seems to be called whenever we
feel like it - e.g. to change speed. I suggest that we use init() to
mean start-of-day init and reset(), or similar, to mean any post-init.
I am not suggest that for this series, just as a future effort.


Yes, that should be changed. We do not need an init() in the i2c
API, as i2c_set_bus_num() do this for us (and later also the deinit())

We just need a set/get_speed() and a deblock()/reset() ?

Maybe a step in the API cleanup?

Yes, a future step I think. I feel that i2c is one of the darker
corners of U-Boot and so am keen to get this tidied up.

Patches are welcome! Let us bring in the new framework, clean up
the i2c API / maybe DM integration, then we are on a good way I
think ...

[...]

bye,
Heiko
--
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to