162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (C) 2005 Mike Isely <isely@pobox.com> 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci#ifndef __PVRUSB2_CTRL_H 762306a36Sopenharmony_ci#define __PVRUSB2_CTRL_H 862306a36Sopenharmony_ci 962306a36Sopenharmony_cistruct pvr2_ctrl; 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_cienum pvr2_ctl_type { 1262306a36Sopenharmony_ci pvr2_ctl_int = 0, 1362306a36Sopenharmony_ci pvr2_ctl_enum = 1, 1462306a36Sopenharmony_ci pvr2_ctl_bitmask = 2, 1562306a36Sopenharmony_ci pvr2_ctl_bool = 3, 1662306a36Sopenharmony_ci}; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci/* Set the given control. */ 2062306a36Sopenharmony_ciint pvr2_ctrl_set_value(struct pvr2_ctrl *,int val); 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci/* Set/clear specific bits of the given control. */ 2362306a36Sopenharmony_ciint pvr2_ctrl_set_mask_value(struct pvr2_ctrl *,int mask,int val); 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci/* Get the current value of the given control. */ 2662306a36Sopenharmony_ciint pvr2_ctrl_get_value(struct pvr2_ctrl *,int *valptr); 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci/* Retrieve control's type */ 2962306a36Sopenharmony_cienum pvr2_ctl_type pvr2_ctrl_get_type(struct pvr2_ctrl *); 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci/* Retrieve control's maximum value (int type) */ 3262306a36Sopenharmony_ciint pvr2_ctrl_get_max(struct pvr2_ctrl *); 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci/* Retrieve control's minimum value (int type) */ 3562306a36Sopenharmony_ciint pvr2_ctrl_get_min(struct pvr2_ctrl *); 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci/* Retrieve control's default value (any type) */ 3862306a36Sopenharmony_ciint pvr2_ctrl_get_def(struct pvr2_ctrl *, int *valptr); 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci/* Retrieve control's enumeration count (enum only) */ 4162306a36Sopenharmony_ciint pvr2_ctrl_get_cnt(struct pvr2_ctrl *); 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci/* Retrieve control's valid mask bits (bit mask only) */ 4462306a36Sopenharmony_ciint pvr2_ctrl_get_mask(struct pvr2_ctrl *); 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci/* Retrieve the control's name */ 4762306a36Sopenharmony_ciconst char *pvr2_ctrl_get_name(struct pvr2_ctrl *); 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci/* Retrieve the control's desc */ 5062306a36Sopenharmony_ciconst char *pvr2_ctrl_get_desc(struct pvr2_ctrl *); 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci/* Retrieve a control enumeration or bit mask value */ 5362306a36Sopenharmony_ciint pvr2_ctrl_get_valname(struct pvr2_ctrl *,int,char *,unsigned int, 5462306a36Sopenharmony_ci unsigned int *); 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci/* Return true if control is writable */ 5762306a36Sopenharmony_ciint pvr2_ctrl_is_writable(struct pvr2_ctrl *); 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci/* Return V4L flags value for control (or zero if there is no v4l control 6062306a36Sopenharmony_ci actually under this control) */ 6162306a36Sopenharmony_ciunsigned int pvr2_ctrl_get_v4lflags(struct pvr2_ctrl *); 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci/* Return V4L ID for this control or zero if none */ 6462306a36Sopenharmony_ciint pvr2_ctrl_get_v4lid(struct pvr2_ctrl *); 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci/* Return true if control has custom symbolic representation */ 6762306a36Sopenharmony_ciint pvr2_ctrl_has_custom_symbols(struct pvr2_ctrl *); 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci/* Convert a given mask/val to a custom symbolic value */ 7062306a36Sopenharmony_ciint pvr2_ctrl_custom_value_to_sym(struct pvr2_ctrl *, 7162306a36Sopenharmony_ci int mask,int val, 7262306a36Sopenharmony_ci char *buf,unsigned int maxlen, 7362306a36Sopenharmony_ci unsigned int *len); 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci/* Convert a symbolic value to a mask/value pair */ 7662306a36Sopenharmony_ciint pvr2_ctrl_custom_sym_to_value(struct pvr2_ctrl *, 7762306a36Sopenharmony_ci const char *buf,unsigned int len, 7862306a36Sopenharmony_ci int *maskptr,int *valptr); 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci/* Convert a given mask/val to a symbolic value */ 8162306a36Sopenharmony_ciint pvr2_ctrl_value_to_sym(struct pvr2_ctrl *, 8262306a36Sopenharmony_ci int mask,int val, 8362306a36Sopenharmony_ci char *buf,unsigned int maxlen, 8462306a36Sopenharmony_ci unsigned int *len); 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci/* Convert a symbolic value to a mask/value pair */ 8762306a36Sopenharmony_ciint pvr2_ctrl_sym_to_value(struct pvr2_ctrl *, 8862306a36Sopenharmony_ci const char *buf,unsigned int len, 8962306a36Sopenharmony_ci int *maskptr,int *valptr); 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci/* Convert a given mask/val to a symbolic value - must already be 9262306a36Sopenharmony_ci inside of critical region. */ 9362306a36Sopenharmony_ciint pvr2_ctrl_value_to_sym_internal(struct pvr2_ctrl *, 9462306a36Sopenharmony_ci int mask,int val, 9562306a36Sopenharmony_ci char *buf,unsigned int maxlen, 9662306a36Sopenharmony_ci unsigned int *len); 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci#endif /* __PVRUSB2_CTRL_H */ 99