xref: /OK3568_Linux_fs/kernel/drivers/media/usb/pvrusb2/pvrusb2-ctrl.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  *  Copyright (C) 2005 Mike Isely <isely@pobox.com>
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun #ifndef __PVRUSB2_CTRL_H
7*4882a593Smuzhiyun #define __PVRUSB2_CTRL_H
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun struct pvr2_ctrl;
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun enum pvr2_ctl_type {
12*4882a593Smuzhiyun 	pvr2_ctl_int = 0,
13*4882a593Smuzhiyun 	pvr2_ctl_enum = 1,
14*4882a593Smuzhiyun 	pvr2_ctl_bitmask = 2,
15*4882a593Smuzhiyun 	pvr2_ctl_bool = 3,
16*4882a593Smuzhiyun };
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun /* Set the given control. */
20*4882a593Smuzhiyun int pvr2_ctrl_set_value(struct pvr2_ctrl *,int val);
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun /* Set/clear specific bits of the given control. */
23*4882a593Smuzhiyun int pvr2_ctrl_set_mask_value(struct pvr2_ctrl *,int mask,int val);
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun /* Get the current value of the given control. */
26*4882a593Smuzhiyun int pvr2_ctrl_get_value(struct pvr2_ctrl *,int *valptr);
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun /* Retrieve control's type */
29*4882a593Smuzhiyun enum pvr2_ctl_type pvr2_ctrl_get_type(struct pvr2_ctrl *);
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun /* Retrieve control's maximum value (int type) */
32*4882a593Smuzhiyun int pvr2_ctrl_get_max(struct pvr2_ctrl *);
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun /* Retrieve control's minimum value (int type) */
35*4882a593Smuzhiyun int pvr2_ctrl_get_min(struct pvr2_ctrl *);
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun /* Retrieve control's default value (any type) */
38*4882a593Smuzhiyun int pvr2_ctrl_get_def(struct pvr2_ctrl *, int *valptr);
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun /* Retrieve control's enumeration count (enum only) */
41*4882a593Smuzhiyun int pvr2_ctrl_get_cnt(struct pvr2_ctrl *);
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun /* Retrieve control's valid mask bits (bit mask only) */
44*4882a593Smuzhiyun int pvr2_ctrl_get_mask(struct pvr2_ctrl *);
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun /* Retrieve the control's name */
47*4882a593Smuzhiyun const char *pvr2_ctrl_get_name(struct pvr2_ctrl *);
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun /* Retrieve the control's desc */
50*4882a593Smuzhiyun const char *pvr2_ctrl_get_desc(struct pvr2_ctrl *);
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun /* Retrieve a control enumeration or bit mask value */
53*4882a593Smuzhiyun int pvr2_ctrl_get_valname(struct pvr2_ctrl *,int,char *,unsigned int,
54*4882a593Smuzhiyun 			  unsigned int *);
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun /* Return true if control is writable */
57*4882a593Smuzhiyun int pvr2_ctrl_is_writable(struct pvr2_ctrl *);
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun /* Return V4L flags value for control (or zero if there is no v4l control
60*4882a593Smuzhiyun    actually under this control) */
61*4882a593Smuzhiyun unsigned int pvr2_ctrl_get_v4lflags(struct pvr2_ctrl *);
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun /* Return V4L ID for this control or zero if none */
64*4882a593Smuzhiyun int pvr2_ctrl_get_v4lid(struct pvr2_ctrl *);
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun /* Return true if control has custom symbolic representation */
67*4882a593Smuzhiyun int pvr2_ctrl_has_custom_symbols(struct pvr2_ctrl *);
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun /* Convert a given mask/val to a custom symbolic value */
70*4882a593Smuzhiyun int pvr2_ctrl_custom_value_to_sym(struct pvr2_ctrl *,
71*4882a593Smuzhiyun 				  int mask,int val,
72*4882a593Smuzhiyun 				  char *buf,unsigned int maxlen,
73*4882a593Smuzhiyun 				  unsigned int *len);
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun /* Convert a symbolic value to a mask/value pair */
76*4882a593Smuzhiyun int pvr2_ctrl_custom_sym_to_value(struct pvr2_ctrl *,
77*4882a593Smuzhiyun 				  const char *buf,unsigned int len,
78*4882a593Smuzhiyun 				  int *maskptr,int *valptr);
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun /* Convert a given mask/val to a symbolic value */
81*4882a593Smuzhiyun int pvr2_ctrl_value_to_sym(struct pvr2_ctrl *,
82*4882a593Smuzhiyun 			   int mask,int val,
83*4882a593Smuzhiyun 			   char *buf,unsigned int maxlen,
84*4882a593Smuzhiyun 			   unsigned int *len);
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun /* Convert a symbolic value to a mask/value pair */
87*4882a593Smuzhiyun int pvr2_ctrl_sym_to_value(struct pvr2_ctrl *,
88*4882a593Smuzhiyun 			   const char *buf,unsigned int len,
89*4882a593Smuzhiyun 			   int *maskptr,int *valptr);
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun /* Convert a given mask/val to a symbolic value - must already be
92*4882a593Smuzhiyun    inside of critical region. */
93*4882a593Smuzhiyun int pvr2_ctrl_value_to_sym_internal(struct pvr2_ctrl *,
94*4882a593Smuzhiyun 			   int mask,int val,
95*4882a593Smuzhiyun 			   char *buf,unsigned int maxlen,
96*4882a593Smuzhiyun 			   unsigned int *len);
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #endif /* __PVRUSB2_CTRL_H */
99