From fdcedbc9b0ff34ef273c6af5ce1f54e15c2d0f40 Mon Sep 17 00:00:00 2001 From: Marcel Ziswiler Date: Sun, 3 Mar 2013 23:47:42 +0100 Subject: colibri_t20/30: v4l2: max9526 integration Integrate MAX9526 video decoder support as found on our analogous camera module (ACM) connected to a Colibri Evaluation carrier board. The following kernel configuration options are required to be enabled: CONFIG_VIDEO_V4L2=y CONFIG_SOC_CAMERA=y CONFIG_SOC_CAMERA_MAX9526=y CONFIG_VIDEO_TEGRA=y --- arch/arm/mach-tegra/board-colibri_t30.c | 50 ++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'arch/arm/mach-tegra/board-colibri_t30.c') diff --git a/arch/arm/mach-tegra/board-colibri_t30.c b/arch/arm/mach-tegra/board-colibri_t30.c index f08b38b6cbbe..f56750c36cdb 100644 --- a/arch/arm/mach-tegra/board-colibri_t30.c +++ b/arch/arm/mach-tegra/board-colibri_t30.c @@ -36,6 +36,9 @@ #include #include +#include +#include + #include "board-colibri_t30.h" #include "board.h" #include "clock.h" @@ -78,14 +81,54 @@ static struct platform_device colibri_t30_audio_sgtl5000_device = { }, }; -#ifdef CONFIG_TEGRA_CAMERA /* Camera */ + +#ifdef CONFIG_TEGRA_CAMERA static struct platform_device tegra_camera = { .name = "tegra_camera", .id = -1, }; #endif /* CONFIG_TEGRA_CAMERA */ +#ifdef CONFIG_VIDEO_TEGRA +static void tegra_camera_disable(struct nvhost_device *ndev) +{ +} + +static int tegra_camera_enable(struct nvhost_device *ndev) +{ + return 0; +} + +static struct tegra_camera_platform_data tegra_camera_platform_data = { + .disable_camera = tegra_camera_disable, + .enable_camera = tegra_camera_enable, + .flip_h = 0, + .flip_v = 0, + .port = TEGRA_CAMERA_PORT_VIP, +}; + +static struct i2c_board_info camera_i2c = { +#ifdef CONFIG_SOC_CAMERA_MAX9526 + I2C_BOARD_INFO("max9526", 0x21), +#endif +}; + +static struct soc_camera_link iclink = { + .board_info = &camera_i2c, + .bus_id = -1, /* This must match the .id of tegra_vi01_device */ + .i2c_adapter_id = 0, +}; + +static struct platform_device soc_camera = { + .name = "soc-camera-pdrv", + .id = 0, + .dev = { + .platform_data = &iclink, + }, +}; +#endif /* CONFIG_VIDEO_TEGRA */ + /* Clocks */ static struct tegra_clk_init_table colibri_t30_clk_init_table[] __initdata = { /* name parent rate enabled */ @@ -1193,6 +1236,11 @@ static void __init colibri_t30_init(void) colibri_t30_emc_init(); colibri_t30_register_spidev(); +#ifdef CONFIG_VIDEO_TEGRA + t30_get_tegra_vi01_device()->dev.platform_data = &tegra_camera_platform_data; + platform_device_register(&soc_camera); +#endif /* CONFIG_VIDEO_TEGRA */ + tegra_release_bootloader_fb(); #ifdef CONFIG_TEGRA_WDT_RECOVERY tegra_wdt_recovery_init(); -- cgit v1.2.3