]> Pileus Git - ~andy/linux/blobdiff - arch/arm/mach-shmobile/board-marzen.c
Merge tag 'renesas-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
[~andy/linux] / arch / arm / mach-shmobile / board-marzen.c
index 3551b5480b47b38fe6ab1b729a2deb3d63d8dce0..3f5044fda4e30ec20610c677188f9647430f1bf0 100644 (file)
@@ -1,8 +1,9 @@
 /*
  * marzen board support
  *
- * Copyright (C) 2011  Renesas Solutions Corp.
+ * Copyright (C) 2011, 2013  Renesas Solutions Corp.
  * Copyright (C) 2011  Magnus Damm
+ * Copyright (C) 2013  Cogent Embedded, Inc.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -38,6 +39,7 @@
 #include <linux/mmc/host.h>
 #include <linux/mmc/sh_mobile_sdhi.h>
 #include <linux/mfd/tmio.h>
+#include <media/soc_camera.h>
 #include <mach/r8a7779.h>
 #include <mach/common.h>
 #include <mach/irqs.h>
@@ -197,6 +199,32 @@ static struct platform_device leds_device = {
        },
 };
 
+static struct rcar_vin_platform_data vin_platform_data __initdata = {
+       .flags  = RCAR_VIN_BT656,
+};
+
+#define MARZEN_CAMERA(idx)                                     \
+static struct i2c_board_info camera##idx##_info = {            \
+       I2C_BOARD_INFO("adv7180", 0x20 + (idx)),                \
+};                                                             \
+                                                               \
+static struct soc_camera_link iclink##idx##_adv7180 = {                \
+       .bus_id         = 1 + 2 * (idx),                        \
+       .i2c_adapter_id = 0,                                    \
+       .board_info     = &camera##idx##_info,                  \
+};                                                             \
+                                                               \
+static struct platform_device camera##idx##_device = {         \
+       .name   = "soc-camera-pdrv",                            \
+       .id     = idx,                                          \
+       .dev    = {                                             \
+               .platform_data  = &iclink##idx##_adv7180,       \
+       },                                                      \
+};
+
+MARZEN_CAMERA(0);
+MARZEN_CAMERA(1);
+
 static struct platform_device *marzen_devices[] __initdata = {
        &eth_device,
        &sdhi0_device,
@@ -204,6 +232,8 @@ static struct platform_device *marzen_devices[] __initdata = {
        &hspi_device,
        &leds_device,
        &usb_phy,
+       &camera0_device,
+       &camera1_device,
 };
 
 static const struct pinctrl_map marzen_pinctrl_map[] = {
@@ -239,6 +269,16 @@ static const struct pinctrl_map marzen_pinctrl_map[] = {
        /* USB2 */
        PIN_MAP_MUX_GROUP_DEFAULT("ehci-platform.1", "pfc-r8a7779",
                                  "usb2", "usb2"),
+       /* VIN1 */
+       PIN_MAP_MUX_GROUP_DEFAULT("r8a7779-vin.1", "pfc-r8a7779",
+                                 "vin1_clk", "vin1"),
+       PIN_MAP_MUX_GROUP_DEFAULT("r8a7779-vin.1", "pfc-r8a7779",
+                                 "vin1_data8", "vin1"),
+       /* VIN3 */
+       PIN_MAP_MUX_GROUP_DEFAULT("r8a7779-vin.3", "pfc-r8a7779",
+                                 "vin3_clk", "vin3"),
+       PIN_MAP_MUX_GROUP_DEFAULT("r8a7779-vin.3", "pfc-r8a7779",
+                                 "vin3_data8", "vin3"),
 };
 
 static void __init marzen_init(void)
@@ -254,6 +294,8 @@ static void __init marzen_init(void)
        r8a7779_init_irq_extpin(1); /* IRQ1 as individual interrupt */
 
        r8a7779_add_standard_devices();
+       r8a7779_add_vin_device(1, &vin_platform_data);
+       r8a7779_add_vin_device(3, &vin_platform_data);
        platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices));
 }