Skip to content

Commit

Permalink
media: imx390: add dummpy v4l2 CID
Browse files Browse the repository at this point in the history
Change Description:
add dummpy v4l2 CID to avoid error messages.

Signed-off-by: Chen Meng J <meng.j.chen@intel.com>
Signed-off-by: Ng Khai Wen <khai.wen.ng@intel.com>
  • Loading branch information
khaiwenng authored and krispan-intel committed Jul 16, 2021
1 parent 5f5a060 commit 1a1b0ad
Showing 1 changed file with 141 additions and 0 deletions.
141 changes: 141 additions & 0 deletions drivers/media/i2c/imx390.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,73 @@
#define IMX390_CID_FPS (V4L2_CID_USER_BASE | 0x1005)
#define IMX390_CID_FRAME_INTERVAL (V4L2_CID_USER_BASE | 0x1006)

/*
* dummy CID
*/
#define V4L2_CID_IMX390_BASE (V4L2_CID_USER_BASE + 0x2050)

#define V4L2_CID_FRAME_LENGTH_LINES (V4L2_CID_IMX390_BASE + 1)
#define V4L2_CID_LINE_LENGTH_PIXELS (V4L2_CID_IMX390_BASE + 2)
#define IMX390_CID_SENSOR_THERMAL_DATA (V4L2_CID_IMX390_BASE + 3)

/*
* Select sensor mode directly, driver programs media pad
* formats as in configuration file
*/
#define IMX390_CID_SENSOR_MODE (V4L2_CID_IMX390_BASE + 4)

/* IMX230 HDR specific controls */
#define IMX390_CID_IMX230_HDR_MODE (V4L2_CID_IMX390_BASE + 5)
#define IMX390_CID_IMX230_HDR_ET_RATIO (V4L2_CID_IMX390_BASE + 6)

/* Set multi-exposure frame in HDR with different exposure value */
#define IMX390_CID_EXPOSURE_SHS1 (V4L2_CID_IMX390_BASE + 8)
#define IMX390_CID_EXPOSURE_SHS2 (V4L2_CID_IMX390_BASE + 9)
#define IMX390_CID_EXPOSURE_SHS3 (V4L2_CID_IMX390_BASE + 10)
#define IMX390_CID_EXPOSURE_RHS1 (V4L2_CID_IMX390_BASE + 11)
#define IMX390_CID_EXPOSURE_RHS2 (V4L2_CID_IMX390_BASE + 12)

/* Switch to enable/disable PDAF settings */
#define IMX390_CID_SENSOR_PDAF (V4L2_CID_IMX390_BASE + 13)

/* Set multi-digital gain */
#define IMX390_CID_DIGITAL_GAIN_L (V4L2_CID_IMX390_BASE + 14)
#define IMX390_CID_DIGITAL_GAIN_S (V4L2_CID_IMX390_BASE + 15)
#define IMX390_CID_DIGITAL_GAIN_VS (V4L2_CID_IMX390_BASE + 16)

/* Get sensor bit linear */
#define IMX390_CID_SENSOR_BIT_LINEAR (V4L2_CID_IMX390_BASE + 17)

/* set sensor msb align*/
#define IMX390_CID_MSB_ALIGN (V4L2_CID_IMX390_BASE + 18)

/* enable/disable auto exposure */
#define IMX390_CID_AUTO_EXPOSURE_DEBUG (V4L2_CID_IMX390_BASE + 19)

/* set analog gain for HDR frames */
#define IMX390_CID_ANALOG_GAIN_L (V4L2_CID_IMX390_BASE + 20)
#define IMX390_CID_ANALOG_GAIN_S (V4L2_CID_IMX390_BASE + 21)
#define IMX390_CID_ANALOG_GAIN_VS (V4L2_CID_IMX390_BASE + 22)

/* Set exposure mode: Linear mode or 2-/3-/4-HDR mode */
#define IMX390_CID_EXPOSURE_MODE (V4L2_CID_IMX390_BASE + 23)

/* Set HDR mode exposure ratio */
#define IMX390_CID_EXPOSURE_HDR_RATIO (V4L2_CID_IMX390_BASE + 24)

/* choose hcg/lcg for linear analog */
#define IMX390_CID_ANALOG_LINEAR_CG (V4L2_CID_IMX390_BASE + 25)

/* Digital gain controls from sensor */
#define IMX390_DUMMY_MIN 0
#define IMX390_DUMMY_MAX 0x7ff
#define IMX390_DUMMY_STEP 1
#define IMX390_DUMMY_DEF 0x1

/*
* end of dummy CID
*/

#define to_imx390(_sd) container_of(_sd, struct imx390, sd)

