Hello ksi, k...@koi8.net wrote: > On Mon, 16 Feb 2009, Wolfgang Denk wrote: > >> Dear k...@koi8.net, >> >> In message <pine.lnx.4.64ksi.0902142019520.6...@home-gw.koi8.net> you wrote: [...] >>> And remember, the devil is in details. How are you going to assign >>> (initialize) that innocent looking "cur_adap_nr->hwadapnr"? How are you >>> going to work on an adapter other that "current" in a situation when you can >>> NOT change "current" adapter (e.g. perform all I2C layer initialization >>> while still running from flash?) Remember, this is plain C and there is no >> What makes you insist that we cannot change a variable if we need to >> be able to change one? > > It is NOT just variable. My approach uses i2c _BUS_, not _ADAPTER_. And > number of busses can be bigger than number of adapters (e.g. when some > busses a reached via muxes or switches.) When doing i2c_set_current_bus() > you are switching _NOT_ adapters, but busses. That involves not only > changing that global variable but also reprogramming muxes/switches for > i2c_set_current_bus() to be consistent and hardware independent. Otherwise
You have no i2c_set_current_bus() in your code! I think you mean i2c_set_current_bus(), right? And this function fails when running from flash! So, how can you switch busses with your patches when running from flash? Here your function: int i2c_set_bus_num(unsigned int bus) { #ifndef CONFIG_SYS_I2C_DIRECT_BUS int i; u_int8_t buf; #endif if ((bus >= CONFIG_SYS_NUM_I2C_BUSSES) || !(gd->flags & GD_FLG_RELOC)) return(-1); [...] This function wouldn;t work from flash ... 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