On Thursday, September 15, 2011 04:26:17 AM Jason Hui wrote: > On Thu, Sep 15, 2011 at 10:07 AM, Marek Vasut <marek.va...@gmail.com> wrote: > > On Thursday, September 15, 2011 03:43:42 AM Jason Hui wrote: > >> On Thu, Sep 15, 2011 at 3:39 AM, Marek Vasut <marek.va...@gmail.com> wrote: > >> > On Friday, July 29, 2011 08:55:14 AM Jason Hui wrote: > >> >> Hi, Marek, > >> >> > >> >> On Thu, Jul 14, 2011 at 5:58 AM, Marek Vasut <marek.va...@gmail.com> wrote: > >> >> > Rewrite the mxc_i2c driver. > >> >> > * This version is much closer to Linux implementation. > >> >> > * Fixes IPG_PERCLK being incorrectly used as clock source > >> >> > * Fixes behaviour of the driver on iMX51 > >> >> > * Clean up coding style a bit ;-) > >> >> > >> >> why you change i2c clock from IPG_PERCLK to IPG_CLK? > >> >> > >> >> [...] > >> > > >> > Ok, I investigated a bit deeper and I suspect the clock.c is the > >> > culprit. > >> > > >> > Apparently, the PERCLK doesn't run at the frequency the clock.c > >> > reports it runs on. Therefore, the i2c miscalculates the divider etc > >> > -- falling crap model (waterfall model). > >> > >> But apparently, the i2c function clock should be IPG_PERCLK not IPG > >> clock. And Linux also fix it already. > > > > Then there's bulls**t in your mx51 and mx53 datasheet or what ? > > Please refer to MCIMX51RM.PDF, page 305, > Table 7-41. PERCLK-dependent Module Clock Sources > PERCLK-dependent Module Clocks Associated CCGR Register > uart1_perclk > CCGR1 > uart2_perclk > uart3_perclk > i2c1 clocks > i2c2 clocks > epit1_highfreq > CCGR2 > epit2_highfreq > pwm1_highfreq > pwm2_highfreq > gpt_highfreq > owire clocks
You see ... I'm starting to understand what is actually going wrong. The lowlevel_init.S is bloated with crap (why? why can't that be in cpu init C code ?) and there is this one part, where CBCDR is overwritten with a configurable value instead of hardcoded value. No documentation about that at all, but it's there ... and that's -- amongst other bugs -- my problem I assume. So I need to set this CONFIG_SYS_CLKTL_CBCDR to another magic value, now I get it. > > > besides, PERCLK > > is faster than IPGCLK on MX51 so it makes even less sense! > > I don't think PERCLK is always faster than IPG clock, it's configurable. > please refer to MCIMX51RM.PDF, page 307. Yea ... it's configurable via some undocumented macro in assembler code. Damn. Can you please comment on the other patches? Thanks > > >Can you please talk > > > > to the HW guys or whatever to clear this once and for all ? I smell noone > > really knows where the clock are sourced from and all this crap is just > > blind guessing. > > I have asked the IC module owner again. It confirms that I2C function > clock is ipg_perclk. > > Jason _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot