i2c: imx: update i2c clock divider for each transaction
authorFugang Duan <B38611@freescale.com>
Tue, 20 May 2014 02:21:45 +0000 (10:21 +0800)
committerWolfram Sang <wsa@the-dreams.de>
Mon, 2 Jun 2014 17:18:33 +0000 (19:18 +0200)
commit9b2a6da33ccb1bc0d68f4319cef7c7299727ac4d
tree7a8f88926c912c9f23d96432260cf23795703e60
parent054b62d9f25c903958749e4cea25261324a7a2a4
i2c: imx: update i2c clock divider for each transaction

Since IMX serial SOCs support low bus freq mode, some clocks freq
may change to save power. I2C needs to check the clock source and
update the divider.

For example:
i.MX6SL I2C clk is from IPG_PERCLK which is sourced from IPG_CLK.
Under normal operation, IPG_CLK is 66MHz, ipg_perclk is at 22MHz.
In low bus freq mode, IPG_CLK is at 12MHz and IPG_PERCLK is down
to 4MHz. So the I2C driver must update the divider register for
each transaction when the current IPG_PERCLK is not equal to the
clock of previous transaction.

Signed-off-by: Fugang Duan <B38611@freescale.com>
[wsa: removed an outdated comment and simplified debug output]
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-imx.c