From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Tue, 30 Oct 2012 06:44:02 +0100 Subject: [U-Boot] [PATCH 0/3] Bring in new I2C framework In-Reply-To: References: <1350927621-12481-1-git-send-email-hs@denx.de> <508A2420.2000207@denx.de> <508E4FFB.2010008@denx.de> Message-ID: <508F6922.10508@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello Simon, On 29.10.2012 14:48, Simon Glass wrote: > Hi Heiko, > > On Mon, Oct 29, 2012 at 2:44 AM, Heiko Schocher wrote: >> Hello Simon, >> >> >> On 26.10.2012 18:08, Simon Glass wrote: >>> >>> On Thu, Oct 25, 2012 at 10:48 PM, Heiko Schocher wrote: >>>> >>>> Hello Simon, >>>> >>>> >>>> On 25.10.2012 23:37, Simon Glass wrote: >>>>> >>>>> >>>>> On Mon, Oct 22, 2012 at 10:40 AM, Heiko Schocher 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