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()
1604 static int cluster_changed(struct v4l2_ctrl *master) in cluster_changed() argument
1610 for (i = 0; i < master->ncontrols; i++) { in cluster_changed()
1611 struct v4l2_ctrl *ctrl = master->cluster[i]; in cluster_changed()
2300 struct v4l2_ctrl *master = controls[0]; in v4l2_ctrl_auto_cluster() local
2306 WARN_ON(manual_val < master->minimum || manual_val > master->maximum); in v4l2_ctrl_auto_cluster()
2307 WARN_ON(set_volatile && !has_op(master, g_volatile_ctrl)); in v4l2_ctrl_auto_cluster()
2308 master->is_auto = true; in v4l2_ctrl_auto_cluster()
2309 master->has_volatiles = set_volatile; in v4l2_ctrl_auto_cluster()
2310 master->manual_mode_value = manual_val; in v4l2_ctrl_auto_cluster()
2311 master->flags |= V4L2_CTRL_FLAG_UPDATE; in v4l2_ctrl_auto_cluster()
2313 if (!is_cur_manual(master)) in v4l2_ctrl_auto_cluster()
2439 struct v4l2_ctrl *master = ctrl->cluster[0]; in v4l2_ctrl_handler_setup() local
2448 for (i = 0; i < master->ncontrols; i++) { in v4l2_ctrl_handler_setup()
2449 if (master->cluster[i]) { in v4l2_ctrl_handler_setup()
2450 cur_to_new(master->cluster[i]); in v4l2_ctrl_handler_setup()
2451 master->cluster[i]->is_new = 1; in v4l2_ctrl_handler_setup()
2452 master->cluster[i]->done = true; in v4l2_ctrl_handler_setup()
2455 ret = call_op(master, s_ctrl); in v4l2_ctrl_handler_setup()
2833 struct v4l2_ctrl *master; in v4l2_g_ext_ctrls() local
2838 master = helpers[i].mref->ctrl; in v4l2_g_ext_ctrls()
2841 v4l2_ctrl_lock(master); in v4l2_g_ext_ctrls()
2844 if ((master->flags & V4L2_CTRL_FLAG_VOLATILE) || in v4l2_g_ext_ctrls()
2845 (master->has_volatiles && !is_cur_manual(master))) { in v4l2_g_ext_ctrls()
2846 for (j = 0; j < master->ncontrols; j++) in v4l2_g_ext_ctrls()
2847 cur_to_new(master->cluster[j]); in v4l2_g_ext_ctrls()
2848 ret = call_op(master, g_volatile_ctrl); in v4l2_g_ext_ctrls()
2863 v4l2_ctrl_unlock(master); in v4l2_g_ext_ctrls()
2881 struct v4l2_ctrl *master = ctrl->cluster[0]; in get_ctrl() local
2895 v4l2_ctrl_lock(master); in get_ctrl()
2898 for (i = 0; i < master->ncontrols; i++) in get_ctrl()
2899 cur_to_new(master->cluster[i]); in get_ctrl()
2900 ret = call_op(master, g_volatile_ctrl); in get_ctrl()
2905 v4l2_ctrl_unlock(master); in get_ctrl()
2957 static int try_or_set_cluster(struct v4l2_fh *fh, struct v4l2_ctrl *master, in try_or_set_cluster() argument
2968 for (i = 0; i < master->ncontrols; i++) { in try_or_set_cluster()
2969 struct v4l2_ctrl *ctrl = master->cluster[i]; in try_or_set_cluster()
2984 ret = call_op(master, try_ctrl); in try_or_set_cluster()
2987 if (ret || !set || !cluster_changed(master)) in try_or_set_cluster()
2989 ret = call_op(master, s_ctrl); in try_or_set_cluster()
2994 update_flag = is_cur_manual(master) != is_new_manual(master); in try_or_set_cluster()
2995 for (i = 0; i < master->ncontrols; i++) in try_or_set_cluster()
2996 new_to_cur(fh, master->cluster[i], ch_flags | in try_or_set_cluster()
3044 static void update_from_auto_cluster(struct v4l2_ctrl *master) in update_from_auto_cluster() argument
3048 for (i = 1; i < master->ncontrols; i++) in update_from_auto_cluster()
3049 cur_to_new(master->cluster[i]); in update_from_auto_cluster()
3050 if (!call_op(master, g_volatile_ctrl)) in update_from_auto_cluster()
3051 for (i = 1; i < master->ncontrols; i++) in update_from_auto_cluster()
3052 if (master->cluster[i]) in update_from_auto_cluster()
3053 master->cluster[i]->is_new = 1; in update_from_auto_cluster()
3087 struct v4l2_ctrl *master; in try_set_ext_ctrls() local
3094 master = helpers[i].mref->ctrl; in try_set_ext_ctrls()
3095 v4l2_ctrl_lock(master); in try_set_ext_ctrls()
3098 for (j = 0; j < master->ncontrols; j++) in try_set_ext_ctrls()
3099 if (master->cluster[j]) in try_set_ext_ctrls()
3100 master->cluster[j]->is_new = 0; in try_set_ext_ctrls()
3108 if (master->is_auto && master->has_volatiles && in try_set_ext_ctrls()
3109 !is_cur_manual(master)) { in try_set_ext_ctrls()
3111 s32 new_auto_val = master->manual_mode_value + 1; in try_set_ext_ctrls()
3117 if (helpers[tmp_idx].ctrl == master) in try_set_ext_ctrls()
3123 if (new_auto_val == master->manual_mode_value) in try_set_ext_ctrls()
3124 update_from_auto_cluster(master); in try_set_ext_ctrls()
3139 ret = try_or_set_cluster(fh, master, set, 0); in try_set_ext_ctrls()
3150 v4l2_ctrl_unlock(master); in try_set_ext_ctrls()
3186 struct v4l2_ctrl *master = ctrl->cluster[0]; in set_ctrl() local
3191 for (i = 0; i < master->ncontrols; i++) in set_ctrl()
3192 if (master->cluster[i]) in set_ctrl()
3193 master->cluster[i]->is_new = 0; in set_ctrl()
3202 if (master->is_auto && master->has_volatiles && ctrl == master && in set_ctrl()
3203 !is_cur_manual(master) && ctrl->val == master->manual_mode_value) in set_ctrl()
3204 update_from_auto_cluster(master); in set_ctrl()
3207 return try_or_set_cluster(fh, master, true, ch_flags); in set_ctrl()