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