[media] ARM: shmobile: Marzen: add VIN and ADV7180 support
authorVladimir Barinov <vladimir.barinov@cogentembedded.com>
Thu, 22 Aug 2013 20:25:25 +0000 (17:25 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Sun, 25 Aug 2013 10:34:13 +0000 (07:34 -0300)
Add ADV7180 platform devices on the Marzen board, configure VIN1/3 pins, and
register VIN1/3 devices with the ADV7180 specific platform data.
[Sergei: removed superfluous tabulation and inserted empty lines in the  macro
definition, updated the copyrights, annotated VIN platform data as '__initdata']

Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Acked-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
arch/arm/mach-shmobile/board-marzen.c

index a7d1010505bf9ff9246df09eca4a9706f2cf3a3f..ca7fb2e63c604e5806778784f19b26aa4adaf155 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
@@ -37,6 +38,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/hardware.h>
 #include <mach/r8a7779.h>
 #include <mach/common.h>
@@ -178,12 +180,40 @@ 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,
        &thermal_device,
        &hspi_device,
        &leds_device,
+       &camera0_device,
+       &camera1_device,
 };
 
 static const struct pinctrl_map marzen_pinctrl_map[] = {
@@ -219,6 +249,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)
@@ -235,6 +275,8 @@ static void __init marzen_init(void)
 
        r8a7779_add_standard_devices();
        r8a7779_add_usb_phy_device(&usb_phy_platform_data);
+       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));
 }