RE: [PATCH v2 3/3] media: ivsc: csi: Fix link frequency control behaviour

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

 



> From: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> 
> The link frequency control was an integer menu control the value of which
> was hard-coded in the MEI CSI driver itself. Instead obtain the control value
> from the upstream sub-device and use the CUR_LINK_FREQ INTEGER64
> control type for the purpose.
> 
> Fixes: 29006e196a56 ("media: pci: intel: ivsc: Add CSI submodule")
> Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>

Acked-by:  Wentong Wu <wentong.wu@xxxxxxxxx>

> ---
>  drivers/media/pci/intel/ivsc/mei_csi.c | 24 +++++++-----------------
>  1 file changed, 7 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/media/pci/intel/ivsc/mei_csi.c
> b/drivers/media/pci/intel/ivsc/mei_csi.c
> index 55e0c60c420c..4a35932f1cd3 100644
> --- a/drivers/media/pci/intel/ivsc/mei_csi.c
> +++ b/drivers/media/pci/intel/ivsc/mei_csi.c
> @@ -15,6 +15,7 @@
>  #include <linux/completion.h>
>  #include <linux/delay.h>
>  #include <linux/kernel.h>
> +#include <linux/limits.h>
>  #include <linux/math64.h>
>  #include <linux/mei_cl_bus.h>
>  #include <linux/module.h>
> @@ -32,8 +33,6 @@
> 
>  #define MEI_CSI_ENTITY_NAME "Intel IVSC CSI"
> 
> -#define MEI_CSI_LINK_FREQ_400MHZ 400000000ULL
> -
>  /* the 5s used here is based on experiment */  #define CSI_CMD_TIMEOUT
> (5 * HZ)
>  /* to setup CSI-2 link an extra delay needed and determined experimentally
> */ @@ -145,10 +144,6 @@ static const struct v4l2_mbus_framefmt
> mei_csi_format_mbus_default = {
>  	.field = V4L2_FIELD_NONE,
>  };
> 
> -static s64 link_freq_menu_items[] = {
> -	MEI_CSI_LINK_FREQ_400MHZ
> -};
> -
>  static inline struct mei_csi *notifier_to_csi(struct v4l2_async_notifier *n)  {
>  	return container_of(n, struct mei_csi, notifier); @@ -470,7 +465,7
> @@ static int mei_csi_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
>  	struct mei_csi *csi = ctrl_to_csi(ctrl);
>  	s64 freq;
> 
> -	if (ctrl->id == V4L2_CID_LINK_FREQ) {
> +	if (ctrl->id == V4L2_CID_CUR_LINK_FREQ) {
>  		if (!csi->remote)
>  			return -EINVAL;
> 
> @@ -481,8 +476,7 @@ static int mei_csi_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
>  			return -EINVAL;
>  		}
> 
> -		link_freq_menu_items[0] = freq;
> -		ctrl->val = 0;
> +		ctrl->p_new.p_s64[0] = csi->link_freq = freq;
> 
>  		return 0;
>  	}
> @@ -553,7 +547,6 @@ static const struct v4l2_async_notifier_operations
> mei_csi_notify_ops = {
> 
>  static int mei_csi_init_controls(struct mei_csi *csi)  {
> -	u32 max;
>  	int ret;
> 
>  	ret = v4l2_ctrl_handler_init(&csi->ctrl_handler, 2); @@ -562,13
> +555,10 @@ static int mei_csi_init_controls(struct mei_csi *csi)
> 
>  	csi->ctrl_handler.lock = &csi->lock;
> 
> -	max = ARRAY_SIZE(link_freq_menu_items) - 1;
> -	csi->freq_ctrl = v4l2_ctrl_new_int_menu(&csi->ctrl_handler,
> -						&mei_csi_ctrl_ops,
> -						V4L2_CID_LINK_FREQ,
> -						max,
> -						0,
> -						link_freq_menu_items);
> +	csi->freq_ctrl = v4l2_ctrl_new_std(&csi->ctrl_handler,
> +					   &mei_csi_ctrl_ops,
> +					   V4L2_CID_CUR_LINK_FREQ, 1,
> S64_MAX,
> +					   1, 1);
>  	if (csi->freq_ctrl)
>  		csi->freq_ctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY |
>  					 V4L2_CTRL_FLAG_VOLATILE;
> --
> 2.39.2






[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