[U-Boot] [PATCH 3/5] i2c: fix vf610 support

Stefano Babic sbabic at denx.de
Fri Jul 10 10:11:45 CEST 2015


Hi Albert,

On 19/06/2015 14:18, Albert ARIBAUD (3ADEV) wrote:
> Add support in mxc_i2c driver, iomux_v3 and vf610 architecture for the four
> I2C instances available in VF610.
> 
> Signed-off-by: Albert ARIBAUD (3ADEV) <albert.aribaud at 3adev.fr>
> ---
> 
>  arch/arm/include/asm/arch-vf610/crm_regs.h    |  3 +++
>  arch/arm/include/asm/arch-vf610/imx-regs.h    |  3 +++
>  arch/arm/include/asm/arch-vf610/iomux-vf610.h | 11 +++++++----
>  arch/arm/include/asm/imx-common/iomux-v3.h    |  2 ++
>  drivers/i2c/mxc_i2c.c                         |  3 ++-
>  5 files changed, 17 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/include/asm/arch-vf610/crm_regs.h b/arch/arm/include/asm/arch-vf610/crm_regs.h
> index fdb45e9..a46e396 100644
> --- a/arch/arm/include/asm/arch-vf610/crm_regs.h
> +++ b/arch/arm/include/asm/arch-vf610/crm_regs.h
> @@ -207,6 +207,7 @@ struct anadig_reg {
>  #define CCM_CCGR4_CCM_CTRL_MASK			(0x3 << 22)
>  #define CCM_CCGR4_GPC_CTRL_MASK			(0x3 << 24)
>  #define CCM_CCGR4_I2C0_CTRL_MASK		(0x3 << 12)
> +#define CCM_CCGR4_I2C1_CTRL_MASK		(0x3 << 14)
>  #define CCM_CCGR6_OCOTP_CTRL_MASK		(0x3 << 10)
>  #define CCM_CCGR6_DSPI2_CTRL_MASK		(0x3 << 24)
>  #define CCM_CCGR6_DSPI3_CTRL_MASK		(0x3 << 26)
> @@ -216,6 +217,8 @@ struct anadig_reg {
>  #define CCM_CCGR9_FEC0_CTRL_MASK		0x3
>  #define CCM_CCGR9_FEC1_CTRL_MASK		(0x3 << 2)
>  #define CCM_CCGR10_NFC_CTRL_MASK		0x3
> +#define CCM_CCGR10_I2C2_CTRL_MASK		(0x3 << 12)
> +#define CCM_CCGR10_I2C3_CTRL_MASK		(0x3 << 14)
>  
>  #define ANADIG_PLL7_CTRL_BYPASS         (1 << 16)
>  #define ANADIG_PLL7_CTRL_ENABLE         (1 << 13)
> diff --git a/arch/arm/include/asm/arch-vf610/imx-regs.h b/arch/arm/include/asm/arch-vf610/imx-regs.h
> index 7df3b1e..4366985 100644
> --- a/arch/arm/include/asm/arch-vf610/imx-regs.h
> +++ b/arch/arm/include/asm/arch-vf610/imx-regs.h
> @@ -75,6 +75,9 @@
>  #define ESAI_FIFO_BASE_ADDR	(AIPS0_BASE_ADDR + 0x00063000)
>  #define WDOG_BASE_ADDR		(AIPS0_BASE_ADDR + 0x00065000)
>  #define I2C1_BASE_ADDR		(AIPS0_BASE_ADDR + 0x00066000)
> +#define I2C2_BASE_ADDR		(AIPS0_BASE_ADDR + 0x00067000)
> +#define I2C3_BASE_ADDR		(AIPS0_BASE_ADDR + 0x000E6000)
> +#define I2C4_BASE_ADDR		(AIPS0_BASE_ADDR + 0x000E7000)
>  #define WKUP_BASE_ADDR		(AIPS0_BASE_ADDR + 0x0006A000)
>  #define CCM_BASE_ADDR		(AIPS0_BASE_ADDR + 0x0006B000)
>  #define GPC_BASE_ADDR		(AIPS0_BASE_ADDR + 0x0006C000)
> diff --git a/arch/arm/include/asm/arch-vf610/iomux-vf610.h b/arch/arm/include/asm/arch-vf610/iomux-vf610.h
> index 019307b..0e2bd53 100644
> --- a/arch/arm/include/asm/arch-vf610/iomux-vf610.h
> +++ b/arch/arm/include/asm/arch-vf610/iomux-vf610.h
> @@ -20,7 +20,8 @@
>  #define VF610_DDR_PAD_CTRL_1	(PAD_CTL_DSE_25ohm | \
>  				PAD_CTL_INPUT_DIFFERENTIAL)
>  #define VF610_I2C_PAD_CTRL	(PAD_CTL_PUS_47K_UP | PAD_CTL_DSE_50ohm | \
> -				PAD_CTL_SPEED_HIGH | PAD_CTL_OBE_IBE_ENABLE)
> +				PAD_CTL_SPEED_HIGH | PAD_CTL_ODE | \
> +				PAD_CTL_OBE_IBE_ENABLE)
>  #define VF610_NFC_IO_PAD_CTRL	(PAD_CTL_SPEED_MED | PAD_CTL_SRE | \
>  				PAD_CTL_DSE_50ohm | PAD_CTL_PUS_47K_UP | \
>  				PAD_CTL_OBE_IBE_ENABLE)
> @@ -110,6 +111,8 @@ enum {
>  	VF610_PAD_PTA29__ESDHC1_DAT3		= IOMUX_PAD(0x004c, 0x004c, 5, __NA_, 0, VF610_SDHC_PAD_CTRL),
>  	VF610_PAD_PTB14__I2C0_SCL		= IOMUX_PAD(0x0090, 0x0090, 2, 0x033c, 1, VF610_I2C_PAD_CTRL),
>  	VF610_PAD_PTB15__I2C0_SDA		= IOMUX_PAD(0x0094, 0x0094, 2, 0x0340, 1, VF610_I2C_PAD_CTRL),
> +	VF610_PAD_PTA22__I2C2_SCL		= IOMUX_PAD(0x0030, 0x0030, 6, 0x034c, 0, VF610_I2C_PAD_CTRL),
> +	VF610_PAD_PTA23__I2C2_SDA		= IOMUX_PAD(0x0034, 0x0034, 6, 0x0350, 0, VF610_I2C_PAD_CTRL),
>  	VF610_PAD_PTD31__NF_IO15		= IOMUX_PAD(0x00fc, 0x00fc, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL),
>  	VF610_PAD_PTD31__GPIO_63		= IOMUX_PAD(0x00fc, 0x00fc, 0, __NA_, 0, VF610_GPIO_PAD_CTRL),
>  	VF610_PAD_PTD30__NF_IO14		= IOMUX_PAD(0x0100, 0x0100, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL),
> @@ -146,10 +149,10 @@ enum {
>  	VF610_PAD_PTD12__GPIO_91		= IOMUX_PAD(0x016c, 0x016c, 0, __NA_, 0, VF610_GPIO_PAD_CTRL),
>  	VF610_PAD_PTD13__GPIO_92		= IOMUX_PAD(0x0170, 0x0170, 0, __NA_, 0, VF610_GPIO_PAD_CTRL),
>  	VF610_PAD_PTD22__NF_IO6			= IOMUX_PAD(0x0120, 0x0120, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL),
> -	VF610_PAD_PTD21__NF_IO5			= IOMUX_PAD(0x0124, 0x0124, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL), 
> -	VF610_PAD_PTD20__NF_IO4			= IOMUX_PAD(0x0128, 0x0128, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL), 
> +	VF610_PAD_PTD21__NF_IO5			= IOMUX_PAD(0x0124, 0x0124, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL),
> +	VF610_PAD_PTD20__NF_IO4			= IOMUX_PAD(0x0128, 0x0128, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL),
>  	VF610_PAD_PTD19__NF_IO3			= IOMUX_PAD(0x012c, 0x012c, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL),
> -	VF610_PAD_PTD18__NF_IO2			= IOMUX_PAD(0x0130, 0x0130, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL), 
> +	VF610_PAD_PTD18__NF_IO2			= IOMUX_PAD(0x0130, 0x0130, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL),
>  	VF610_PAD_PTD17__NF_IO1			= IOMUX_PAD(0x0134, 0x0134, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL),
>  	VF610_PAD_PTD16__NF_IO0			= IOMUX_PAD(0x0138, 0x0138, 2, __NA_, 0, VF610_NFC_IO_PAD_CTRL),
>  	VF610_PAD_PTB24__NF_WE_B		= IOMUX_PAD(0x0178, 0x0178, 5, __NA_, 0, VF610_NFC_CN_PAD_CTRL),
> diff --git a/arch/arm/include/asm/imx-common/iomux-v3.h b/arch/arm/include/asm/imx-common/iomux-v3.h
> index 2581019..5cde90f 100644
> --- a/arch/arm/include/asm/imx-common/iomux-v3.h
> +++ b/arch/arm/include/asm/imx-common/iomux-v3.h
> @@ -127,6 +127,8 @@ typedef u64 iomux_v3_cfg_t;
>  
>  #define PAD_CTL_SRE		(1 << 11)
>  
> +#define PAD_CTL_ODE		(1 << 10)
> +
>  #define PAD_CTL_DSE_150ohm	(1 << 6)
>  #define PAD_CTL_DSE_50ohm	(3 << 6)
>  #define PAD_CTL_DSE_25ohm	(6 << 6)
> diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c
> index b3c50aa..f1056e2 100644
> --- a/drivers/i2c/mxc_i2c.c
> +++ b/drivers/i2c/mxc_i2c.c
> @@ -523,7 +523,8 @@ static int bus_i2c_write(struct mxc_i2c_bus *i2c_bus, u8 chip, u32 addr,
>  #endif
>  
>  static struct mxc_i2c_bus mxc_i2c_buses[] = {
> -#if defined(CONFIG_LS102XA) || defined(CONFIG_FSL_LSCH3)
> +#if defined(CONFIG_LS102XA) || defined(CONFIG_FSL_LSCH3) || \
> +		defined(CONFIG_VF610)
>  	{ 0, I2C1_BASE_ADDR, I2C_QUIRK_FLAG },
>  	{ 1, I2C2_BASE_ADDR, I2C_QUIRK_FLAG },
>  	{ 2, I2C3_BASE_ADDR, I2C_QUIRK_FLAG },
> 

This is independent from the rest of patchset - I can merge it.

Applied to u-boot-imx, thanks !

Best regards,
Stefano Babic


-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
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
=====================================================================


More information about the U-Boot mailing list