From 2828cf9ec3f3e8e6fbf7f31f79c308013adf6b31 Mon Sep 17 00:00:00 2001 From: Shunhua Lan Date: Sat, 13 Apr 2024 12:41:47 +0800 Subject: [PATCH] media: i2c: rk628: modify audio status report set audio present and rate ctrls to volatile so that app can get the audio status immediately Change-Id: I91ba1795b0b33ee83d2e2f0195d813a1c7fcfedd Signed-off-by: Shunhua Lan --- drivers/media/i2c/rk628/rk628_csi_v4l2.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/media/i2c/rk628/rk628_csi_v4l2.c b/drivers/media/i2c/rk628/rk628_csi_v4l2.c index 2ff0a1ce11cc..729b813a3658 100644 --- a/drivers/media/i2c/rk628/rk628_csi_v4l2.c +++ b/drivers/media/i2c/rk628/rk628_csi_v4l2.c @@ -2891,6 +2891,11 @@ static int rk628_csi_get_custom_ctrl(struct v4l2_ctrl *ctrl) if (ctrl->id == RK_V4L2_CID_AUDIO_SAMPLING_RATE) { ret = get_audio_sampling_rate(sd); *ctrl->p_new.p_s32 = ret; + } else if (ctrl->id == RK_V4L2_CID_AUDIO_PRESENT) { + ret = tx_5v_power_present(sd) ? rk628_hdmirx_audio_present(csi->audio_info) : 0; + *ctrl->p_new.p_s32 = ret; + } else { + ret = -EINVAL; } return ret; @@ -2913,6 +2918,7 @@ static const struct v4l2_ctrl_config rk628_csi_ctrl_audio_sampling_rate = { }; static const struct v4l2_ctrl_config rk628_csi_ctrl_audio_present = { + .ops = &rk628_csi_custom_ctrl_ops, .id = RK_V4L2_CID_AUDIO_PRESENT, .name = "Audio present", .type = V4L2_CTRL_TYPE_BOOLEAN, @@ -3410,8 +3416,12 @@ static int rk628_csi_probe(struct i2c_client *client, /* custom controls */ csi->audio_sampling_rate_ctrl = v4l2_ctrl_new_custom(&csi->hdl, &rk628_csi_ctrl_audio_sampling_rate, NULL); + if (csi->audio_sampling_rate_ctrl) + csi->audio_sampling_rate_ctrl->flags |= V4L2_CTRL_FLAG_VOLATILE; csi->audio_present_ctrl = v4l2_ctrl_new_custom(&csi->hdl, &rk628_csi_ctrl_audio_present, NULL); + if (csi->audio_present_ctrl) + csi->audio_present_ctrl->flags |= V4L2_CTRL_FLAG_VOLATILE; sd->ctrl_handler = &csi->hdl; if (csi->hdl.error) {