12504ba9fSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 20c0d06caSMauro Carvalho Chehab /* 30c0d06caSMauro Carvalho Chehab * 40c0d06caSMauro Carvalho Chehab * Copyright (C) 2005 Mike Isely <isely@pobox.com> 50c0d06caSMauro Carvalho Chehab */ 60c0d06caSMauro Carvalho Chehab #ifndef __PVRUSB2_CTRL_H 70c0d06caSMauro Carvalho Chehab #define __PVRUSB2_CTRL_H 80c0d06caSMauro Carvalho Chehab 90c0d06caSMauro Carvalho Chehab struct pvr2_ctrl; 100c0d06caSMauro Carvalho Chehab 110c0d06caSMauro Carvalho Chehab enum pvr2_ctl_type { 120c0d06caSMauro Carvalho Chehab pvr2_ctl_int = 0, 130c0d06caSMauro Carvalho Chehab pvr2_ctl_enum = 1, 140c0d06caSMauro Carvalho Chehab pvr2_ctl_bitmask = 2, 150c0d06caSMauro Carvalho Chehab pvr2_ctl_bool = 3, 160c0d06caSMauro Carvalho Chehab }; 170c0d06caSMauro Carvalho Chehab 180c0d06caSMauro Carvalho Chehab 190c0d06caSMauro Carvalho Chehab /* Set the given control. */ 200c0d06caSMauro Carvalho Chehab int pvr2_ctrl_set_value(struct pvr2_ctrl *,int val); 210c0d06caSMauro Carvalho Chehab 220c0d06caSMauro Carvalho Chehab /* Set/clear specific bits of the given control. */ 230c0d06caSMauro Carvalho Chehab int pvr2_ctrl_set_mask_value(struct pvr2_ctrl *,int mask,int val); 240c0d06caSMauro Carvalho Chehab 250c0d06caSMauro Carvalho Chehab /* Get the current value of the given control. */ 260c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_value(struct pvr2_ctrl *,int *valptr); 270c0d06caSMauro Carvalho Chehab 280c0d06caSMauro Carvalho Chehab /* Retrieve control's type */ 290c0d06caSMauro Carvalho Chehab enum pvr2_ctl_type pvr2_ctrl_get_type(struct pvr2_ctrl *); 300c0d06caSMauro Carvalho Chehab 310c0d06caSMauro Carvalho Chehab /* Retrieve control's maximum value (int type) */ 320c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_max(struct pvr2_ctrl *); 330c0d06caSMauro Carvalho Chehab 340c0d06caSMauro Carvalho Chehab /* Retrieve control's minimum value (int type) */ 350c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_min(struct pvr2_ctrl *); 360c0d06caSMauro Carvalho Chehab 370c0d06caSMauro Carvalho Chehab /* Retrieve control's default value (any type) */ 380c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_def(struct pvr2_ctrl *, int *valptr); 390c0d06caSMauro Carvalho Chehab 400c0d06caSMauro Carvalho Chehab /* Retrieve control's enumeration count (enum only) */ 410c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_cnt(struct pvr2_ctrl *); 420c0d06caSMauro Carvalho Chehab 430c0d06caSMauro Carvalho Chehab /* Retrieve control's valid mask bits (bit mask only) */ 440c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_mask(struct pvr2_ctrl *); 450c0d06caSMauro Carvalho Chehab 460c0d06caSMauro Carvalho Chehab /* Retrieve the control's name */ 470c0d06caSMauro Carvalho Chehab const char *pvr2_ctrl_get_name(struct pvr2_ctrl *); 480c0d06caSMauro Carvalho Chehab 490c0d06caSMauro Carvalho Chehab /* Retrieve the control's desc */ 500c0d06caSMauro Carvalho Chehab const char *pvr2_ctrl_get_desc(struct pvr2_ctrl *); 510c0d06caSMauro Carvalho Chehab 520c0d06caSMauro Carvalho Chehab /* Retrieve a control enumeration or bit mask value */ 530c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_valname(struct pvr2_ctrl *,int,char *,unsigned int, 540c0d06caSMauro Carvalho Chehab unsigned int *); 550c0d06caSMauro Carvalho Chehab 560c0d06caSMauro Carvalho Chehab /* Return true if control is writable */ 570c0d06caSMauro Carvalho Chehab int pvr2_ctrl_is_writable(struct pvr2_ctrl *); 580c0d06caSMauro Carvalho Chehab 590c0d06caSMauro Carvalho Chehab /* Return V4L flags value for control (or zero if there is no v4l control 600c0d06caSMauro Carvalho Chehab actually under this control) */ 610c0d06caSMauro Carvalho Chehab unsigned int pvr2_ctrl_get_v4lflags(struct pvr2_ctrl *); 620c0d06caSMauro Carvalho Chehab 630c0d06caSMauro Carvalho Chehab /* Return V4L ID for this control or zero if none */ 640c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_v4lid(struct pvr2_ctrl *); 650c0d06caSMauro Carvalho Chehab 660c0d06caSMauro Carvalho Chehab /* Return true if control has custom symbolic representation */ 670c0d06caSMauro Carvalho Chehab int pvr2_ctrl_has_custom_symbols(struct pvr2_ctrl *); 680c0d06caSMauro Carvalho Chehab 690c0d06caSMauro Carvalho Chehab /* Convert a given mask/val to a custom symbolic value */ 700c0d06caSMauro Carvalho Chehab int pvr2_ctrl_custom_value_to_sym(struct pvr2_ctrl *, 710c0d06caSMauro Carvalho Chehab int mask,int val, 720c0d06caSMauro Carvalho Chehab char *buf,unsigned int maxlen, 730c0d06caSMauro Carvalho Chehab unsigned int *len); 740c0d06caSMauro Carvalho Chehab 750c0d06caSMauro Carvalho Chehab /* Convert a symbolic value to a mask/value pair */ 760c0d06caSMauro Carvalho Chehab int pvr2_ctrl_custom_sym_to_value(struct pvr2_ctrl *, 770c0d06caSMauro Carvalho Chehab const char *buf,unsigned int len, 780c0d06caSMauro Carvalho Chehab int *maskptr,int *valptr); 790c0d06caSMauro Carvalho Chehab 800c0d06caSMauro Carvalho Chehab /* Convert a given mask/val to a symbolic value */ 810c0d06caSMauro Carvalho Chehab int pvr2_ctrl_value_to_sym(struct pvr2_ctrl *, 820c0d06caSMauro Carvalho Chehab int mask,int val, 830c0d06caSMauro Carvalho Chehab char *buf,unsigned int maxlen, 840c0d06caSMauro Carvalho Chehab unsigned int *len); 850c0d06caSMauro Carvalho Chehab 860c0d06caSMauro Carvalho Chehab /* Convert a symbolic value to a mask/value pair */ 870c0d06caSMauro Carvalho Chehab int pvr2_ctrl_sym_to_value(struct pvr2_ctrl *, 880c0d06caSMauro Carvalho Chehab const char *buf,unsigned int len, 890c0d06caSMauro Carvalho Chehab int *maskptr,int *valptr); 900c0d06caSMauro Carvalho Chehab 910c0d06caSMauro Carvalho Chehab /* Convert a given mask/val to a symbolic value - must already be 920c0d06caSMauro Carvalho Chehab inside of critical region. */ 930c0d06caSMauro Carvalho Chehab int pvr2_ctrl_value_to_sym_internal(struct pvr2_ctrl *, 940c0d06caSMauro Carvalho Chehab int mask,int val, 950c0d06caSMauro Carvalho Chehab char *buf,unsigned int maxlen, 960c0d06caSMauro Carvalho Chehab unsigned int *len); 970c0d06caSMauro Carvalho Chehab 980c0d06caSMauro Carvalho Chehab #endif /* __PVRUSB2_CTRL_H */ 99