mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
msm: vidc: update menu_skip_mask for menu type controls
Need to pass menu_skip_mask instead of step_size to v4l2_ctrl_modify_range for menu type controls. Otherwise step_size will override skip mask. Mostly step size value is 1. So any menu_item with ctrl.val == 1, will not be allowed at runtime. Change-Id: If33f340a6e85335f80e3cf0a0b13266263e318ed Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
This commit is contained in:
parent
1e662d20c0
commit
48fc0fe3e9
1 changed files with 17 additions and 17 deletions
|
|
@ -1337,6 +1337,7 @@ static int msm_vidc_comm_update_ctrl(struct msm_vidc_inst *inst,
|
|||
{
|
||||
struct v4l2_ctrl *ctrl = NULL;
|
||||
int rc = 0;
|
||||
bool is_menu = false;
|
||||
|
||||
ctrl = v4l2_ctrl_find(&inst->ctrl_handler, id);
|
||||
if (!ctrl) {
|
||||
|
|
@ -1345,33 +1346,32 @@ static int msm_vidc_comm_update_ctrl(struct msm_vidc_inst *inst,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* For menu type, keep original menu_skip_mask(step) */
|
||||
if (ctrl->type == V4L2_CTRL_TYPE_MENU)
|
||||
cap->step_size = (u32)ctrl->step;
|
||||
is_menu = true;
|
||||
|
||||
/**
|
||||
* For menu controls the step value is interpreted
|
||||
* as a menu_skip_mask.
|
||||
*/
|
||||
rc = v4l2_ctrl_modify_range(ctrl, cap->min, cap->max,
|
||||
cap->step_size, cap->default_value);
|
||||
is_menu ? ctrl->menu_skip_mask : cap->step_size,
|
||||
cap->default_value);
|
||||
if (rc) {
|
||||
s_vpr_e(inst->sid,
|
||||
"%s: failed: control name %s, min %d, max %d, step %d, default_value %d\n",
|
||||
"%s: failed: control name %s, min %d, max %d, %s %x, default_value %d\n",
|
||||
__func__, ctrl->name, cap->min, cap->max,
|
||||
cap->step_size, cap->default_value);
|
||||
goto error;
|
||||
}
|
||||
/*
|
||||
* v4l2_ctrl_modify_range() is not updating default_value,
|
||||
* so use v4l2_ctrl_s_ctrl() to update it.
|
||||
*/
|
||||
rc = v4l2_ctrl_s_ctrl(ctrl, cap->default_value);
|
||||
if (rc) {
|
||||
s_vpr_e(inst->sid, "%s: failed s_ctrl: %s with value %d\n",
|
||||
__func__, ctrl->name, cap->default_value);
|
||||
is_menu ? "menu_skip_mask" : "step",
|
||||
is_menu ? ctrl->menu_skip_mask : cap->step_size,
|
||||
cap->default_value);
|
||||
goto error;
|
||||
}
|
||||
|
||||
s_vpr_h(inst->sid,
|
||||
"Updated control: %s: min %lld, max %lld, step %lld, default value = %lld\n",
|
||||
"Updated control: %s: min %lld, max %lld, %s %x, default value = %lld\n",
|
||||
ctrl->name, ctrl->minimum, ctrl->maximum,
|
||||
ctrl->step, ctrl->default_value);
|
||||
is_menu ? "menu_skip_mask" : "step",
|
||||
is_menu ? ctrl->menu_skip_mask : ctrl->step,
|
||||
ctrl->default_value);
|
||||
|
||||
error:
|
||||
return rc;
|
||||
|
|
|
|||
Loading…
Reference in a new issue