From f143c8cf1bd9b6858749f8dcec0db76f79343403 Mon Sep 17 00:00:00 2001 From: Piotr Zierhoffer Date: Fri, 10 May 2013 13:34:06 +0200 Subject: colibri_t30: adv7180 and max9526 integration Integrate ADV7180 and MAX9526 video decoder support and prepare for drivers as modules. --- arch/arm/mach-tegra/board-colibri_t30.c | 49 +++++++++++++++++++++++++-------- arch/arm/mach-tegra/powergate.c | 1 + 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 -- cgit v1.2.3