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

Jason Hui jason.hui at linaro.org
Thu Sep 15 03:43:42 CEST 2011


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.

commit 9d73242458d9a2fe26e2e240488063d414eacb1c
Author: Lothar Waßmann <LW at KARO-electronics.de>
Date:   Mon Jul 4 15:52:17 2011 +0200

    mach-mx5: fix the I2C clock parents

    The clock from which the I2C timing is derived is the ipg_perclk
not ipg_clk.

    I2C bus frequency was lower by a factor of ~8 due to the clock divider
    calculation being based on 66.5MHz IPG clock while the bus actually
    uses 8MHz ipg_perclk.

    Kernel version: 3.0.0-rc2 branch 'imx-for-next' of
git://git.pengutronix.de/git/imx/linux-2.6

    Signed-off-by: Lothar Waßmann <LW at KARO-electronics.de>
    Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>

>
> Anyway, Jason, can you look into that clock problem? I think there are more than
> just perclk miscalculated.

OK, I will check that part.

Jason

>
> Cheers
>


More information about the U-Boot mailing list