Lines Matching refs:master

30 #define has_op(master, op) \  argument
31 (master->ops && master->ops->op)
32 #define call_op(master, op) \ argument
33 (has_op(master, op) ? master->ops->op(master) : 0)
48 static bool is_cur_manual(const struct v4l2_ctrl *master) in is_cur_manual() argument
50 return master->is_auto && master->cur.val == master->manual_mode_value; in is_cur_manual()
55 static bool is_new_manual(const struct v4l2_ctrl *master) in is_new_manual() argument
57 return master->is_auto && master->val == master->manual_mode_value; in is_new_manual()
1602 static int cluster_changed(struct v4l2_ctrl *master) in cluster_changed() argument
1608 for (i = 0; i < master->ncontrols; i++) { in cluster_changed()
1609 struct v4l2_ctrl *ctrl = master->cluster[i]; in cluster_changed()
2313 struct v4l2_ctrl *master = controls[0]; in v4l2_ctrl_auto_cluster() local
2319 WARN_ON(manual_val < master->minimum || manual_val > master->maximum); in v4l2_ctrl_auto_cluster()
2320 WARN_ON(set_volatile && !has_op(master, g_volatile_ctrl)); in v4l2_ctrl_auto_cluster()
2321 master->is_auto = true; in v4l2_ctrl_auto_cluster()
2322 master->has_volatiles = set_volatile; in v4l2_ctrl_auto_cluster()
2323 master->manual_mode_value = manual_val; in v4l2_ctrl_auto_cluster()
2324 master->flags |= V4L2_CTRL_FLAG_UPDATE; in v4l2_ctrl_auto_cluster()
2326 if (!is_cur_manual(master)) in v4l2_ctrl_auto_cluster()
2452 struct v4l2_ctrl *master = ctrl->cluster[0]; in v4l2_ctrl_handler_setup() local
2461 for (i = 0; i < master->ncontrols; i++) { in v4l2_ctrl_handler_setup()
2462 if (master->cluster[i]) { in v4l2_ctrl_handler_setup()
2463 cur_to_new(master->cluster[i]); in v4l2_ctrl_handler_setup()
2464 master->cluster[i]->is_new = 1; in v4l2_ctrl_handler_setup()
2465 master->cluster[i]->done = true; in v4l2_ctrl_handler_setup()
2468 ret = call_op(master, s_ctrl); in v4l2_ctrl_handler_setup()
2846 struct v4l2_ctrl *master; in v4l2_g_ext_ctrls() local
2851 master = helpers[i].mref->ctrl; in v4l2_g_ext_ctrls()
2854 v4l2_ctrl_lock(master); in v4l2_g_ext_ctrls()
2857 if ((master->flags & V4L2_CTRL_FLAG_VOLATILE) || in v4l2_g_ext_ctrls()
2858 (master->has_volatiles && !is_cur_manual(master))) { in v4l2_g_ext_ctrls()
2859 for (j = 0; j < master->ncontrols; j++) in v4l2_g_ext_ctrls()
2860 cur_to_new(master->cluster[j]); in v4l2_g_ext_ctrls()
2861 ret = call_op(master, g_volatile_ctrl); in v4l2_g_ext_ctrls()
2876 v4l2_ctrl_unlock(master); in v4l2_g_ext_ctrls()
2894 struct v4l2_ctrl *master = ctrl->cluster[0]; in get_ctrl() local
2908 v4l2_ctrl_lock(master); in get_ctrl()
2911 for (i = 0; i < master->ncontrols; i++) in get_ctrl()
2912 cur_to_new(master->cluster[i]); in get_ctrl()
2913 ret = call_op(master, g_volatile_ctrl); in get_ctrl()
2918 v4l2_ctrl_unlock(master); in get_ctrl()
2970 static int try_or_set_cluster(struct v4l2_fh *fh, struct v4l2_ctrl *master, in try_or_set_cluster() argument
2981 for (i = 0; i < master->ncontrols; i++) { in try_or_set_cluster()
2982 struct v4l2_ctrl *ctrl = master->cluster[i]; in try_or_set_cluster()
2997 ret = call_op(master, try_ctrl); in try_or_set_cluster()
3000 if (ret || !set || !cluster_changed(master)) in try_or_set_cluster()
3002 ret = call_op(master, s_ctrl); in try_or_set_cluster()
3007 update_flag = is_cur_manual(master) != is_new_manual(master); in try_or_set_cluster()
3008 for (i = 0; i < master->ncontrols; i++) in try_or_set_cluster()
3009 new_to_cur(fh, master->cluster[i], ch_flags | in try_or_set_cluster()
3057 static void update_from_auto_cluster(struct v4l2_ctrl *master) in update_from_auto_cluster() argument
3061 for (i = 0; i < master->ncontrols; i++) in update_from_auto_cluster()
3062 cur_to_new(master->cluster[i]); in update_from_auto_cluster()
3063 if (!call_op(master, g_volatile_ctrl)) in update_from_auto_cluster()
3064 for (i = 1; i < master->ncontrols; i++) in update_from_auto_cluster()
3065 if (master->cluster[i]) in update_from_auto_cluster()
3066 master->cluster[i]->is_new = 1; in update_from_auto_cluster()
3100 struct v4l2_ctrl *master; in try_set_ext_ctrls() local
3107 master = helpers[i].mref->ctrl; in try_set_ext_ctrls()
3108 v4l2_ctrl_lock(master); in try_set_ext_ctrls()
3111 for (j = 0; j < master->ncontrols; j++) in try_set_ext_ctrls()
3112 if (master->cluster[j]) in try_set_ext_ctrls()
3113 master->cluster[j]->is_new = 0; in try_set_ext_ctrls()
3121 if (master->is_auto && master->has_volatiles && in try_set_ext_ctrls()
3122 !is_cur_manual(master)) { in try_set_ext_ctrls()
3124 s32 new_auto_val = master->manual_mode_value + 1; in try_set_ext_ctrls()
3130 if (helpers[tmp_idx].ctrl == master) in try_set_ext_ctrls()
3136 if (new_auto_val == master->manual_mode_value) in try_set_ext_ctrls()
3137 update_from_auto_cluster(master); in try_set_ext_ctrls()
3152 ret = try_or_set_cluster(fh, master, set, 0); in try_set_ext_ctrls()
3163 v4l2_ctrl_unlock(master); in try_set_ext_ctrls()
3199 struct v4l2_ctrl *master = ctrl->cluster[0]; in set_ctrl() local
3204 for (i = 0; i < master->ncontrols; i++) in set_ctrl()
3205 if (master->cluster[i]) in set_ctrl()
3206 master->cluster[i]->is_new = 0; in set_ctrl()
3215 if (master->is_auto && master->has_volatiles && ctrl == master && in set_ctrl()
3216 !is_cur_manual(master) && ctrl->val == master->manual_mode_value) in set_ctrl()
3217 update_from_auto_cluster(master); in set_ctrl()
3220 return try_or_set_cluster(fh, master, true, ch_flags); in set_ctrl()