summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Zierhoffer <pzierhoffer@antmicro.com>2013-05-10 13:34:06 +0200
committerMax Krummenacher <max.krummenacher@toradex.com>2013-06-12 21:43:55 +0200
commitf143c8cf1bd9b6858749f8dcec0db76f79343403 (patch)
tree4b94a9eaa9065b422c6c8f4a215702a9ee7988f0
parent0c778296f6223867259295f7e03d50f1cafbf82c (diff)
colibri_t30: adv7180 and max9526 integration
Integrate ADV7180 and MAX9526 video decoder support and prepare for drivers as modules.
-rw-r--r--arch/arm/mach-tegra/board-colibri_t30.c49
-rw-r--r--arch/arm/mach-tegra/powergate.c1
2 files changed, 38 insertions, 12 deletions
diff --git a/arch/arm/mach-tegra/board-colibri_t30.c b/arch/arm/mach-tegra/board-colibri_t30.c
index 1fd0fd1bec2b..fcbae03f62b9 100644
--- a/arch/arm/mach-tegra/board-colibri_t30.c
+++ b/arch/arm/mach-tegra/board-colibri_t30.c
@@ -104,7 +104,7 @@ static struct platform_device tegra_camera = {
};
#endif /* CONFIG_TEGRA_CAMERA */
-#ifdef CONFIG_VIDEO_TEGRA
+#if defined(CONFIG_VIDEO_TEGRA) || defined(CONFIG_VIDEO_TEGRA_MODULE)
static void tegra_camera_disable(struct nvhost_device *ndev)
{
}
@@ -122,26 +122,46 @@ static struct tegra_camera_platform_data tegra_camera_platform_data = {
.port = TEGRA_CAMERA_PORT_VIP,
};
-static struct i2c_board_info camera_i2c = {
-#ifdef CONFIG_SOC_CAMERA_MAX9526
+#if defined(CONFIG_SOC_CAMERA_MAX9526) || defined(CONFIG_SOC_CAMERA_MAX9526_MODULE)
+static struct i2c_board_info camera_i2c_max9526 = {
I2C_BOARD_INFO("max9526", 0x21),
-#endif
};
-static struct soc_camera_link iclink = {
- .board_info = &camera_i2c,
+static struct soc_camera_link iclink_max9526 = {
+ .board_info = &camera_i2c_max9526,
.bus_id = -1, /* This must match the .id of tegra_vi01_device */
.i2c_adapter_id = 0,
};
-static struct platform_device soc_camera = {
+static struct platform_device soc_camera_max9526 = {
.name = "soc-camera-pdrv",
.id = 0,
.dev = {
- .platform_data = &iclink,
+ .platform_data = &iclink_max9526,
},
};
-#endif /* CONFIG_VIDEO_TEGRA */
+#endif /* CONFIG_SOC_CAMERA_MAX9526 | CONFIG_SOC_CAMERA_MAX9526_MODULE */
+
+#if defined(CONFIG_VIDEO_ADV7180) || defined(CONFIG_VIDEO_ADV7180_MODULE)
+static struct i2c_board_info camera_i2c_adv7180 = {
+ I2C_BOARD_INFO("adv7180", 0x21),
+};
+
+static struct soc_camera_link iclink_adv7180 = {
+ .board_info = &camera_i2c_adv7180,
+ .bus_id = -1, /* This must match the .id of tegra_vi01_device */
+ .i2c_adapter_id = 0,
+};
+
+static struct platform_device soc_camera_adv7180 = {
+ .name = "soc-camera-pdrv",
+ .id = 1,
+ .dev = {
+ .platform_data = &iclink_adv7180,
+ },
+};
+#endif /* CONFIG_VIDEO_ADV7180 | CONFIG_VIDEO_ADV7180_MODULE */
+#endif /* CONFIG_VIDEO_TEGRA | CONFIG_VIDEO_TEGRA_MODULE */
/* CAN */
#if ((defined(CONFIG_CAN_MCP251X) || defined(CONFIG_CAN_MCP251X_MODULE)) && \
@@ -1481,10 +1501,15 @@ static void __init colibri_t30_init(void)
colibri_t20_mcp2515_can_init();
colibri_t30_gpio_init();
-#ifdef CONFIG_VIDEO_TEGRA
+#if defined(CONFIG_VIDEO_TEGRA) || defined(CONFIG_VIDEO_TEGRA_MODULE)
t30_get_tegra_vi01_device()->dev.platform_data = &tegra_camera_platform_data;
- platform_device_register(&soc_camera);
-#endif /* CONFIG_VIDEO_TEGRA */
+#if defined(CONFIG_SOC_CAMERA_MAX9526) || defined(CONFIG_SOC_CAMERA_MAX9526_MODULE)
+ platform_device_register(&soc_camera_max9526);
+#endif
+#if defined(CONFIG_VIDEO_ADV7180) || defined(CONFIG_VIDEO_ADV7180_MODULE)
+ platform_device_register(&soc_camera_adv7180);
+#endif
+#endif /* CONFIG_VIDEO_TEGRA | CONFIG_VIDEO_TEGRA_MODULE */
tegra_release_bootloader_fb();
#ifdef CONFIG_TEGRA_WDT_RECOVERY
diff --git a/arch/arm/mach-tegra/powergate.c b/arch/arm/mach-tegra/powergate.c
index 4c0d8bec276e..c6d215fc025c 100644
--- a/arch/arm/mach-tegra/powergate.c
+++ b/arch/arm/mach-tegra/powergate.c
@@ -721,6 +721,7 @@ err_power:
WARN(1, "Could not Un-Powergate %d", id);
return ret;
}
+EXPORT_SYMBOL(tegra_unpowergate_partition);
/*
* Must be called with clk disabled, and returns with clk enabled