From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Fri, 27 Jan 2017 08:24:03 +0100 Subject: [U-Boot] i2c_set_bus_num freeze In-Reply-To: References: <588AECAD.20009@denx.de> Message-ID: <588AF593.3050204@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 Ran, Am 27.01.2017 um 08:08 schrieb Ran Shalit: > > > On Fri, Jan 27, 2017 at 8:46 AM, Heiko Schocher > wrote: > > Hello Ran, > > Am 26.01.2017 um 18:42 schrieb Ran Shalit: > > Hello, > > I have some issue in u-boot trying to access bus #1. > > > On which hardware? Is the board in mainline? > > > Yes, it's TI's dm8148 (ti81xx, ti814x) Which defconfig do you use? > I can access bus #0, #2 with i2c dev 0/2 > > I can also access bus #0,1,2 from linux. > > But on trying to access i2c #1 in u-boot in hangs: > > The function i2c_set_bus_num get stuck . > > > ret = i2c_set_bus_num(1); > > <<------- never gets here ......... > if (ret) > printf("Failure changing bus number (%d)\n", ret); > > It hangs in i2c_set_bus_num->i2c_init-> > > ...... > > printf("i2c_init 8\n"); > > > You see this printf? > > Yes, it seems to get stuck here: > > if (readw (I2C_CON) & I2C_CON_EN) { > <<--------- we never gets here !!!!!!!!!!!!!!!!!!!!!!!!!!! > writew (0, I2C_CON); > > > > bus_initialized[current_bus] = 1; > if (readw (I2C_CON) & I2C_CON_EN) { Hmm... if I search for "bus_initialized" in mainline code: $ grep -lr bus_initialized drivers/i2c/ drivers/i2c/mv_i2c.c I only find the mv_i2c driver ... do you use current mainline code? > writew (0, I2C_CON); > udelay (50000); > } > > writew(psc, I2C_PSC); > writew(scll, I2C_SCLL); > writew(sclh, I2C_SCLH); > > /* own address */ > writew (slaveadd, I2C_OA); > writew (I2C_CON_EN, I2C_CON); > > printf("i2c_init 9\n"); <<------ never get printed .................. > > I have seen a similar question, yet I am doing this access after u-boot > complete, and command prompt. > > Is anyone familiar with this ? > > > Hmm.. no reason, why the last printf should not come ... > > As I do not know, on which hw ... I just can speculate ... > > Is the clock for the i2c subsystem 1 in the SoC enabled? > > > TI's DM8148. > I remember that I once used that code and it works, so I quite amazed that it stopped working now. > The board had some changes from that time when I tried the code, and the sw too some minor changes > (i2c eerom added in bus #0), but I really don't understand why it doesn't work any more :( > > It might be clock issue, I'll check. Thanks! bye, Heiko > > > bye, > Heiko > > > Regards, > > Ran > _______________________________________________ > U-Boot mailing list > U-Boot at lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot > > > -- > DENX Software Engineering GmbH, Managing Director: Wolfgang Denk > HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany > > -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany