summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorWojciech Bieganski <wbieganski@antmicro.com>2015-08-27 12:03:27 +0200
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2016-11-21 15:05:09 +0100
commit51e7588d8bc37af8d977da7a4ee1822692227647 (patch)
treec9979bfee899cd13038790bf67495b7a7c8c229c /arch
parentcb82e83af2ade12557bf152047f2a9443d2d0ec5 (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.c44
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;
}