[U-Boot] [PATCH] imx: Use MXC_I2C_CLK in imx i2c driver

Benoît Thébaudeau benoit.thebaudeau at advansee.com
Mon Sep 24 15:08:56 CEST 2012


Hi Matthias,

On Monday, September 24, 2012 2:46:53 PM, Matthias Weisser wrote:
> 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 at arcor.de>
> ---
>  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(-)
> 
> diff --git a/arch/arm/cpu/arm1136/mx31/generic.c
> b/arch/arm/cpu/arm1136/mx31/generic.c
> index 93f429c..b9f9b43 100644
> --- a/arch/arm/cpu/arm1136/mx31/generic.c
> +++ b/arch/arm/cpu/arm1136/mx31/generic.c
> @@ -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();
> diff --git a/arch/arm/cpu/arm1136/mx35/generic.c
> b/arch/arm/cpu/arm1136/mx35/generic.c
> index ef65176..7dc1a8e 100644
> --- a/arch/arm/cpu/arm1136/mx35/generic.c
> +++ b/arch/arm/cpu/arm1136/mx35/generic.c
> @@ -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();
> diff --git a/arch/arm/cpu/armv7/mx5/clock.c
> b/arch/arm/cpu/armv7/mx5/clock.c
> index c67c3cf..8fa737a 100644
> --- a/arch/arm/cpu/armv7/mx5/clock.c
> +++ b/arch/arm/cpu/armv7/mx5/clock.c
> @@ -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();
> diff --git a/arch/arm/cpu/armv7/mx6/clock.c
> b/arch/arm/cpu/armv7/mx6/clock.c
> index fddb373..44a81b2 100644
> --- a/arch/arm/cpu/armv7/mx6/clock.c
> +++ b/arch/arm/cpu/armv7/mx6/clock.c
> @@ -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();
> diff --git a/arch/arm/include/asm/arch-mx31/clock.h
> b/arch/arm/include/asm/arch-mx31/clock.h
> index 9468b45..1dbb8da 100644
> --- a/arch/arm/include/asm/arch-mx31/clock.h
> +++ b/arch/arm/include/asm/arch-mx31/clock.h
> @@ -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);
> diff --git a/arch/arm/include/asm/arch-mx35/clock.h
> b/arch/arm/include/asm/arch-mx35/clock.h
> index eb7458a..2eff08d 100644
> --- a/arch/arm/include/asm/arch-mx35/clock.h
> +++ b/arch/arm/include/asm/arch-mx35/clock.h
> @@ -48,6 +48,7 @@ enum mxc_clock {
>  	MXC_USB_CLK,
>  	MXC_CSPI_CLK,
>  	MXC_FEC_CLK,
> +	MXC_I2C_CLK,
>  };
>  
>  enum mxc_main_clock {
> diff --git a/arch/arm/include/asm/arch-mx5/clock.h
> b/arch/arm/include/asm/arch-mx5/clock.h
> index 8d8fa18..21febd8 100644
> --- a/arch/arm/include/asm/arch-mx5/clock.h
> +++ b/arch/arm/include/asm/arch-mx5/clock.h
> @@ -36,6 +36,7 @@ enum mxc_clock {
>  	MXC_DDR_CLK,
>  	MXC_NFC_CLK,
>  	MXC_PERIPH_CLK,
> +	MXC_I2C_CLK,
>  };
>  
>  u32 imx_get_uartclk(void);
> diff --git a/arch/arm/include/asm/arch-mx6/clock.h
> b/arch/arm/include/asm/arch-mx6/clock.h
> index c55c18d..2af04f0 100644
> --- a/arch/arm/include/asm/arch-mx6/clock.h
> +++ b/arch/arm/include/asm/arch-mx6/clock.h
> @@ -41,6 +41,7 @@ enum mxc_clock {
>  	MXC_ESDHC4_CLK,
>  	MXC_SATA_CLK,
>  	MXC_NFC_CLK,
> +	MXC_I2C_CLK,
>  };
>  
>  u32 imx_get_uartclk(void);
> diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c
> index 73d8958..18270b9 100644
> --- a/drivers/i2c/mxc_i2c.c
> +++ b/drivers/i2c/mxc_i2c.c
> @@ -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))

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

Best regards,
Benoît


More information about the U-Boot mailing list