diff options
author | Wojciech Bieganski <wbieganski@antmicro.com> | 2015-08-27 12:03:27 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2016-11-21 15:05:09 +0100 |
commit | 51e7588d8bc37af8d977da7a4ee1822692227647 (patch) | |
tree | c9979bfee899cd13038790bf67495b7a7c8c229c /arch | |
parent | cb82e83af2ade12557bf152047f2a9443d2d0ec5 (diff) |
ADV7280M video decoder with deinterlacer support
known issues:
- decoder outputs PAL (720x576), but the image
looks fine only when streamed in 640x576 mode,
- vertical synchronisation glitches,
- setting queue-size in gstreamer greater than 1
results in blinking image,
- every start of streaming requires reloading of
the modules
Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Acked-by: Dominik Sliwa <dominik.sliwa@toradex.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-tegra/board-ardbeg-sensors.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-ardbeg-sensors.c b/arch/arm/mach-tegra/board-ardbeg-sensors.c index 54a19d25a748..420e5f4cc2f2 100644 --- a/arch/arm/mach-tegra/board-ardbeg-sensors.c +++ b/arch/arm/mach-tegra/board-ardbeg-sensors.c @@ -485,6 +485,47 @@ static struct platform_device ardbeg_tc358743_soc_camera_device = { }; #endif +#if IS_ENABLED(CONFIG_SOC_CAMERA_ADV7280) +static int ardbeg_adv7280_power(struct device *dev, int enable) +{ + if(enable) { + tegra_io_dpd_disable(&csia_io); + } else { + tegra_io_dpd_enable(&csia_io); + } + return 0; +} + +static struct i2c_board_info ardbeg_adv7280_camera_i2c_device = { + I2C_BOARD_INFO("adv7280", 0x21), +}; + +static struct tegra_camera_platform_data ardbeg_adv7280_camera_platform_data = { + .flip_v = 0, + .flip_h = 0, + .port = TEGRA_CAMERA_PORT_CSI_A, + .lanes = 1, + .continuous_clk = 0, +}; + +static struct soc_camera_link adv7280_iclink = { + .bus_id = 0, /* This must match the .id of tegra_vi01_device */ + .board_info = &ardbeg_adv7280_camera_i2c_device, + .module_name = "adv7280", + .i2c_adapter_id = 2, + .power = ardbeg_adv7280_power, + .priv = &ardbeg_adv7280_camera_platform_data, +}; + +static struct platform_device ardbeg_adv7280_soc_camera_device = { + .name = "soc-camera-pdrv", + .id = 5, + .dev = { + .platform_data = &adv7280_iclink, + }, +}; +#endif + static struct regulator *ardbeg_vcmvdd; static int ardbeg_get_extra_regulators(void) @@ -1696,6 +1737,9 @@ static int ardbeg_camera_init(void) #if IS_ENABLED(CONFIG_SOC_CAMERA_TC358743) platform_device_register(&ardbeg_tc358743_soc_camera_device); #endif +#if IS_ENABLED(CONFIG_SOC_CAMERA_ADV7280) + platform_device_register(&ardbeg_adv7280_soc_camera_device); +#endif return 0; } |