imx: Use MXC_I2C_CLK in imx i2c driver

i2c didn't work on imx25 due to missing MXC_IPG_PERCLK. Now using
MXC_I2C_CLK on all imx systems using i2c.

Signed-off-by: Matthias Weisser <weisserm@arcor.de>
Acked-by: Stefano Babic <sbabic@denx.de>
This commit is contained in:
Matthias Weisser 2012-09-24 02:46:53 +00:00 committed by Tom Rini
parent 8a57fdc640
commit e7bed5c2b3
9 changed files with 10 additions and 2 deletions

View file

@ -104,6 +104,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
case MXC_CSPI_CLK: case MXC_CSPI_CLK:
case MXC_UART_CLK: case MXC_UART_CLK:
case MXC_ESDHC_CLK: case MXC_ESDHC_CLK:
case MXC_I2C_CLK:
return mx31_get_ipg_clk(); return mx31_get_ipg_clk();
case MXC_IPU_CLK: case MXC_IPU_CLK:
return mx31_get_hsp_clk(); return mx31_get_hsp_clk();

View file

@ -357,6 +357,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
case MXC_IPG_CLK: case MXC_IPG_CLK:
return get_ipg_clk(); return get_ipg_clk();
case MXC_IPG_PERCLK: case MXC_IPG_PERCLK:
case MXC_I2C_CLK:
return get_ipg_per_clk(); return get_ipg_per_clk();
case MXC_UART_CLK: case MXC_UART_CLK:
return imx_get_uartclk(); return imx_get_uartclk();

View file

@ -482,6 +482,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
case MXC_IPG_CLK: case MXC_IPG_CLK:
return get_ipg_clk(); return get_ipg_clk();
case MXC_IPG_PERCLK: case MXC_IPG_PERCLK:
case MXC_I2C_CLK:
return get_ipg_per_clk(); return get_ipg_per_clk();
case MXC_UART_CLK: case MXC_UART_CLK:
return get_uart_clk(); return get_uart_clk();

View file

@ -357,6 +357,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
case MXC_IPG_CLK: case MXC_IPG_CLK:
return get_ipg_clk(); return get_ipg_clk();
case MXC_IPG_PERCLK: case MXC_IPG_PERCLK:
case MXC_I2C_CLK:
return get_ipg_per_clk(); return get_ipg_per_clk();
case MXC_UART_CLK: case MXC_UART_CLK:
return get_uart_clk(); return get_uart_clk();

View file

@ -46,6 +46,7 @@ enum mxc_clock {
MXC_UART_CLK, MXC_UART_CLK,
MXC_IPU_CLK, MXC_IPU_CLK,
MXC_ESDHC_CLK, MXC_ESDHC_CLK,
MXC_I2C_CLK,
}; };
unsigned int mxc_get_clock(enum mxc_clock clk); unsigned int mxc_get_clock(enum mxc_clock clk);

View file

@ -48,6 +48,7 @@ enum mxc_clock {
MXC_USB_CLK, MXC_USB_CLK,
MXC_CSPI_CLK, MXC_CSPI_CLK,
MXC_FEC_CLK, MXC_FEC_CLK,
MXC_I2C_CLK,
}; };
enum mxc_main_clock { enum mxc_main_clock {

View file

@ -36,6 +36,7 @@ enum mxc_clock {
MXC_DDR_CLK, MXC_DDR_CLK,
MXC_NFC_CLK, MXC_NFC_CLK,
MXC_PERIPH_CLK, MXC_PERIPH_CLK,
MXC_I2C_CLK,
}; };
u32 imx_get_uartclk(void); u32 imx_get_uartclk(void);

View file

@ -41,6 +41,7 @@ enum mxc_clock {
MXC_ESDHC4_CLK, MXC_ESDHC4_CLK,
MXC_SATA_CLK, MXC_SATA_CLK,
MXC_NFC_CLK, MXC_NFC_CLK,
MXC_I2C_CLK,
}; };
u32 imx_get_uartclk(void); u32 imx_get_uartclk(void);

View file

@ -98,7 +98,7 @@ static uint8_t i2c_imx_get_clk(unsigned int rate)
#endif #endif
/* Divider value calculation */ /* Divider value calculation */
i2c_clk_rate = mxc_get_clock(MXC_IPG_PERCLK); i2c_clk_rate = mxc_get_clock(MXC_I2C_CLK);
div = (i2c_clk_rate + rate - 1) / rate; div = (i2c_clk_rate + rate - 1) / rate;
if (div < i2c_clk_div[0][0]) if (div < i2c_clk_div[0][0])
clk_div = 0; clk_div = 0;
@ -142,7 +142,7 @@ unsigned int bus_i2c_get_bus_speed(void *base)
for (clk_div = 0; i2c_clk_div[clk_div][1] != clk_idx; clk_div++) for (clk_div = 0; i2c_clk_div[clk_div][1] != clk_idx; clk_div++)
; ;
return mxc_get_clock(MXC_IPG_PERCLK) / i2c_clk_div[clk_div][0]; return mxc_get_clock(MXC_I2C_CLK) / i2c_clk_div[clk_div][0];
} }
#define ST_BUS_IDLE (0 | (I2SR_IBB << 8)) #define ST_BUS_IDLE (0 | (I2SR_IBB << 8))