[PATCH v5 2/5] ARM: imx: imx8mp: Enable support for i2c5 and i2c6 on i.MX8MP

Peng Fan peng.fan at oss.nxp.com
Wed Oct 26 15:00:16 CEST 2022



On 10/25/2022 5:54 PM, Martyn Welch wrote:
> The i.MX8MP SoC contains 2 more i2c buses. Add support for the
> configuration of these buses.
> 
> Signed-off-by: Martyn Welch <martyn.welch at collabora.com>
> ---
> 
> Changes in v2:
>   - None
> 
> Changes in v3:
>   - None
> 
> Changes in v4:
>   - None
> 
> Changes in v5:
>   - None
> 
>   arch/arm/include/asm/arch-imx8m/imx-regs.h |  4 ++++
>   arch/arm/mach-imx/i2c-mxv7.c               |  6 ++++++
>   arch/arm/mach-imx/imx8m/clock_imx8mm.c     | 12 +++++++++---
>   3 files changed, 19 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/include/asm/arch-imx8m/imx-regs.h b/arch/arm/include/asm/arch-imx8m/imx-regs.h
> index c46d4f7e00..6595d97f0a 100644
> --- a/arch/arm/include/asm/arch-imx8m/imx-regs.h
> +++ b/arch/arm/include/asm/arch-imx8m/imx-regs.h
> @@ -44,6 +44,10 @@
>   #define I2C3_BASE_ADDR		0x30A40000
>   #define I2C4_BASE_ADDR		0x30A50000
>   #define UART4_BASE_ADDR		0x30A60000
> +#ifdef CONFIG_IMX8MP
> +#define I2C5_BASE_ADDR          0x30AD0000
> +#define I2C6_BASE_ADDR          0x30AE0000
> +#endif
>   #define USDHC1_BASE_ADDR	0x30B40000
>   #define USDHC2_BASE_ADDR	0x30B50000
>   #define QSPI0_AMBA_BASE     0x08000000
> diff --git a/arch/arm/mach-imx/i2c-mxv7.c b/arch/arm/mach-imx/i2c-mxv7.c
> index 85d648b56e..a5866cf9f7 100644
> --- a/arch/arm/mach-imx/i2c-mxv7.c
> +++ b/arch/arm/mach-imx/i2c-mxv7.c
> @@ -70,6 +70,12 @@ static void * const i2c_bases[] = {
>   #ifdef I2C4_BASE_ADDR
>   	(void *)I2C4_BASE_ADDR,
>   #endif
> +#ifdef I2C5_BASE_ADDR
> +	(void *)I2C5_BASE_ADDR,
> +#endif
> +#ifdef I2C6_BASE_ADDR
> +	(void *)I2C6_BASE_ADDR,
> +#endif
>   };
>   
>   /* i2c_index can be from 0 - 3 */
> diff --git a/arch/arm/mach-imx/imx8m/clock_imx8mm.c b/arch/arm/mach-imx/imx8m/clock_imx8mm.c
> index 4db55f8608..64ad57e9b3 100644
> --- a/arch/arm/mach-imx/imx8m/clock_imx8mm.c
> +++ b/arch/arm/mach-imx/imx8m/clock_imx8mm.c
> @@ -36,11 +36,17 @@ void enable_ocotp_clk(unsigned char enable)
>   
>   int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
>   {
> -	/* 0 - 3 is valid i2c num */
> -	if (i2c_num > 3)
> +	u8 i2c_ccgr[6] = {
> +			CCGR_I2C1, CCGR_I2C2, CCGR_I2C3, CCGR_I2C4,
> +#if (IS_ENABLED(CONFIG_IMX8MP))
> +			CCGR_I2C5_8MP, CCGR_I2C6_8MP
> +#endif
> +	};
> +
> +	if (i2c_num > ARRAY_SIZE(i2c_ccgr))
>   		return -EINVAL;
>   
> -	clock_enable(CCGR_I2C1 + i2c_num, !!enable);
> +	clock_enable(i2c_ccgr[i2c_num], !!enable);
>   
>   	return 0;
>   }

With DM_CLK or SPL_DM_CLK enabled, this function is not needed anymore.
Do you have DM_CLK and SPL_DM_CLK enabled?

Regards,
Peng.


More information about the U-Boot mailing list