Skip to contentSkip to conversation

imx: Use MXC_I2C_CLK in imx i2c driver

PATCH New Matthias Weisser 3 participants 4 messages Sep 24, 2012 – Sep 25, 2012

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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.

---
 arch/arm/cpu/arm1136/mx31/generic.c    |    1 +
 arch/arm/cpu/arm1136/mx35/generic.c    |    1 +
 arch/arm/cpu/armv7/mx5/clock.c         |    1 +
 arch/arm/cpu/armv7/mx6/clock.c         |    1 +
 arch/arm/include/asm/arch-mx31/clock.h |    1 +
 arch/arm/include/asm/arch-mx35/clock.h |    1 +
 arch/arm/include/asm/arch-mx5/clock.h  |    1 +
 arch/arm/include/asm/arch-mx6/clock.h  |    1 +
 drivers/i2c/mxc_i2c.c                  |    4 ++--
 9 files changed, 10 insertions(+), 2 deletions(-)
arch/arm/cpu/arm1136/mx31/generic.c +1 -0
index 93f429c..b9f9b43 100644
@@ -104,6 +104,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_CSPI_CLK:
 	case MXC_UART_CLK:
 	case MXC_ESDHC_CLK:
+	case MXC_I2C_CLK:
 		return mx31_get_ipg_clk();
 	case MXC_IPU_CLK:
 		return mx31_get_hsp_clk();
arch/arm/cpu/arm1136/mx35/generic.c +1 -0
index ef65176..7dc1a8e 100644
@@ -357,6 +357,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_IPG_CLK:
 		return get_ipg_clk();
 	case MXC_IPG_PERCLK:
+	case MXC_I2C_CLK:
 		return get_ipg_per_clk();
 	case MXC_UART_CLK:
 		return imx_get_uartclk();
arch/arm/cpu/armv7/mx5/clock.c +1 -0
index c67c3cf..8fa737a 100644
@@ -482,6 +482,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_IPG_CLK:
 		return get_ipg_clk();
 	case MXC_IPG_PERCLK:
+	case MXC_I2C_CLK:
 		return get_ipg_per_clk();
 	case MXC_UART_CLK:
 		return get_uart_clk();
arch/arm/cpu/armv7/mx6/clock.c +1 -0
index fddb373..44a81b2 100644
@@ -355,6 +355,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_IPG_CLK:
 		return get_ipg_clk();
 	case MXC_IPG_PERCLK:
+	case MXC_I2C_CLK:
 		return get_ipg_per_clk();
 	case MXC_UART_CLK:
 		return get_uart_clk();
arch/arm/include/asm/arch-mx31/clock.h +1 -0
index 9468b45..1dbb8da 100644
@@ -46,6 +46,7 @@ enum mxc_clock {
 	MXC_UART_CLK,
 	MXC_IPU_CLK,
 	MXC_ESDHC_CLK,
+	MXC_I2C_CLK,
 };
 
 unsigned int mxc_get_clock(enum mxc_clock clk);
