]> Pileus Git - ~andy/linux/blobdiff - arch/arm/mach-omap2/board-n8x0.c
Merge branch 'i2c-embedded/for-next' of git://git.pengutronix.de/git/wsa/linux
[~andy/linux] / arch / arm / mach-omap2 / board-n8x0.c
index a4e167c55c1d45b516c54c0cf4531353be0568df..0abb30fe399cfd5923785c37e7a995c29d90eb58 100644 (file)
 #include <linux/gpio.h>
 #include <linux/init.h>
 #include <linux/io.h>
+#include <linux/irq.h>
 #include <linux/stddef.h>
 #include <linux/i2c.h>
 #include <linux/spi/spi.h>
 #include <linux/usb/musb.h>
+#include <linux/platform_data/i2c-cbus-gpio.h>
 #include <linux/platform_data/spi-omap2-mcspi.h>
 #include <linux/platform_data/mtd-onenand-omap2.h>
 #include <linux/mfd/menelaus.h>
 #define TUSB6010_GPIO_ENABLE   0
 #define TUSB6010_DMACHAN       0x3f
 
+#if defined(CONFIG_I2C_CBUS_GPIO) || defined(CONFIG_I2C_CBUS_GPIO_MODULE)
+static struct i2c_cbus_platform_data n8x0_cbus_data = {
+       .clk_gpio = 66,
+       .dat_gpio = 65,
+       .sel_gpio = 64,
+};
+
+static struct platform_device n8x0_cbus_device = {
+       .name   = "i2c-cbus-gpio",
+       .id     = 3,
+       .dev    = {
+               .platform_data = &n8x0_cbus_data,
+       },
+};
+
+static struct i2c_board_info n8x0_i2c_board_info_3[] __initdata = {
+       {
+               I2C_BOARD_INFO("retu-mfd", 0x01),
+       },
+};
+
+static void __init n8x0_cbus_init(void)
+{
+       const int retu_irq_gpio = 108;
+
+       if (gpio_request_one(retu_irq_gpio, GPIOF_IN, "Retu IRQ"))
+               return;
+       irq_set_irq_type(gpio_to_irq(retu_irq_gpio), IRQ_TYPE_EDGE_RISING);
+       n8x0_i2c_board_info_3[0].irq = gpio_to_irq(retu_irq_gpio);
+       i2c_register_board_info(3, n8x0_i2c_board_info_3,
+                               ARRAY_SIZE(n8x0_i2c_board_info_3));
+       platform_device_register(&n8x0_cbus_device);
+}
+#else /* CONFIG_I2C_CBUS_GPIO */
+static void __init n8x0_cbus_init(void)
+{
+}
+#endif /* CONFIG_I2C_CBUS_GPIO */
+
 #if defined(CONFIG_USB_MUSB_TUSB6010) || defined(CONFIG_USB_MUSB_TUSB6010_MODULE)
 /*
  * Enable or disable power to TUSB6010. When enabling, turn on 3.3 V and
@@ -678,6 +719,7 @@ static void __init n8x0_init_machine(void)
        gpmc_onenand_init(board_onenand_data);
        n8x0_mmc_init();
        n8x0_usb_init();
+       n8x0_cbus_init();
 }
 
 MACHINE_START(NOKIA_N800, "Nokia N800")