From ebe563e80be02295d5dedb555f3b2fa222e158a0 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Mon, 22 Apr 2013 15:21:33 +0200 Subject: [PATCH] i2c: zynq: Add support for Xilinx Zynq Support Xilinx Zynq i2c controller. Signed-off-by: Joe Hershberger Signed-off-by: Michal Simek --- arch/arm/include/asm/arch-zynq/hardware.h | 2 ++ drivers/i2c/zynq_i2c.c | 18 +++++++----------- include/configs/zynq.h | 11 +++++++++++ include/configs/zynq_common.h | 2 +- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/arch/arm/include/asm/arch-zynq/hardware.h b/arch/arm/include/asm/arch-zynq/hardware.h index 5bb9cff0391..8b8a91ae65f 100644 --- a/arch/arm/include/asm/arch-zynq/hardware.h +++ b/arch/arm/include/asm/arch-zynq/hardware.h @@ -31,6 +31,8 @@ #define ZYNQ_GEM_BASEADDR1 0xE000C000 #define ZYNQ_SDHCI_BASEADDR0 0xE0100000 #define ZYNQ_SDHCI_BASEADDR1 0xE0101000 +#define ZYNQ_I2C_BASEADDR0 0xE0004000 +#define ZYNQ_I2C_BASEADDR1 0xE0005000 /* Reflect slcr offsets */ struct slcr_regs { diff --git a/drivers/i2c/zynq_i2c.c b/drivers/i2c/zynq_i2c.c index 4bd24ccbbcd..ec49660cf7c 100644 --- a/drivers/i2c/zynq_i2c.c +++ b/drivers/i2c/zynq_i2c.c @@ -30,6 +30,7 @@ #include #include #include +#include /* i2c register set */ struct zynq_i2c_registers { @@ -76,20 +77,15 @@ struct zynq_i2c_registers { #define ZYNQ_I2C_INTERRUPT_RXUNF 0x00000080 #define ZYNQ_I2C_INTERRUPT_ARBLOST 0x00000200 -#if defined(CONFIG_ZYNQ_I2C_CTLR_0) -#define ZYNQ_I2C_BASE 0xE0004000 -#if defined(CONFIG_ZYNQ_I2C_CTLR_1) -#warning Only CONFIG_ZYNQ_I2C_CTLR_0 will be accessible -#endif -#elif defined(CONFIG_ZYNQ_I2C_CTLR_1) -#define ZYNQ_I2C_BASE 0xE0005000 -#else -#error You must select CONFIG_ZYNQ_I2C_CTLR_0 or CONFIG_ZYNQ_I2C_CTLR_1 -#endif - #define ZYNQ_I2C_FIFO_DEPTH 16 #define ZYNQ_I2C_TRANSFERT_SIZE_MAX 255 /* Controller transfer limit */ +#if defined(CONFIG_ZYNQ_I2C0) +# define ZYNQ_I2C_BASE ZYNQ_I2C_BASEADDR0 +#else +# define ZYNQ_I2C_BASE ZYNQ_I2C_BASEADDR1 +#endif + static struct zynq_i2c_registers *zynq_i2c = (struct zynq_i2c_registers *)ZYNQ_I2C_BASE; diff --git a/include/configs/zynq.h b/include/configs/zynq.h index 2ed88a72c4d..f1f182edfb9 100644 --- a/include/configs/zynq.h +++ b/include/configs/zynq.h @@ -72,6 +72,17 @@ # define CONFIG_DOS_PARTITION #endif +#define CONFIG_ZYNQ_I2C0 + +/* I2C */ +#if defined(CONFIG_ZYNQ_I2C0) || defined(CONFIG_ZYNQ_I2C1) +# define CONFIG_CMD_I2C +# define CONFIG_ZYNQ_I2C +# define CONFIG_HARD_I2C +# define CONFIG_SYS_I2C_SPEED 100000 +# define CONFIG_SYS_I2C_SLAVE 1 +#endif + #if defined(CONFIG_ZYNQ_DCC) # define CONFIG_ARM_DCC # define CONFIG_CPU_V6 /* Required by CONFIG_ARM_DCC */ diff --git a/include/configs/zynq_common.h b/include/configs/zynq_common.h index f19eac47a5f..1224fdc1fcb 100644 --- a/include/configs/zynq_common.h +++ b/include/configs/zynq_common.h @@ -156,7 +156,7 @@ /* I2C */ #ifdef CONFIG_ZYNQ_I2C # define CONFIG_CMD_I2C -# define CONFIG_ZYNQ_I2C_CTLR_0 +# define CONFIG_ZYNQ_I2C0 # define CONFIG_HARD_I2C 1 # define CONFIG_SYS_I2C_SPEED 100000 # define CONFIG_SYS_I2C_SLAVE 1 -- 2.47.3