arch/arm/include/asm/arch-mx35/clock.h +1 -0
index eb7458a..2eff08d 100644
@@ -48,6 +48,7 @@ enum mxc_clock {
 	MXC_USB_CLK,
 	MXC_CSPI_CLK,
 	MXC_FEC_CLK,
+	MXC_I2C_CLK,
 };
 
 enum mxc_main_clock {
arch/arm/include/asm/arch-mx5/clock.h +1 -0
index 8d8fa18..21febd8 100644
@@ -36,6 +36,7 @@ enum mxc_clock {
 	MXC_DDR_CLK,
 	MXC_NFC_CLK,
 	MXC_PERIPH_CLK,
+	MXC_I2C_CLK,
 };
 
 u32 imx_get_uartclk(void);
arch/arm/include/asm/arch-mx6/clock.h +1 -0
index c55c18d..2af04f0 100644
@@ -41,6 +41,7 @@ enum mxc_clock {
 	MXC_ESDHC4_CLK,
 	MXC_SATA_CLK,
 	MXC_NFC_CLK,
+	MXC_I2C_CLK,
 };
 
 u32 imx_get_uartclk(void);
drivers/i2c/mxc_i2c.c +2 -2
index 73d8958..18270b9 100644
@@ -98,7 +98,7 @@ static uint8_t i2c_imx_get_clk(unsigned int rate)
 #endif
 
 	/* 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;
 	if (div < i2c_clk_div[0][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++)
 		;
 
-	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))
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/1 imx: Use MXC_I2C_CLK in imx i2c driver

Quoted 127 lines · Matthias Weisser

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

---
 arch/arm/cpu/arm1136/mx31/generic.c    |    1 +
 arch/arm/cpu/arm1136/mx35/generic.c    |    1 +
 arch/arm/cpu/armv7/mx5/clock.c         |    1 +
 arch/arm/cpu/armv7/mx6/clock.c         |    1 +
 arch/arm/include/asm/arch-mx31/clock.h |    1 +
 arch/arm/include/asm/arch-mx35/clock.h |    1 +
 arch/arm/include/asm/arch-mx5/clock.h  |    1 +
 arch/arm/include/asm/arch-mx6/clock.h  |    1 +
 drivers/i2c/mxc_i2c.c                  |    4 ++--
 9 files changed, 10 insertions(+), 2 deletions(-)
arch/arm/cpu/arm1136/mx31/generic.c +1 -0
index 93f429c..b9f9b43 100644
@@ -104,6 +104,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_CSPI_CLK:
 	case MXC_UART_CLK:
 	case MXC_ESDHC_CLK:
+	case MXC_I2C_CLK:
 		return mx31_get_ipg_clk();
 	case MXC_IPU_CLK:
 		return mx31_get_hsp_clk();
arch/arm/cpu/arm1136/mx35/generic.c +1 -0
index ef65176..7dc1a8e 100644
@@ -357,6 +357,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_IPG_CLK:
 		return get_ipg_clk();
 	case MXC_IPG_PERCLK:
+	case MXC_I2C_CLK:
 		return get_ipg_per_clk();
 	case MXC_UART_CLK:
 		return imx_get_uartclk();
arch/arm/cpu/armv7/mx5/clock.c +1 -0
index c67c3cf..8fa737a 100644
@@ -482,6 +482,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_IPG_CLK:
 		return get_ipg_clk();
 	case MXC_IPG_PERCLK:
+	case MXC_I2C_CLK:
 		return get_ipg_per_clk();
 	case MXC_UART_CLK:
 		return get_uart_clk();
arch/arm/cpu/armv7/mx6/clock.c +1 -0
index fddb373..44a81b2 100644
@@ -355,6 +355,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_IPG_CLK:
 		return get_ipg_clk();
 	case MXC_IPG_PERCLK:
+	case MXC_I2C_CLK:
 		return get_ipg_per_clk();
 	case MXC_UART_CLK:
 		return get_uart_clk();
arch/arm/include/asm/arch-mx31/clock.h +1 -0
index 9468b45..1dbb8da 100644
@@ -46,6 +46,7 @@ enum mxc_clock {
 	MXC_UART_CLK,
 	MXC_IPU_CLK,
 	MXC_ESDHC_CLK,
+	MXC_I2C_CLK,
 };
 
 unsigned int mxc_get_clock(enum mxc_clock clk);
arch/arm/include/asm/arch-mx35/clock.h +1 -0
index eb7458a..2eff08d 100644
@@ -48,6 +48,7 @@ enum mxc_clock {
 	MXC_USB_CLK,
 	MXC_CSPI_CLK,
 	MXC_FEC_CLK,
+	MXC_I2C_CLK,
 };
 
 enum mxc_main_clock {
arch/arm/include/asm/arch-mx5/clock.h +1 -0
index 8d8fa18..21febd8 100644
@@ -36,6 +36,7 @@ enum mxc_clock {
 	MXC_DDR_CLK,
 	MXC_NFC_CLK,
 	MXC_PERIPH_CLK,
+	MXC_I2C_CLK,
 };
 
 u32 imx_get_uartclk(void);
arch/arm/include/asm/arch-mx6/clock.h +1 -0
index c55c18d..2af04f0 100644
@@ -41,6 +41,7 @@ enum mxc_clock {
 	MXC_ESDHC4_CLK,
 	MXC_SATA_CLK,
 	MXC_NFC_CLK,
+	MXC_I2C_CLK,
 };
 
 u32 imx_get_uartclk(void);
drivers/i2c/mxc_i2c.c +1 -1
index 73d8958..18270b9 100644
@@ -98,7 +98,7 @@ static uint8_t i2c_imx_get_clk(unsigned int rate)
 #endif
 
 	/* 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;
 	if (div < i2c_clk_div[0][0])
 		clk_div = 0;

drivers/i2c/mxc_i2c.c unsigned int bus_i2c_get_bus_speed(void *base) · line 148

Quoted 8 lines
drivers/i2c/mxc_i2c.c +1 -1
@@ -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++)
 		;
 
-	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))

This is exactly the changes I had in mind !

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
#2 lore raw

PATCH 1/1 imx: Use MXC_I2C_CLK in imx i2c driver

In reply to Matthias Weisser

Hi Matthias,

Quoted 134 lines · Matthias Weisser

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

---
 arch/arm/cpu/arm1136/mx31/generic.c    |    1 +
 arch/arm/cpu/arm1136/mx35/generic.c    |    1 +
 arch/arm/cpu/armv7/mx5/clock.c         |    1 +
 arch/arm/cpu/armv7/mx6/clock.c         |    1 +
 arch/arm/include/asm/arch-mx31/clock.h |    1 +
 arch/arm/include/asm/arch-mx35/clock.h |    1 +
 arch/arm/include/asm/arch-mx5/clock.h  |    1 +
 arch/arm/include/asm/arch-mx6/clock.h  |    1 +
 drivers/i2c/mxc_i2c.c                  |    4 ++--
 9 files changed, 10 insertions(+), 2 deletions(-)
arch/arm/cpu/arm1136/mx31/generic.c +1 -0
index 93f429c..b9f9b43 100644
@@ -104,6 +104,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_CSPI_CLK:
 	case MXC_UART_CLK:
 	case MXC_ESDHC_CLK:
+	case MXC_I2C_CLK:
 		return mx31_get_ipg_clk();
 	case MXC_IPU_CLK:
 		return mx31_get_hsp_clk();
arch/arm/cpu/arm1136/mx35/generic.c +1 -0
index ef65176..7dc1a8e 100644
@@ -357,6 +357,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_IPG_CLK:
 		return get_ipg_clk();
 	case MXC_IPG_PERCLK:
+	case MXC_I2C_CLK:
 		return get_ipg_per_clk();
 	case MXC_UART_CLK:
 		return imx_get_uartclk();
arch/arm/cpu/armv7/mx5/clock.c +1 -0
index c67c3cf..8fa737a 100644
@@ -482,6 +482,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_IPG_CLK:
 		return get_ipg_clk();
 	case MXC_IPG_PERCLK:
+	case MXC_I2C_CLK:
 		return get_ipg_per_clk();
 	case MXC_UART_CLK:
 		return get_uart_clk();
arch/arm/cpu/armv7/mx6/clock.c +1 -0
index fddb373..44a81b2 100644
@@ -355,6 +355,7 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 	case MXC_IPG_CLK:
 		return get_ipg_clk();
 	case MXC_IPG_PERCLK:
+	case MXC_I2C_CLK:
 		return get_ipg_per_clk();
 	case MXC_UART_CLK:
 		return get_uart_clk();
arch/arm/include/asm/arch-mx31/clock.h +1 -0
index 9468b45..1dbb8da 100644
@@ -46,6 +46,7 @@ enum mxc_clock {
 	MXC_UART_CLK,
 	MXC_IPU_CLK,
 	MXC_ESDHC_CLK,
+	MXC_I2C_CLK,
 };
 
 unsigned int mxc_get_clock(enum mxc_clock clk);
arch/arm/include/asm/arch-mx35/clock.h +1 -0
index eb7458a..2eff08d 100644
@@ -48,6 +48,7 @@ enum mxc_clock {
 	MXC_USB_CLK,
 	MXC_CSPI_CLK,
 	MXC_FEC_CLK,
+	MXC_I2C_CLK,
 };
 
 enum mxc_main_clock {
arch/arm/include/asm/arch-mx5/clock.h +1 -0
index 8d8fa18..21febd8 100644
@@ -36,6 +36,7 @@ enum mxc_clock {
 	MXC_DDR_CLK,
 	MXC_NFC_CLK,
 	MXC_PERIPH_CLK,
+	MXC_I2C_CLK,
 };
 
 u32 imx_get_uartclk(void);
arch/arm/include/asm/arch-mx6/clock.h +1 -0
index c55c18d..2af04f0 100644
@@ -41,6 +41,7 @@ enum mxc_clock {
 	MXC_ESDHC4_CLK,
 	MXC_SATA_CLK,
 	MXC_NFC_CLK,
+	MXC_I2C_CLK,
 };
 
 u32 imx_get_uartclk(void);
drivers/i2c/mxc_i2c.c +1 -1
index 73d8958..18270b9 100644
@@ -98,7 +98,7 @@ static uint8_t i2c_imx_get_clk(unsigned int rate)
 #endif
 
 	/* 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;
 	if (div < i2c_clk_div[0][0])
 		clk_div = 0;

drivers/i2c/mxc_i2c.c unsigned int bus_i2c_get_bus_speed(void *base) · line 148

Quoted 8 lines
drivers/i2c/mxc_i2c.c +1 -1
@@ -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++)
 		;
 
-	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))

I've reviewed your patch. It's perfect.

Best regards,
Beno?t

#3 lore raw

PATCH 1/1 imx: Use MXC_I2C_CLK in imx i2c driver

In reply to Matthias Weisser
Quoted 5 lines · Matthias Weisser

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

---

Applied to u-boot-imx, next branch, thanks.

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================