From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Wed, 27 Aug 2014 06:52:16 +0200 Subject: [U-Boot] [PATCH v2 11/40] i2c: Initialize the correct bus In-Reply-To: <1409067268-956-12-git-send-email-thierry.reding@gmail.com> References: <1409067268-956-1-git-send-email-thierry.reding@gmail.com> <1409067268-956-12-git-send-email-thierry.reding@gmail.com> Message-ID: <53FD6400.2070909@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 Thierry, Am 26.08.2014 17:33, schrieb Thierry Reding: > From: Thierry Reding > > i2c_bus_init() takes a bus number but relies on the currently selected > bus to determine which adapter to initialize. Make the function use the > bus passed in as parameter rather than the currently selected bus. While > at it, keep a pointer to the specified bus to avoid having to look it up > repeatedly. > > Signed-off-by: Thierry Reding > --- > drivers/i2c/i2c_core.c | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) Why you could not use the current CONFIG_SYS_I2C API and init a bus with i2c_set_bus_num()? i2c_init_bus() is deprecated and should be removed if all i2c drivers are ported to the CONFIG_SYS_I2C framework ... bye, Heiko > diff --git a/drivers/i2c/i2c_core.c b/drivers/i2c/i2c_core.c > index 18d6736601c1..cca455bc9c63 100644 > --- a/drivers/i2c/i2c_core.c > +++ b/drivers/i2c/i2c_core.c > @@ -214,17 +214,20 @@ static int i2c_mux_disconnet_all(void) > * Initializes one bus. Will initialize the parent adapter. No current bus > * changes, no mux (if any) setup. > */ > -static void i2c_init_bus(unsigned int bus_no, int speed, int slaveaddr) > +static void i2c_init_bus(unsigned int bus, int speed, int slaveaddr) > { > - if (bus_no>= CONFIG_SYS_NUM_I2C_BUSES) > + struct i2c_adapter *adapter; > + > + if (bus>= CONFIG_SYS_NUM_I2C_BUSES) > return; > > - I2C_ADAP->init(I2C_ADAP, speed, slaveaddr); > + adapter = i2c_get_adapter(I2C_ADAPTER(bus)); > + adapter->init(adapter, speed, slaveaddr); > > if (gd->flags& GD_FLG_RELOC) { > - I2C_ADAP->init_done = 1; > - I2C_ADAP->speed = speed; > - I2C_ADAP->slaveaddr = slaveaddr; > + adapter->init_done = 1; > + adapter->speed = speed; > + adapter->slaveaddr = slaveaddr; > } > } > -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany