i2c: Add support for designware i2c controller
Subsystems (2)
PATCH 1/1 i2c: Add support for designware i2c controller
From: Vipin KUMAR <[email protected]>
Earlier, a driver exists in the u-boot source for designware i2c interface. That driver was specific to spear platforms. This patch implements the i2c controller as a generic driver which can be used by multiple platforms
The driver files are now renamed to designware_i2c.c and designware_i2c.h and these are moved into drivers/i2c folder for reusability by other platforms
---
drivers/i2c/Makefile | 2 +-
drivers/i2c/{spr_i2c.c => designware_i2c.c} | 4 ++--
.../spr_i2c.h => drivers/i2c/designware_i2c.h | 6 +++---
include/configs/spear-common.h | 2 +-
4 files changed, 7 insertions(+), 7 deletions(-)
rename drivers/i2c/{spr_i2c.c => designware_i2c.c} (98%)
rename arch/arm/include/asm/arch-spear/spr_i2c.h => drivers/i2c/designware_i2c.h (98%)drivers/i2c/Makefile +1 -1
@@ -27,6 +27,7 @@ LIB := $(obj)libi2c.o COBJS-$(CONFIG_BFIN_TWI_I2C) += bfin-twi_i2c.o COBJS-$(CONFIG_DRIVER_DAVINCI_I2C) += davinci_i2c.o +COBJS-$(CONFIG_DW_I2C) += designware_i2c.o COBJS-$(CONFIG_FSL_I2C) += fsl_i2c.o COBJS-$(CONFIG_I2C_MVTWSI) += mvtwsi.o COBJS-$(CONFIG_I2C_MV) += mv_i2c.o
@@ -40,7 +41,6 @@ COBJS-$(CONFIG_PPC4XX_I2C) += ppc4xx_i2c.o COBJS-$(CONFIG_DRIVER_S3C24X0_I2C) += s3c24x0_i2c.o COBJS-$(CONFIG_S3C44B0_I2C) += s3c44b0_i2c.o COBJS-$(CONFIG_SOFT_I2C) += soft_i2c.o -COBJS-$(CONFIG_SPEAR_I2C) += spr_i2c.o COBJS-$(CONFIG_TSI108_I2C) += tsi108_i2c.o COBJS-$(CONFIG_U8500_I2C) += u8500_i2c.o COBJS-$(CONFIG_SH_I2C) += sh_i2c.o
drivers/i2c/designware_i2c.c renamed from drivers/i2c/spr_i2c.c +2 -2
@@ -24,7 +24,7 @@#include <common.h> #include <asm/io.h> #include <asm/arch/hardware.h> -#include <asm/arch/spr_i2c.h> +#include "designware_i2c.h" static struct i2c_regs *const i2c_regs_p = (struct i2c_regs *)CONFIG_SYS_I2C_BASE ;
@@ -113,7 +113,7 @@ int i2c_get_bus_speed(void)/* * i2c_init - Init function * @speed: required i2c speed -* @slaveadd: slave address for the spear device +* @slaveadd: slave address for the device * * Initialization function. */
drivers/i2c/designware_i2c.h renamed from arch/arm/include/asm/arch-spear/spr_i2c.h +3 -3
@@ -21,8 +21,8 @@* MA 02111-1307 USA */ -#ifndef __SPR_I2C_H_ -#define __SPR_I2C_H_ +#ifndef __DW_I2C_H_ +#define __DW_I2C_H_ struct i2c_regs { u32 ic_con;
@@ -143,4 +143,4 @@ struct i2c_regs {#define I2C_FAST_SPEED 400000#define I2C_STANDARD_SPEED 100000 -#endif /* __SPR_I2C_H_ */ +#endif /* __DW_I2C_H_ */
include/configs/spear-common.h +1 -1
@@ -41,7 +41,7 @@/* I2C driver configuration */ #define CONFIG_HARD_I2C -#define CONFIG_SPEAR_I2C +#define CONFIG_DW_I2C #define CONFIG_SYS_I2C_SPEED 400000#define CONFIG_SYS_I2C_SLAVE 0x02
Signature · 1 line
1.7.2.2
PATCH 1/1 i2c: Add support for designware i2c controller
Heiko,
Quoted 10 lines · Amit VIRDI
From: Vipin KUMAR<[email protected]>
Earlier, a driver exists in the u-boot source for designware i2c interface. That driver was specific to spear platforms. This patch implements the i2c controller as a generic driver which can be used by multiple platforms
The driver files are now renamed to
designware_i2c.canddesignware_i2c.hand these are moved intodrivers/i2cfolder for reusability by other platforms
Any updated on the status of this patch?
Thanks
Amit Virdi
PATCH 1/1 i2c:designware Turn off the ctrl when setting the speed
In reply to Amit VirdiFrom: Armando Visconti <[email protected]>
The designware i2c controller must be turned off before setting the speed in IC_CON register, as stated in the section 6.3.1 of the dw_apb_i2c_db.pdf.
--- drivers/i2c/designware_i2c.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-)
drivers/i2c/designware_i2c.c +11 -0
@@ -40,6 +40,13 @@ static void set_speed(int i2c_spd)unsigned int cntl;unsigned int hcnt, lcnt;unsigned int high, low; +unsigned int enbl; + +/* to set speed cltr must be disabled */ + enbl =readl (&i2c_regs_p->ic_enable); + enbl &= ~IC_ENABLE_0B ; +writel (enbl, &i2c_regs_p->ic_enable); + cntl = (readl (&i2c_regs_p->ic_con) & (~IC_CON_SPD_MSK ));
@@ -71,6 +78,10 @@ static void set_speed(int i2c_spd) lcnt = (IC_CLK * low) /NANO_TO_MICRO ;writel (lcnt, &i2c_regs_p->ic_fs_scl_lcnt); + +/* re-enable i2c ctrl back now that speed is set */ + enbl |=IC_ENABLE_0B ; +writel (enbl, &i2c_regs_p->ic_enable); }/*
Signature · 1 line
1.7.2.2
PATCH 1/1 i2c:designware Turn off the ctrl when setting the speed
Hello Amit,
Quoted 6 lines · Amit Virdi
From: Armando Visconti <[email protected]>
The designware i2c controller must be turned off before setting the speed in
IC_CONregister, as stated in the section 6.3.1 of the dw_apb_i2c_db.pdf.
Quoted 6 lines
Signed-off-by Michel Sanches <[email protected]>Signed-off-by Armando Visconti <[email protected]>Signed-off-by Amit Virdi <[email protected]>--- drivers/i2c/designware_i2c.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-)
Applied to u-boot-i2c.git
Thanks!
bye
Heiko
Signature · 2 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
PATCH 1/1 i2c: Add support for designware i2c controller
In reply to Amit VirdiHello Amit,
Quoted 12 lines · Amit Virdi
From: Vipin KUMAR <[email protected]>
Earlier, a driver exists in the u-boot source for designware i2c interface. That driver was specific to spear platforms. This patch implements the i2c controller as a generic driver which can be used by multiple platforms
The driver files are now renamed to
designware_i2c.canddesignware_i2c.hand these are moved intodrivers/i2cfolder for reusability by other platformsSigned-off-by Vipin Kumar <[email protected]>Signed-off-by Amit Virdi <[email protected]>
Quoted 8 lines
---
drivers/i2c/Makefile | 2 +-
drivers/i2c/{spr_i2c.c => designware_i2c.c} | 4 ++--
.../spr_i2c.h => drivers/i2c/designware_i2c.h | 6 +++---
include/configs/spear-common.h | 2 +-
4 files changed, 7 insertions(+), 7 deletions(-)
rename drivers/i2c/{spr_i2c.c => designware_i2c.c} (98%)
rename arch/arm/include/asm/arch-spear/spr_i2c.h => drivers/i2c/designware_i2c.h (98%)Applied to u-boot-i2c.git
Thanks!
bye
Heiko
Signature · 2 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany