#include <common.h>
 #include <asm/io.h>
+#include <asm/arch/gpio.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
        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;
 }
 
 
 #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