/**
Expand Down Expand Up @@ -186,6 +253,17 @@ struct imx390 {
struct v4l2_ctrl *hblank;
struct v4l2_ctrl *red_balance;
struct v4l2_ctrl *blue_balance;
struct v4l2_ctrl *dummy_exp_shs1;
struct v4l2_ctrl *dummy_exp_shs2;
struct v4l2_ctrl *dummy_exp_shs3;
struct v4l2_ctrl *dummy_exp_rhs1;
struct v4l2_ctrl *dummy_exp_rhs2;
struct v4l2_ctrl *dummy_dg_l;
struct v4l2_ctrl *dummy_dg_s;
struct v4l2_ctrl *dummy_dg_vs;
struct v4l2_ctrl *dummy_ag_l;
struct v4l2_ctrl *dummy_ag_s;
struct v4l2_ctrl *dummy_ag_vs;

/* Current mode */
const struct imx390_mode *cur_mode;
Expand Down Expand Up @@ -516,6 +594,17 @@ static int imx390_set_ctrl(struct v4l2_ctrl *ctrl)
int ret = 0;

switch (ctrl->id) {
case IMX390_CID_EXPOSURE_SHS1:
case IMX390_CID_EXPOSURE_SHS2:
case IMX390_CID_EXPOSURE_SHS3:
case IMX390_CID_EXPOSURE_RHS1:
case IMX390_CID_EXPOSURE_RHS2:
case IMX390_CID_DIGITAL_GAIN_L:
case IMX390_CID_DIGITAL_GAIN_S:
case IMX390_CID_DIGITAL_GAIN_VS:
case IMX390_CID_ANALOG_GAIN_L:
case IMX390_CID_ANALOG_GAIN_S:
case IMX390_CID_ANALOG_GAIN_VS:
case V4L2_CID_DIGITAL_GAIN:
case V4L2_CID_GAIN:
ret = 0;
Expand Down Expand Up @@ -554,6 +643,7 @@ static int imx390_init_controls(struct imx390 *imx390)
struct v4l2_ctrl_handler *ctrl_hdlr;
s64 hblank;
int ret;
struct v4l2_ctrl_config cfg = { 0 };

ctrl_hdlr = &imx390->ctrl_handler;
ret = v4l2_ctrl_handler_init(ctrl_hdlr, 8);
Expand Down Expand Up @@ -623,6 +713,57 @@ static int imx390_init_controls(struct imx390 *imx390)
IMX390_BLUE_BALANCE_STEP,
IMX390_BLUE_BALANCE_DEF);

cfg.ops = &imx390_ctrl_ops;
cfg.id = IMX390_CID_EXPOSURE_SHS1;
cfg.name = "IMX390_CID_EXPOSURE_SHS1";
cfg.type = V4L2_CTRL_TYPE_INTEGER;
cfg.max = IMX390_DUMMY_MAX;
cfg.min = IMX390_DUMMY_MIN;
cfg.step = IMX390_DUMMY_STEP;
cfg.def = IMX390_DUMMY_DEF;
cfg.qmenu = 0; cfg.elem_size = 0;
imx390->dummy_exp_shs1 = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

cfg.id = IMX390_CID_EXPOSURE_SHS2;
cfg.name = "IMX390_CID_EXPOSURE_SHS2";
imx390->dummy_exp_shs2 = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

cfg.id = IMX390_CID_EXPOSURE_SHS3;
cfg.name = "IMX390_CID_EXPOSURE_SHS3";
imx390->dummy_exp_shs3 = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

cfg.id = IMX390_CID_EXPOSURE_RHS1;
cfg.name = "IMX390_CID_EXPOSURE_RHS1";
imx390->dummy_exp_rhs1 = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

cfg.id = IMX390_CID_EXPOSURE_RHS2;
cfg.name = "IMX390_CID_EXPOSURE_RHS2";
imx390->dummy_exp_rhs2 = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

cfg.id = IMX390_CID_DIGITAL_GAIN_L;
cfg.name = "IMX390_CID_DIGITAL_GAIN_L";
imx390->dummy_dg_l = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

cfg.id = IMX390_CID_DIGITAL_GAIN_S;
cfg.name = "IMX390_CID_DIGITAL_GAIN_S";
imx390->dummy_dg_s = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

cfg.id = IMX390_CID_DIGITAL_GAIN_VS;
cfg.name = "IMX390_CID_DIGITAL_GAIN_VS";
imx390->dummy_dg_vs = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

cfg.id = IMX390_CID_ANALOG_GAIN_L;
cfg.name = "IMX390_CID_ANALOG_GAIN_L";
imx390->dummy_ag_l = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

cfg.id = IMX390_CID_ANALOG_GAIN_S;
cfg.name = "IMX390_CID_ANALOG_GAIN_S";
imx390->dummy_ag_s = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

cfg.id = IMX390_CID_ANALOG_GAIN_VS;
cfg.name = "IMX390_CID_ANALOG_GAIN_VS";
imx390->dummy_ag_vs = v4l2_ctrl_new_custom(ctrl_hdlr, &cfg, NULL);

if (ctrl_hdlr->error)
return ctrl_hdlr->error;

Expand Down

0 comments on commit 1a1b0ad

Please sign in to comment.