[U-Boot] [PATCH V3+] I2C: mxc_i2c rework

Jason Hui jason.hui at linaro.org
Thu Sep 15 04:26:17 CEST 2011


On Thu, Sep 15, 2011 at 10:07 AM, Marek Vasut <marek.vasut at 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.vasut at 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.vasut at 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

> 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.

>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

>


More information about the U-Boot mailing list