Hi
On 27 Jan 2017 3:13 p.m., "Ran Shalit" <ransha...@gmail.com> wrote: On Fri, Jan 27, 2017 at 9:08 AM, Ran Shalit <ransha...@gmail.com> wrote: > > > On Fri, Jan 27, 2017 at 8:46 AM, Heiko Schocher <h...@denx.de> 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) > >> >> >> 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) { >>> 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. > > I still don't understand what reason for it to get stuck in: if (readw (I2C_CON) & I2C_CON_EN) It's a simple register reading, Right ? So why should it hangs after calling ? Regards, Ran If the clock is not enable for the bus it can not work. Please check if you need to declare the i2c bus in use Michael >> bye, >> Heiko >> >> >>> Regards, >>> >>> Ran >>> _______________________________________________ >>> U-Boot mailing list >>> U-Boot@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 >> > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot