mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
drivers: media: add alternating exposure support
- update ar0234 driver to support ar0234 sensor hardware provided support for capturing frames using alternating exposure time and analog gain settings through automatic context switching - added new v4l2 control having control id TEGRA_CAMERA_CID_ALTERNATING_EXPOSURE for configuring alternating exposure settings - other changes to support aforementioned changes Bug 4064517 Jira L4T-4501 Change-Id: Id1d3d745345836436b16da1fd00cc97f2e3b5553 Signed-off-by: Shashank Kumar <shaskumar@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2881141 (cherry picked from commit e973475525c9a7a99552282316e06126b8fff625) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2987067 Reviewed-by: Anubhav Rai <arai@nvidia.com> Reviewed-by: Bibek Basu <bbasu@nvidia.com> Tested-by: Anubhav Rai <arai@nvidia.com> GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
2bd1339e63
commit
c56189df5d
@@ -186,6 +186,8 @@ struct tegracam_ctrl_ops {
|
||||
int (*set_exposure_short)(struct tegracam_device *tc_dev, s64 val);
|
||||
int (*set_frame_rate)(struct tegracam_device *tc_dev, s64 val);
|
||||
int (*set_group_hold)(struct tegracam_device *tc_dev, bool val);
|
||||
int (*set_alternating_exposure)(struct tegracam_device *tc_dev,
|
||||
struct alternating_exposure_cfg *val);
|
||||
int (*fill_string_ctrl)(struct tegracam_device *tc_dev,
|
||||
struct v4l2_ctrl *ctrl);
|
||||
int (*fill_compound_ctrl)(struct tegracam_device *tc_dev,
|
||||
@@ -353,6 +355,7 @@ const struct camera_common_colorfmt *camera_common_find_pixelfmt(
|
||||
unsigned int pix_fmt);
|
||||
|
||||
/* common control layer init */
|
||||
int tegracam_ctrl_synchronize_ctrls(struct tegracam_ctrl_handler *handler);
|
||||
int tegracam_ctrl_set_overrides(struct tegracam_ctrl_handler *handler);
|
||||
int tegracam_ctrl_handler_init(struct tegracam_ctrl_handler *handler);
|
||||
int tegracam_init_ctrl_ranges(struct tegracam_ctrl_handler *handler);
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#define TEGRA_CAMERA_CID_FRAME_RATE (TEGRA_CAMERA_CID_BASE+11)
|
||||
#define TEGRA_CAMERA_CID_EXPOSURE_SHORT (TEGRA_CAMERA_CID_BASE+12)
|
||||
#define TEGRA_CAMERA_CID_STEREO_EEPROM (TEGRA_CAMERA_CID_BASE+13)
|
||||
#define TEGRA_CAMERA_CID_ALTERNATING_EXPOSURE (TEGRA_CAMERA_CID_BASE+14)
|
||||
|
||||
#define TEGRA_CAMERA_CID_SENSOR_CONFIG (TEGRA_CAMERA_CID_BASE+50)
|
||||
#define TEGRA_CAMERA_CID_SENSOR_MODE_BLOB (TEGRA_CAMERA_CID_BASE+51)
|
||||
@@ -74,6 +75,7 @@
|
||||
|
||||
#define TEGRA_CAM_MAX_COMPOUND_CONTROLS 4
|
||||
#define TEGRA_CAM_COMPOUND_CTRL_EEPROM_INDEX 0
|
||||
#define TEGRA_CAM_COMPOUND_CTRL_ALT_EXP_INDEX 1
|
||||
|
||||
#define CSI_PHY_MODE_DPHY 0
|
||||
#define CSI_PHY_MODE_CPHY 1
|
||||
@@ -172,4 +174,15 @@ struct sensor_mode_properties {
|
||||
(sizeof(struct sensor_blob) / sizeof(__u32))
|
||||
#define SENSOR_CTRL_BLOB_SIZE \
|
||||
(sizeof(struct sensor_blob) / sizeof(__u32))
|
||||
|
||||
struct alternating_exposure_cfg {
|
||||
__u8 enable;
|
||||
__s64 exp_time_0;
|
||||
__s64 exp_time_1;
|
||||
__s64 analog_gain_0;
|
||||
__s64 analog_gain_1;
|
||||
};
|
||||
|
||||
#define ALTERNATING_EXPOSURE_CID_SIZE \
|
||||
sizeof(struct alternating_exposure_cfg)
|
||||
#endif /* __TEGRA_V4L2_CAMERA__ */
|
||||
|
||||
Reference in New Issue
Block a user