diff options
author | Wojciech Bieganski <wbieganski@antmicro.com> | 2015-08-27 10:34:01 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2016-11-21 15:05:08 +0100 |
commit | cb82e83af2ade12557bf152047f2a9443d2d0ec5 (patch) | |
tree | e57c49389a4ce9b71febcbe8684bee13555b45f5 /arch/arm/mach-tegra/board-ardbeg-sensors.c | |
parent | 017168237562b4d3af7d0aa5da9bca3a00b9a1d6 (diff) |
TC358743 HDMI to CSI-2 bridge support
known issues:
- HDMI input works only in 640x480 mode, 720p only in
test pattern mode, any 4-lane mode doesn't work
- set HDMI transmitter to VGA mode before
starting the stream
Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Acked-by: Dominik Sliwa <dominik.sliwa@toradex.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-ardbeg-sensors.c')
-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 c57d94f329cb..54a19d25a748 100644 --- a/arch/arm/mach-tegra/board-ardbeg-sensors.c +++ b/arch/arm/mach-tegra/board-ardbeg-sensors.c @@ -444,6 +444,47 @@ static struct platform_device ardbeg_ov5640_soc_camera_device = { }; #endif +#if IS_ENABLED(CONFIG_SOC_CAMERA_TC358743) +static int ardbeg_tc358743_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_tc358743_camera_i2c_device = { + I2C_BOARD_INFO("tc358743", 0x0f), +}; + +static struct tegra_camera_platform_data ardbeg_tc358743_camera_platform_data = { + .flip_v = 0, + .flip_h = 0, + .port = TEGRA_CAMERA_PORT_CSI_A, + .lanes = 2, + .continuous_clk = 0, +}; + +static struct soc_camera_link tc358743_iclink = { + .bus_id = 0, /* This must match the .id of tegra_vi01_device */ + .board_info = &ardbeg_tc358743_camera_i2c_device, + .module_name = "tc358743", + .i2c_adapter_id = 2, /* change to 1 if you have auvidea's B100 HDMI to CSI-2 Bridge */ + .power = ardbeg_tc358743_power, + .priv = &ardbeg_tc358743_camera_platform_data, +}; + +static struct platform_device ardbeg_tc358743_soc_camera_device = { + .name = "soc-camera-pdrv", + .id = 4, + .dev = { + .platform_data = &tc358743_iclink, + }, +}; +#endif + static struct regulator *ardbeg_vcmvdd; static int ardbeg_get_extra_regulators(void) @@ -1652,6 +1693,9 @@ static int ardbeg_camera_init(void) #if IS_ENABLED(CONFIG_SOC_CAMERA_OV5640) platform_device_register(&ardbeg_ov5640_soc_camera_device); #endif +#if IS_ENABLED(CONFIG_SOC_CAMERA_TC358743) + platform_device_register(&ardbeg_tc358743_soc_camera_device); +#endif return 0; } |