]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
i2c: zynq: Add support for Xilinx Zynq
authorMichal Simek <michal.simek@xilinx.com>
Mon, 22 Apr 2013 13:21:33 +0000 (15:21 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 25 Apr 2013 14:55:47 +0000 (16:55 +0200)
Support Xilinx Zynq i2c controller.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/include/asm/arch-zynq/hardware.h
drivers/i2c/zynq_i2c.c
include/configs/zynq.h
include/configs/zynq_common.h

index 5bb9cff0391e893ef450f26d0eb97542dd77a6bc..8b8a91ae65ffbc9117cc7b39aa2da647513bafc2 100644 (file)
@@ -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 {
index 4bd24ccbbcda5b75d06a403044e24f4ce6ca9aa5..ec49660cf7c237f59cd533cef3a702620c9b03aa 100644 (file)
@@ -30,6 +30,7 @@
 #include <asm/io.h>
 #include <i2c.h>
 #include <asm/errno.h>
+#include <asm/arch/hardware.h>
 
 /* 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;
 
index 2ed88a72c4d0c6c9ec5c6cd58af6e285db5b9b24..f1f182edfb9e243757a500f2a85255f1ad0213a3 100644 (file)
 # 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 */
index f19eac47a5f966806e48ded727f27823d6339182..1224fdc1fcb6dc40cb7d5bba929df394a0b02740 100644 (file)
 /* 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