From 58e5e10f28230fc9a9815b73948a6678e886550a Mon Sep 17 00:00:00 2001 From: Wojciech Bieganski Date: Tue, 4 Mar 2014 16:05:13 +0100 Subject: OV7670 and TVP5150 drivers added, updated configs --- arch/arm/configs/apalis_t30_defconfig | 2 ++ arch/arm/mach-tegra/board-apalis_t30.c | 48 +++++++++++++++++++++++++++++++++ arch/arm/mach-tegra/board-colibri_t20.c | 47 ++++++++++++++++++++++++++++++++ arch/arm/mach-tegra/board-colibri_t30.c | 48 +++++++++++++++++++++++++++++++++ 4 files changed, 145 insertions(+) (limited to 'arch') diff --git a/arch/arm/configs/apalis_t30_defconfig b/arch/arm/configs/apalis_t30_defconfig index d1c2e57384a9..56a68d00cd95 100644 --- a/arch/arm/configs/apalis_t30_defconfig +++ b/arch/arm/configs/apalis_t30_defconfig @@ -275,6 +275,8 @@ CONFIG_TEGRA_NVAVP=y CONFIG_VIDEO_ADV7180=m CONFIG_SOC_CAMERA=y CONFIG_SOC_CAMERA_MAX9526=m +CONFIG_SOC_CAMERA_OV7670SOC=m +CONFIG_SOC_CAMERA_TVP5150=m CONFIG_VIDEO_TEGRA=m CONFIG_USB_VIDEO_CLASS=y # CONFIG_RADIO_ADAPTERS is not set diff --git a/arch/arm/mach-tegra/board-apalis_t30.c b/arch/arm/mach-tegra/board-apalis_t30.c index f7340b91eb8d..6b2a39e7bcce 100644 --- a/arch/arm/mach-tegra/board-apalis_t30.c +++ b/arch/arm/mach-tegra/board-apalis_t30.c @@ -158,6 +158,48 @@ static struct platform_device soc_camera_adv7180 = { }, }; #endif /* CONFIG_VIDEO_ADV7180 | CONFIG_VIDEO_ADV7180_MODULE */ + +#if defined(CONFIG_SOC_CAMERA_TVP5150) || defined(CONFIG_SOC_CAMERA_TVP5150_MODULE) +static struct i2c_board_info camera_i2c_tvp5150soc = { + I2C_BOARD_INFO("tvp5150soc", 0x5d), +}; + +static struct soc_camera_link iclink_tvp5150soc = { + .board_info = &camera_i2c_tvp5150soc, + .bus_id = -1, /* This must match the .id of tegra_vi01_device */ + .i2c_adapter_id = 2, +}; + +static struct platform_device soc_camera_tvp5150soc = { + .name = "soc-camera-pdrv", + .id = 2, + .dev = { + .platform_data = &iclink_tvp5150soc, + }, +}; +#endif /* CONFIG_SOC_CAMERA_TVP5150 | CONFIG_SOC_CAMERA_TVP5150_MODULE */ + +#if defined(CONFIG_SOC_CAMERA_OV7670SOC) || defined(CONFIG_SOC_CAMERA_OV7670SOC_MODULE) +static struct i2c_board_info camera_i2c_ov7670soc = { + I2C_BOARD_INFO("ov7670soc", 0x21), +}; + +static struct soc_camera_link iclink_ov7670soc = { + .board_info = &camera_i2c_ov7670soc, + .bus_id = -1, /* This must match the .id of tegra_vi01_device */ + .i2c_adapter_id = 2, +}; + +static struct platform_device soc_camera_ov7670soc = { + .name = "soc-camera-pdrv", + .id = 3, + .dev = { + .platform_data = &iclink_ov7670soc, + }, +}; + +#endif /* CONFIG_SOC_CAMERA_OV7670SOC | CONFIG_SOC_CAMERA_OV7670SOC_MODULE */ + #endif /* CONFIG_VIDEO_TEGRA | CONFIG_VIDEO_TEGRA_MODULE */ /* CAN */ @@ -1392,6 +1434,12 @@ static void __init apalis_t30_init(void) #if defined(CONFIG_VIDEO_ADV7180) || defined(CONFIG_VIDEO_ADV7180_MODULE) platform_device_register(&soc_camera_adv7180); #endif +#if defined(CONFIG_SOC_CAMERA_TVP5150) || defined(CONFIG_SOC_CAMERA_TVP5150_MODULE) + platform_device_register(&soc_camera_tvp5150soc); +#endif +#if defined(CONFIG_SOC_CAMERA_OV7670SOC) || defined(CONFIG_SOC_CAMERA_OV7670SOC_MODULE) + platform_device_register(&soc_camera_ov7670soc); +#endif #endif /* CONFIG_VIDEO_TEGRA | CONFIG_VIDEO_TEGRA_MODULE */ tegra_release_bootloader_fb(); diff --git a/arch/arm/mach-tegra/board-colibri_t20.c b/arch/arm/mach-tegra/board-colibri_t20.c index 470cc004165a..e8bb48e27865 100644 --- a/arch/arm/mach-tegra/board-colibri_t20.c +++ b/arch/arm/mach-tegra/board-colibri_t20.c @@ -162,6 +162,47 @@ static struct platform_device soc_camera_adv7180 = { }, }; #endif /* CONFIG_VIDEO_ADV7180 | CONFIG_VIDEO_ADV7180_MODULE */ + +#if defined(CONFIG_SOC_CAMERA_TVP5150) || defined(CONFIG_SOC_CAMERA_TVP5150_MODULE) +static struct i2c_board_info camera_i2c_tvp5150soc = { + I2C_BOARD_INFO("tvp5150soc", 0x5d), +}; + +static struct soc_camera_link iclink_tvp5150soc = { + .board_info = &camera_i2c_tvp5150soc, + .bus_id = -1, /* This must match the .id of tegra_vi01_device */ + .i2c_adapter_id = 0, +}; + +static struct platform_device soc_camera_tvp5150soc = { + .name = "soc-camera-pdrv", + .id = 2, + .dev = { + .platform_data = &iclink_tvp5150soc, + }, +}; +#endif /* CONFIG_SOC_CAMERA_TVP5150 | CONFIG_SOC_CAMERA_TVP5150_MODULE */ + +#if defined(CONFIG_SOC_CAMERA_OV7670SOC) || defined(CONFIG_SOC_CAMERA_OV7670SOC_MODULE) +static struct i2c_board_info camera_i2c_ov7670soc = { + I2C_BOARD_INFO("ov7670soc", 0x21), +}; + +static struct soc_camera_link iclink_ov7670soc = { + .board_info = &camera_i2c_ov7670soc, + .bus_id = -1, /* This must match the .id of tegra_vi01_device */ + .i2c_adapter_id = 0, +}; + +static struct platform_device soc_camera_ov7670soc = { + .name = "soc-camera-pdrv", + .id = 3, + .dev = { + .platform_data = &iclink_ov7670soc, + }, +}; +#endif /* CONFIG_SOC_CAMERA_OV7670SOC | CONFIG_SOC_CAMERA_OV7670SOC_MODULE */ + #endif /* CONFIG_VIDEO_TEGRA | CONFIG_VIDEO_TEGRA_MODULE */ /* CAN */ @@ -1531,6 +1572,12 @@ static void __init colibri_t20_init(void) #if defined(CONFIG_VIDEO_ADV7180) || defined(CONFIG_VIDEO_ADV7180_MODULE) platform_device_register(&soc_camera_adv7180); #endif +#if defined(CONFIG_SOC_CAMERA_TVP5150) || defined(CONFIG_SOC_CAMERA_TVP5150_MODULE) + platform_device_register(&soc_camera_tvp5150soc); +#endif +#if defined(CONFIG_SOC_CAMERA_OV7670SOC) || defined(CONFIG_SOC_CAMERA_OV7670SOC_MODULE) + platform_device_register(&soc_camera_ov7670soc); +#endif #endif /* CONFIG_VIDEO_TEGRA | CONFIG_VIDEO_TEGRA_MODULE */ diff --git a/arch/arm/mach-tegra/board-colibri_t30.c b/arch/arm/mach-tegra/board-colibri_t30.c index db3ab08cbc3d..c35f2737f9df 100644 --- a/arch/arm/mach-tegra/board-colibri_t30.c +++ b/arch/arm/mach-tegra/board-colibri_t30.c @@ -158,6 +158,47 @@ static struct platform_device soc_camera_adv7180 = { }, }; #endif /* CONFIG_VIDEO_ADV7180 | CONFIG_VIDEO_ADV7180_MODULE */ + +#if defined(CONFIG_SOC_CAMERA_TVP5150) || defined(CONFIG_SOC_CAMERA_TVP5150_MODULE) +static struct i2c_board_info camera_i2c_tvp5150soc = { + I2C_BOARD_INFO("tvp5150soc", 0x5d), +}; + +static struct soc_camera_link iclink_tvp5150soc = { + .board_info = &camera_i2c_tvp5150soc, + .bus_id = -1, /* This must match the .id of tegra_vi01_device */ + .i2c_adapter_id = 0, +}; + +static struct platform_device soc_camera_tvp5150soc = { + .name = "soc-camera-pdrv", + .id = 2, + .dev = { + .platform_data = &iclink_tvp5150soc, + }, +}; +#endif /* CONFIG_SOC_CAMERA_TVP5150 | CONFIG_SOC_CAMERA_TVP5150_MODULE */ + +#if defined(CONFIG_SOC_CAMERA_OV7670SOC) || defined(CONFIG_SOC_CAMERA_OV7670SOC_MODULE) +static struct i2c_board_info camera_i2c_ov7670soc = { + I2C_BOARD_INFO("ov7670soc", 0x21), +}; + +static struct soc_camera_link iclink_ov7670soc = { + .board_info = &camera_i2c_ov7670soc, + .bus_id = -1, /* This must match the .id of tegra_vi01_device */ + .i2c_adapter_id = 0, +}; + +static struct platform_device soc_camera_ov7670soc = { + .name = "soc-camera-pdrv", + .id = 3, + .dev = { + .platform_data = &iclink_ov7670soc, + }, +}; +#endif /* CONFIG_SOC_CAMERA_OV7670SOC | CONFIG_SOC_CAMERA_OV7670SOC_MODULE */ + #endif /* CONFIG_VIDEO_TEGRA | CONFIG_VIDEO_TEGRA_MODULE */ /* CAN */ @@ -281,6 +322,7 @@ static struct tegra_clk_init_table colibri_t30_clk_init_table[] __initdata = { {"spdif_out", "pll_a_out0", 0, false}, {"vi", "pll_p", 0, false}, {"vi_sensor", "pll_p", 150000000, false}, + {"clk_out_2", "extern2", 24000000, false}, {NULL, NULL, 0, 0}, }; @@ -1511,6 +1553,12 @@ static void __init colibri_t30_init(void) #if defined(CONFIG_VIDEO_ADV7180) || defined(CONFIG_VIDEO_ADV7180_MODULE) platform_device_register(&soc_camera_adv7180); #endif +#if defined(CONFIG_SOC_CAMERA_TVP5150) || defined(CONFIG_SOC_CAMERA_TVP5150_MODULE) + platform_device_register(&soc_camera_tvp5150soc); +#endif +#if defined(CONFIG_SOC_CAMERA_OV7670SOC) || defined(CONFIG_SOC_CAMERA_OV7670SOC_MODULE) + platform_device_register(&soc_camera_ov7670soc); +#endif #endif /* CONFIG_VIDEO_TEGRA | CONFIG_VIDEO_TEGRA_MODULE */ tegra_release_bootloader_fb(); -- cgit v1.2.3