2021-04-27 14:07:03 +02:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* V4L2 controls framework private header .
*
* Copyright ( C ) 2010 - 2021 Hans Verkuil < hverkuil - cisco @ xs4all . nl >
*/
# ifndef _V4L2_CTRLS_PRIV_H_
# define _V4L2_CTRLS_PRIV_H_
# define dprintk(vdev, fmt, arg...) do { \
if ( ! WARN_ON ( ! ( vdev ) ) & & ( ( vdev ) - > dev_debug & V4L2_DEV_DEBUG_CTRL ) ) \
printk ( KERN_DEBUG pr_fmt ( " %s: %s: " fmt ) , \
__func__ , video_device_node_name ( vdev ) , # # arg ) ; \
} while ( 0 )
# define has_op(master, op) \
( ( master ) - > ops & & ( master ) - > ops - > op )
# define call_op(master, op) \
( has_op ( master , op ) ? ( master ) - > ops - > op ( master ) : 0 )
static inline u32 node2id ( struct list_head * node )
{
return list_entry ( node , struct v4l2_ctrl_ref , node ) - > ctrl - > id ;
}
/*
* Small helper function to determine if the autocluster is set to manual
* mode .
*/
static inline bool is_cur_manual ( const struct v4l2_ctrl * master )
{
return master - > is_auto & & master - > cur . val = = master - > manual_mode_value ;
}
/*
* Small helper function to determine if the autocluster will be set to manual
* mode .
*/
static inline bool is_new_manual ( const struct v4l2_ctrl * master )
{
return master - > is_auto & & master - > val = = master - > manual_mode_value ;
}
static inline u32 user_flags ( const struct v4l2_ctrl * ctrl )
{
u32 flags = ctrl - > flags ;
if ( ctrl - > is_ptr )
flags | = V4L2_CTRL_FLAG_HAS_PAYLOAD ;
return flags ;
}
/* v4l2-ctrls-core.c */
void cur_to_new ( struct v4l2_ctrl * ctrl ) ;
void cur_to_req ( struct v4l2_ctrl_ref * ref ) ;
void new_to_cur ( struct v4l2_fh * fh , struct v4l2_ctrl * ctrl , u32 ch_flags ) ;
void new_to_req ( struct v4l2_ctrl_ref * ref ) ;
2022-07-08 17:21:41 +01:00
int req_to_new ( struct v4l2_ctrl_ref * ref ) ;
2021-04-27 14:07:03 +02:00
void send_initial_event ( struct v4l2_fh * fh , struct v4l2_ctrl * ctrl ) ;
void send_event ( struct v4l2_fh * fh , struct v4l2_ctrl * ctrl , u32 changes ) ;
int handler_new_ref ( struct v4l2_ctrl_handler * hdl ,
struct v4l2_ctrl * ctrl ,
struct v4l2_ctrl_ref * * ctrl_ref ,
bool from_other_dev , bool allocate_req ) ;
struct v4l2_ctrl_ref * find_ref ( struct v4l2_ctrl_handler * hdl , u32 id ) ;
struct v4l2_ctrl_ref * find_ref_lock ( struct v4l2_ctrl_handler * hdl , u32 id ) ;
int check_range ( enum v4l2_ctrl_type type ,
s64 min , s64 max , u64 step , s64 def ) ;
void update_from_auto_cluster ( struct v4l2_ctrl * master ) ;
int try_or_set_cluster ( struct v4l2_fh * fh , struct v4l2_ctrl * master ,
bool set , u32 ch_flags ) ;
/* v4l2-ctrls-api.c */
int v4l2_g_ext_ctrls_common ( struct v4l2_ctrl_handler * hdl ,
struct v4l2_ext_controls * cs ,
struct video_device * vdev ) ;
int try_set_ext_ctrls_common ( struct v4l2_fh * fh ,
struct v4l2_ctrl_handler * hdl ,
struct v4l2_ext_controls * cs ,
struct video_device * vdev , bool set ) ;
/* v4l2-ctrls-request.c */
void v4l2_ctrl_handler_init_request ( struct v4l2_ctrl_handler * hdl ) ;
void v4l2_ctrl_handler_free_request ( struct v4l2_ctrl_handler * hdl ) ;
int v4l2_g_ext_ctrls_request ( struct v4l2_ctrl_handler * hdl , struct video_device * vdev ,
struct media_device * mdev , struct v4l2_ext_controls * cs ) ;
int try_set_ext_ctrls_request ( struct v4l2_fh * fh ,
struct v4l2_ctrl_handler * hdl ,
struct video_device * vdev ,
struct media_device * mdev ,
struct v4l2_ext_controls * cs , bool set ) ;
# endif