Lines Matching +full:enum +full:- +full:cnt +full:- +full:name

1 // SPDX-License-Identifier: GPL-2.0-only
7 #include "pvrusb2-ctrl.h"
8 #include "pvrusb2-hdw-internal.h"
16 if (cptr->info->check_value) { in pvr2_ctrl_range_check()
17 if (!cptr->info->check_value(cptr,val)) return -ERANGE; in pvr2_ctrl_range_check()
18 } else if (cptr->info->type == pvr2_ctl_enum) { in pvr2_ctrl_range_check()
19 if (val < 0) return -ERANGE; in pvr2_ctrl_range_check()
20 if (val >= cptr->info->def.type_enum.count) return -ERANGE; in pvr2_ctrl_range_check()
23 lim = cptr->info->def.type_int.min_value; in pvr2_ctrl_range_check()
24 if (cptr->info->get_min_value) { in pvr2_ctrl_range_check()
25 cptr->info->get_min_value(cptr,&lim); in pvr2_ctrl_range_check()
27 if (val < lim) return -ERANGE; in pvr2_ctrl_range_check()
28 lim = cptr->info->def.type_int.max_value; in pvr2_ctrl_range_check()
29 if (cptr->info->get_max_value) { in pvr2_ctrl_range_check()
30 cptr->info->get_max_value(cptr,&lim); in pvr2_ctrl_range_check()
32 if (val > lim) return -ERANGE; in pvr2_ctrl_range_check()
49 if (!cptr) return -EINVAL; in pvr2_ctrl_set_mask_value()
50 LOCK_TAKE(cptr->hdw->big_lock); do { in pvr2_ctrl_set_mask_value()
51 if (cptr->info->set_value) { in pvr2_ctrl_set_mask_value()
52 if (cptr->info->type == pvr2_ctl_bitmask) { in pvr2_ctrl_set_mask_value()
53 mask &= cptr->info->def.type_bitmask.valid_bits; in pvr2_ctrl_set_mask_value()
54 } else if ((cptr->info->type == pvr2_ctl_int)|| in pvr2_ctrl_set_mask_value()
55 (cptr->info->type == pvr2_ctl_enum)) { in pvr2_ctrl_set_mask_value()
58 } else if (cptr->info->type != pvr2_ctl_bool) { in pvr2_ctrl_set_mask_value()
61 ret = cptr->info->set_value(cptr,mask,val); in pvr2_ctrl_set_mask_value()
63 ret = -EPERM; in pvr2_ctrl_set_mask_value()
65 } while(0); LOCK_GIVE(cptr->hdw->big_lock); in pvr2_ctrl_set_mask_value()
74 if (!cptr) return -EINVAL; in pvr2_ctrl_get_value()
75 LOCK_TAKE(cptr->hdw->big_lock); do { in pvr2_ctrl_get_value()
76 ret = cptr->info->get_value(cptr,valptr); in pvr2_ctrl_get_value()
77 } while(0); LOCK_GIVE(cptr->hdw->big_lock); in pvr2_ctrl_get_value()
83 enum pvr2_ctl_type pvr2_ctrl_get_type(struct pvr2_ctrl *cptr) in pvr2_ctrl_get_type()
86 return cptr->info->type; in pvr2_ctrl_get_type()
95 LOCK_TAKE(cptr->hdw->big_lock); do { in pvr2_ctrl_get_max()
96 if (cptr->info->get_max_value) { in pvr2_ctrl_get_max()
97 cptr->info->get_max_value(cptr,&ret); in pvr2_ctrl_get_max()
98 } else if (cptr->info->type == pvr2_ctl_int) { in pvr2_ctrl_get_max()
99 ret = cptr->info->def.type_int.max_value; in pvr2_ctrl_get_max()
101 } while(0); LOCK_GIVE(cptr->hdw->big_lock); in pvr2_ctrl_get_max()
111 LOCK_TAKE(cptr->hdw->big_lock); do { in pvr2_ctrl_get_min()
112 if (cptr->info->get_min_value) { in pvr2_ctrl_get_min()
113 cptr->info->get_min_value(cptr,&ret); in pvr2_ctrl_get_min()
114 } else if (cptr->info->type == pvr2_ctl_int) { in pvr2_ctrl_get_min()
115 ret = cptr->info->def.type_int.min_value; in pvr2_ctrl_get_min()
117 } while(0); LOCK_GIVE(cptr->hdw->big_lock); in pvr2_ctrl_get_min()
126 if (!cptr) return -EINVAL; in pvr2_ctrl_get_def()
127 LOCK_TAKE(cptr->hdw->big_lock); do { in pvr2_ctrl_get_def()
128 if (cptr->info->get_def_value) { in pvr2_ctrl_get_def()
129 ret = cptr->info->get_def_value(cptr, valptr); in pvr2_ctrl_get_def()
131 *valptr = cptr->info->default_value; in pvr2_ctrl_get_def()
133 } while(0); LOCK_GIVE(cptr->hdw->big_lock); in pvr2_ctrl_get_def()
138 /* Retrieve control's enumeration count (enum only) */
143 LOCK_TAKE(cptr->hdw->big_lock); do { in pvr2_ctrl_get_cnt()
144 if (cptr->info->type == pvr2_ctl_enum) { in pvr2_ctrl_get_cnt()
145 ret = cptr->info->def.type_enum.count; in pvr2_ctrl_get_cnt()
147 } while(0); LOCK_GIVE(cptr->hdw->big_lock); in pvr2_ctrl_get_cnt()
157 LOCK_TAKE(cptr->hdw->big_lock); do { in pvr2_ctrl_get_mask()
158 if (cptr->info->type == pvr2_ctl_bitmask) { in pvr2_ctrl_get_mask()
159 ret = cptr->info->def.type_bitmask.valid_bits; in pvr2_ctrl_get_mask()
161 } while(0); LOCK_GIVE(cptr->hdw->big_lock); in pvr2_ctrl_get_mask()
166 /* Retrieve the control's name */
170 return cptr->info->name; in pvr2_ctrl_get_name()
178 return cptr->info->desc; in pvr2_ctrl_get_desc()
187 int ret = -EINVAL; in pvr2_ctrl_get_valname()
190 LOCK_TAKE(cptr->hdw->big_lock); do { in pvr2_ctrl_get_valname()
191 if (cptr->info->type == pvr2_ctl_enum) { in pvr2_ctrl_get_valname()
193 names = cptr->info->def.type_enum.value_names; in pvr2_ctrl_get_valname()
204 } else if (cptr->info->type == pvr2_ctl_bitmask) { in pvr2_ctrl_get_valname()
208 names = cptr->info->def.type_bitmask.bit_names; in pvr2_ctrl_get_valname()
209 val &= cptr->info->def.type_bitmask.valid_bits; in pvr2_ctrl_get_valname()
219 } while(0); LOCK_GIVE(cptr->hdw->big_lock); in pvr2_ctrl_get_valname()
228 return cptr->info->v4l_id; in pvr2_ctrl_get_v4lid()
236 if (cptr->info->get_v4lflags) { in pvr2_ctrl_get_v4lflags()
237 flags = cptr->info->get_v4lflags(cptr); in pvr2_ctrl_get_v4lflags()
240 if (cptr->info->set_value) { in pvr2_ctrl_get_v4lflags()
254 return cptr->info->set_value != NULL; in pvr2_ctrl_is_writable()
262 if (!cptr->info->val_to_sym) return 0; in pvr2_ctrl_has_custom_symbols()
263 if (!cptr->info->sym_to_val) return 0; in pvr2_ctrl_has_custom_symbols()
274 if (!cptr) return -EINVAL; in pvr2_ctrl_custom_value_to_sym()
275 if (!cptr->info->val_to_sym) return -EINVAL; in pvr2_ctrl_custom_value_to_sym()
276 return cptr->info->val_to_sym(cptr,mask,val,buf,maxlen,len); in pvr2_ctrl_custom_value_to_sym()
285 if (!cptr) return -EINVAL; in pvr2_ctrl_custom_sym_to_value()
286 if (!cptr->info->sym_to_val) return -EINVAL; in pvr2_ctrl_custom_sym_to_value()
287 return cptr->info->sym_to_val(cptr,buf,len,maskptr,valptr); in pvr2_ctrl_custom_sym_to_value()
298 unsigned int uc,cnt; in gen_bitmask_string() local
309 cnt = scnprintf(ptr,len,"%s%s%s", in gen_bitmask_string()
312 ((val & sm) ? "+" : "-")), in gen_bitmask_string()
314 ptr += cnt; len -= cnt; uc += cnt; in gen_bitmask_string()
323 cnt = scnprintf(ptr,len,"%s0x%lx", in gen_bitmask_string()
326 ptr += cnt; len -= cnt; uc += cnt; in gen_bitmask_string()
329 cnt = scnprintf(ptr,len,"%s+0x%lx", in gen_bitmask_string()
332 ptr += cnt; len -= cnt; uc += cnt; in gen_bitmask_string()
335 cnt = scnprintf(ptr,len,"%s+0x%lx", in gen_bitmask_string()
338 ptr += cnt; len -= cnt; uc += cnt; in gen_bitmask_string()
370 return kstrtoint(ptr, 0, valptr) ? -EINVAL : 1; in parse_token()
400 unsigned int cnt; in parse_tlist() local
406 cnt = 0; in parse_tlist()
407 while ((cnt < len) && in parse_tlist()
408 ((ptr[cnt] <= 32) || in parse_tlist()
409 (ptr[cnt] >= 127))) cnt++; in parse_tlist()
410 ptr += cnt; in parse_tlist()
411 len -= cnt; in parse_tlist()
413 if ((*ptr == '-') || (*ptr == '+')) { in parse_tlist()
414 mode = (*ptr == '-') ? -1 : 1; in parse_tlist()
416 len--; in parse_tlist()
418 cnt = 0; in parse_tlist()
419 while (cnt < len) { in parse_tlist()
420 if (ptr[cnt] <= 32) break; in parse_tlist()
421 if (ptr[cnt] >= 127) break; in parse_tlist()
422 cnt++; in parse_tlist()
424 if (!cnt) break; in parse_tlist()
425 if (parse_mtoken(ptr,cnt,&kv,names,valid_bits)) { in parse_tlist()
426 ret = -EINVAL; in parse_tlist()
429 ptr += cnt; in parse_tlist()
430 len -= cnt; in parse_tlist()
436 case -1: in parse_tlist()
459 int ret = -EINVAL; in pvr2_ctrl_sym_to_value()
460 unsigned int cnt; in pvr2_ctrl_sym_to_value() local
465 cnt = 0; in pvr2_ctrl_sym_to_value()
466 while ((cnt < len) && ((ptr[cnt] <= 32) || (ptr[cnt] >= 127))) cnt++; in pvr2_ctrl_sym_to_value()
467 len -= cnt; ptr += cnt; in pvr2_ctrl_sym_to_value()
468 cnt = 0; in pvr2_ctrl_sym_to_value()
469 while ((cnt < len) && ((ptr[len-(cnt+1)] <= 32) || in pvr2_ctrl_sym_to_value()
470 (ptr[len-(cnt+1)] >= 127))) cnt++; in pvr2_ctrl_sym_to_value()
471 len -= cnt; in pvr2_ctrl_sym_to_value()
473 if (!len) return -EINVAL; in pvr2_ctrl_sym_to_value()
475 LOCK_TAKE(cptr->hdw->big_lock); do { in pvr2_ctrl_sym_to_value()
476 if (cptr->info->type == pvr2_ctl_int) { in pvr2_ctrl_sym_to_value()
482 } else if (cptr->info->type == pvr2_ctl_bool) { in pvr2_ctrl_sym_to_value()
491 } else if (cptr->info->type == pvr2_ctl_enum) { in pvr2_ctrl_sym_to_value()
494 cptr->info->def.type_enum.value_names, in pvr2_ctrl_sym_to_value()
495 cptr->info->def.type_enum.count); in pvr2_ctrl_sym_to_value()
500 } else if (cptr->info->type == pvr2_ctl_bitmask) { in pvr2_ctrl_sym_to_value()
503 cptr->info->def.type_bitmask.bit_names, in pvr2_ctrl_sym_to_value()
504 cptr->info->def.type_bitmask.valid_bits); in pvr2_ctrl_sym_to_value()
506 } while(0); LOCK_GIVE(cptr->hdw->big_lock); in pvr2_ctrl_sym_to_value()
517 int ret = -EINVAL; in pvr2_ctrl_value_to_sym_internal()
520 if (cptr->info->type == pvr2_ctl_int) { in pvr2_ctrl_value_to_sym_internal()
523 } else if (cptr->info->type == pvr2_ctl_bool) { in pvr2_ctrl_value_to_sym_internal()
526 } else if (cptr->info->type == pvr2_ctl_enum) { in pvr2_ctrl_value_to_sym_internal()
528 names = cptr->info->def.type_enum.value_names; in pvr2_ctrl_value_to_sym_internal()
530 (val < cptr->info->def.type_enum.count)) { in pvr2_ctrl_value_to_sym_internal()
540 } else if (cptr->info->type == pvr2_ctl_bitmask) { in pvr2_ctrl_value_to_sym_internal()
542 val & mask & cptr->info->def.type_bitmask.valid_bits, in pvr2_ctrl_value_to_sym_internal()
544 cptr->info->def.type_bitmask.bit_names, in pvr2_ctrl_value_to_sym_internal()
558 LOCK_TAKE(cptr->hdw->big_lock); do { in pvr2_ctrl_value_to_sym()
561 } while(0); LOCK_GIVE(cptr->hdw->big_lock); in pvr2_ctrl_value_to_sym()