Re: [PATCH 4/7] v4l2-ctrls: Export the standard control type operations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/22/15 15:48, Laurent Pinchart wrote:
> Drivers that implement custom control types need to implement the equal,
> init, log and validate operations. Depending on the control type some of
> those operations can use the standard control type implementation
> provided by the v4l2 control framework. Export them to enable their
> reuse.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>

Acked-by: Hans Verkuil <hans.verkuil@xxxxxxxxx>

Regards,

	Hans

> ---
>  drivers/media/v4l2-core/v4l2-ctrls.c | 27 ++++++++++++++++-----------
>  include/media/v4l2-ctrls.h           |  9 +++++++++
>  2 files changed, 25 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
> index ba996de..17f10d4 100644
> --- a/drivers/media/v4l2-core/v4l2-ctrls.c
> +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
> @@ -1233,9 +1233,9 @@ static void send_event(struct v4l2_fh *fh, struct v4l2_ctrl *ctrl, u32 changes)
>  			v4l2_event_queue_fh(sev->fh, &ev);
>  }
>  
> -static bool std_equal(const struct v4l2_ctrl *ctrl, u32 idx,
> -		      union v4l2_ctrl_ptr ptr1,
> -		      union v4l2_ctrl_ptr ptr2)
> +bool v4l2_ctrl_type_std_equal(const struct v4l2_ctrl *ctrl, u32 idx,
> +			      union v4l2_ctrl_ptr ptr1,
> +			      union v4l2_ctrl_ptr ptr2)
>  {
>  	switch (ctrl->type) {
>  	case V4L2_CTRL_TYPE_BUTTON:
> @@ -1262,6 +1262,7 @@ static bool std_equal(const struct v4l2_ctrl *ctrl, u32 idx,
>  		return !memcmp(ptr1.p + idx, ptr2.p + idx, ctrl->elem_size);
>  	}
>  }
> +EXPORT_SYMBOL_GPL(v4l2_ctrl_type_std_equal);
>  
>  static void std_init_one(const struct v4l2_ctrl *ctrl, u32 idx,
>  			 union v4l2_ctrl_ptr ptr)
> @@ -1301,7 +1302,8 @@ static void std_init_one(const struct v4l2_ctrl *ctrl, u32 idx,
>  	}
>  }
>  
> -static void std_init(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr)
> +void v4l2_ctrl_type_std_init(const struct v4l2_ctrl *ctrl,
> +			     union v4l2_ctrl_ptr ptr)
>  {
>  	u32 idx;
>  
> @@ -1329,8 +1331,9 @@ static void std_init(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr)
>  		break;
>  	}
>  }
> +EXPORT_SYMBOL_GPL(v4l2_ctrl_type_std_init);
>  
> -static void std_log(const struct v4l2_ctrl *ctrl)
> +void v4l2_ctrl_type_std_log(const struct v4l2_ctrl *ctrl)
>  {
>  	union v4l2_ctrl_ptr ptr = ctrl->p_cur;
>  
> @@ -1387,6 +1390,7 @@ static void std_log(const struct v4l2_ctrl *ctrl)
>  		break;
>  	}
>  }
> +EXPORT_SYMBOL_GPL(v4l2_ctrl_type_std_log);
>  
>  /*
>   * Round towards the closest legal value. Be careful when we are
> @@ -1410,8 +1414,8 @@ static void std_log(const struct v4l2_ctrl *ctrl)
>  })
>  
>  /* Validate a new control */
> -static int std_validate(const struct v4l2_ctrl *ctrl, u32 idx,
> -			union v4l2_ctrl_ptr ptr)
> +int v4l2_ctrl_type_std_validate(const struct v4l2_ctrl *ctrl, u32 idx,
> +				union v4l2_ctrl_ptr ptr)
>  {
>  	size_t len;
>  	u64 offset;
> @@ -1485,12 +1489,13 @@ static int std_validate(const struct v4l2_ctrl *ctrl, u32 idx,
>  		return -EINVAL;
>  	}
>  }
> +EXPORT_SYMBOL_GPL(v4l2_ctrl_type_std_validate);
>  
>  static const struct v4l2_ctrl_type_ops std_type_ops = {
> -	.equal = std_equal,
> -	.init = std_init,
> -	.log = std_log,
> -	.validate = std_validate,
> +	.equal = v4l2_ctrl_type_std_equal,
> +	.init = v4l2_ctrl_type_std_init,
> +	.log = v4l2_ctrl_type_std_log,
> +	.validate = v4l2_ctrl_type_std_validate,
>  };
>  
>  /* Helper function: copy the given control value back to the caller */
> diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
> index a7280e9..71067fb 100644
> --- a/include/media/v4l2-ctrls.h
> +++ b/include/media/v4l2-ctrls.h
> @@ -93,6 +93,15 @@ struct v4l2_ctrl_type_ops {
>  			union v4l2_ctrl_ptr ptr);
>  };
>  
> +bool v4l2_ctrl_type_std_equal(const struct v4l2_ctrl *ctrl, u32 idx,
> +			      union v4l2_ctrl_ptr ptr1,
> +			      union v4l2_ctrl_ptr ptr2);
> +void v4l2_ctrl_type_std_init(const struct v4l2_ctrl *ctrl,
> +			     union v4l2_ctrl_ptr ptr);
> +void v4l2_ctrl_type_std_log(const struct v4l2_ctrl *ctrl);
> +int v4l2_ctrl_type_std_validate(const struct v4l2_ctrl *ctrl, u32 idx,
> +				union v4l2_ctrl_ptr ptr);
> +
>  typedef void (*v4l2_ctrl_notify_fnc)(struct v4l2_ctrl *ctrl, void *priv);
>  
>  /** struct v4l2_ctrl - The control structure.
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux