arm nomadik: add i2c
authorAlessandro Rubini <rubini@unipv.it>
Fri, 24 Jul 2009 09:27:14 +0000 (11:27 +0200)
committerHeiko Schocher <hs@denx.de>
Wed, 29 Jul 2009 07:57:47 +0000 (09:57 +0200)
Signed-off-by: Alessandro Rubini <rubini@unipv.it>
Acked-by: Andrea Gallo <andrea.gallo@stericsson.com>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
board/st/nhk8815/nhk8815.c
include/configs/nhk8815.h

index 085a5e0a42731151f8ff29b30a42f68e62551b45..1fa506a889a8ebea6a0565c51e5eacc51de9e674 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <common.h>
 #include <asm/io.h>
+#include <asm/arch/gpio.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -61,9 +62,20 @@ int board_init(void)
        return 0;
 }
 
-int misc_init_r(void)
+int board_late_init(void)
 {
-       setenv("verify", "n");
+       /* Set the two I2C gpio lines to be gpio high */
+       nmk_gpio_set(__SCL, 1); nmk_gpio_set(__SDA, 1);
+       nmk_gpio_dir(__SCL, 1); nmk_gpio_dir(__SDA, 1);
+       nmk_gpio_af(__SCL, GPIO_GPIO); nmk_gpio_af(__SDA, GPIO_GPIO);
+
+       /* Reset the I2C port expander, on GPIO77 */
+       nmk_gpio_af(77, GPIO_GPIO);
+       nmk_gpio_dir(77, 1);
+       nmk_gpio_set(77, 0);
+       udelay(10);
+       nmk_gpio_set(77, 1);
+
        return 0;
 }
 
index 3e2e09fb836c245b95fab3d91add78414c583261..8a83d924bbdc0970111d1d800f235941e31bc46f 100644 (file)
@@ -93,7 +93,7 @@
 #define CONFIG_SYS_GBL_DATA_SIZE       128     /* for initial data */
 #define CONFIG_SYS_64BIT_VSPRINTF      /* mtd desires this */
 
-#define CONFIG_MISC_INIT_R     /* call misc_init_r during start up */
+#define BOARD_LATE_INIT                /* call board_late_init during start up */
 
 /* timing informazion */
 #define CONFIG_SYS_HZ          1000 /* Mandatory... */
 #define CONFIG_PL01x_PORTS     { (void *)CFG_SERIAL0, (void *)CFG_SERIAL1 }
 #define CONFIG_PL011_CLOCK     48000000
 
+/* i2c, for the port extenders (uses gpio.c in board directory) */
+#ifndef __ASSEMBLY__
+#include <asm/arch/gpio.h>
+#define CONFIG_CMD_I2C
+#define CONFIG_SOFT_I2C
+#define CONFIG_SYS_I2C_SPEED   400000
+#define __SDA                  63
+#define __SCL                  62
+#define I2C_SDA(x)             nmk_gpio_set(__SDA, x)
+#define I2C_SCL(x)             nmk_gpio_set(__SCL, x)
+#define I2C_READ               (nmk_gpio_get(__SDA)!=0)
+#define I2C_ACTIVE             nmk_gpio_dir(__SDA, 1)
+#define I2C_TRISTATE           nmk_gpio_dir(__SDA, 0)
+#define I2C_DELAY     (udelay(2))
+#endif /* __ASSEMBLY__ */
+
 /* Ethernet */
 #define PCI_MEMORY_VADDR       0xe8000000
 #define PCI_IO_VADDR           0xee000000