#define pr_fmt(fmt) …
#include <linux/export.h>
#include <linux/mm.h>
#include <linux/slab.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-dev.h>
#include <media/v4l2-device.h>
#include <media/v4l2-event.h>
#include <media/v4l2-ioctl.h>
#include "v4l2-ctrls-priv.h"
struct v4l2_ctrl_helper { … };
static int ptr_to_user(struct v4l2_ext_control *c,
struct v4l2_ctrl *ctrl,
union v4l2_ctrl_ptr ptr)
{ … }
static int cur_to_user(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl)
{ … }
static int new_to_user(struct v4l2_ext_control *c,
struct v4l2_ctrl *ctrl)
{ … }
static int req_to_user(struct v4l2_ext_control *c,
struct v4l2_ctrl_ref *ref)
{ … }
static int def_to_user(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl)
{ … }
static int user_to_new(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl)
{ … }
static int prepare_ext_ctrls(struct v4l2_ctrl_handler *hdl,
struct v4l2_ext_controls *cs,
struct v4l2_ctrl_helper *helpers,
struct video_device *vdev,
bool get)
{ … }
static int class_check(struct v4l2_ctrl_handler *hdl, u32 which)
{ … }
int v4l2_g_ext_ctrls_common(struct v4l2_ctrl_handler *hdl,
struct v4l2_ext_controls *cs,
struct video_device *vdev)
{ … }
int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl, struct video_device *vdev,
struct media_device *mdev, struct v4l2_ext_controls *cs)
{ … }
EXPORT_SYMBOL(…);
static int validate_new(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr p_new)
{ … }
static int validate_ctrls(struct v4l2_ext_controls *cs,
struct v4l2_ctrl_helper *helpers,
struct video_device *vdev,
bool set)
{ … }
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)
{ … }
static int try_set_ext_ctrls(struct v4l2_fh *fh,
struct v4l2_ctrl_handler *hdl,
struct video_device *vdev,
struct media_device *mdev,
struct v4l2_ext_controls *cs, bool set)
{ … }
int v4l2_try_ext_ctrls(struct v4l2_ctrl_handler *hdl,
struct video_device *vdev,
struct media_device *mdev,
struct v4l2_ext_controls *cs)
{ … }
EXPORT_SYMBOL(…);
int v4l2_s_ext_ctrls(struct v4l2_fh *fh,
struct v4l2_ctrl_handler *hdl,
struct video_device *vdev,
struct media_device *mdev,
struct v4l2_ext_controls *cs)
{ … }
EXPORT_SYMBOL(…);
static int get_ctrl(struct v4l2_ctrl *ctrl, struct v4l2_ext_control *c)
{ … }
int v4l2_g_ctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_control *control)
{ … }
EXPORT_SYMBOL(…);
static int set_ctrl(struct v4l2_fh *fh, struct v4l2_ctrl *ctrl, u32 ch_flags)
{ … }
static int set_ctrl_lock(struct v4l2_fh *fh, struct v4l2_ctrl *ctrl,
struct v4l2_ext_control *c)
{ … }
int v4l2_s_ctrl(struct v4l2_fh *fh, struct v4l2_ctrl_handler *hdl,
struct v4l2_control *control)
{ … }
EXPORT_SYMBOL(…);
s32 v4l2_ctrl_g_ctrl(struct v4l2_ctrl *ctrl)
{ … }
EXPORT_SYMBOL(…);
s64 v4l2_ctrl_g_ctrl_int64(struct v4l2_ctrl *ctrl)
{ … }
EXPORT_SYMBOL(…);
int __v4l2_ctrl_s_ctrl(struct v4l2_ctrl *ctrl, s32 val)
{ … }
EXPORT_SYMBOL(…);
int __v4l2_ctrl_s_ctrl_int64(struct v4l2_ctrl *ctrl, s64 val)
{ … }
EXPORT_SYMBOL(…);
int __v4l2_ctrl_s_ctrl_string(struct v4l2_ctrl *ctrl, const char *s)
{ … }
EXPORT_SYMBOL(…);
int __v4l2_ctrl_s_ctrl_compound(struct v4l2_ctrl *ctrl,
enum v4l2_ctrl_type type, const void *p)
{ … }
EXPORT_SYMBOL(…);
int __v4l2_ctrl_modify_range(struct v4l2_ctrl *ctrl,
s64 min, s64 max, u64 step, s64 def)
{ … }
EXPORT_SYMBOL(…);
int __v4l2_ctrl_modify_dimensions(struct v4l2_ctrl *ctrl,
u32 dims[V4L2_CTRL_MAX_DIMS])
{ … }
EXPORT_SYMBOL(…);
int v4l2_query_ext_ctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_query_ext_ctrl *qc)
{ … }
EXPORT_SYMBOL(…);
int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc)
{ … }
EXPORT_SYMBOL(…);
int v4l2_querymenu(struct v4l2_ctrl_handler *hdl, struct v4l2_querymenu *qm)
{ … }
EXPORT_SYMBOL(…);
int v4l2_ctrl_log_status(struct file *file, void *fh)
{ … }
EXPORT_SYMBOL(…);
int v4l2_ctrl_subdev_log_status(struct v4l2_subdev *sd)
{ … }
EXPORT_SYMBOL(…);
static int v4l2_ctrl_add_event(struct v4l2_subscribed_event *sev,
unsigned int elems)
{ … }
static void v4l2_ctrl_del_event(struct v4l2_subscribed_event *sev)
{ … }
void v4l2_ctrl_replace(struct v4l2_event *old, const struct v4l2_event *new)
{ … }
EXPORT_SYMBOL(…);
void v4l2_ctrl_merge(const struct v4l2_event *old, struct v4l2_event *new)
{ … }
EXPORT_SYMBOL(…);
const struct v4l2_subscribed_event_ops v4l2_ctrl_sub_ev_ops = …;
EXPORT_SYMBOL(…);
int v4l2_ctrl_subscribe_event(struct v4l2_fh *fh,
const struct v4l2_event_subscription *sub)
{ … }
EXPORT_SYMBOL(…);
int v4l2_ctrl_subdev_subscribe_event(struct v4l2_subdev *sd, struct v4l2_fh *fh,
struct v4l2_event_subscription *sub)
{ … }
EXPORT_SYMBOL(…);
__poll_t v4l2_ctrl_poll(struct file *file, struct poll_table_struct *wait)
{ … }
EXPORT_SYMBOL(…);