All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sakari Ailus <sakari.ailus@iki.fi>
Cc: linux-media@vger.kernel.org, hverkuil@xs4all.nl,
	teturtia@gmail.com, dacohen@gmail.com, snjw23@gmail.com,
	andriy.shevchenko@linux.intel.com, t.stanislaws@samsung.com,
	tuukkat76@gmail.com, k.debski@gmail.com, riverful@gmail.com
Subject: Re: [PATCH v3 31/33] omap3isp: Remove isp_validate_pipeline and other old stuff
Date: Wed, 22 Feb 2012 12:26:30 +0100	[thread overview]
Message-ID: <5497917.JsAkhUn8fq@avalon> (raw)
In-Reply-To: <1329703032-31314-31-git-send-email-sakari.ailus@iki.fi>

Hi Sakari,

Thanks for the patch.

On Monday 20 February 2012 03:57:10 Sakari Ailus wrote:
> Remove isp_set_pixel_clock().
> 
> Remove set_pixel_clock() callback from platform callbacks since the same
> information is now passed to the ISP driver by other means.
>
> Remove struct ispccdc_vp since the only field in this structure, pixelclk,
> is no longer used.
> 
> Remove isp_video_is_shiftable() --- this will live on as ccdc_is_shiftable
> in ispccdc.c.

Could you please move those changes to the patches where you add them to the 
other modules ?

> Remove isp_video_validate_pipeline(). Pipeline validation is now split into
> appropriate subdevs, so this can be removed.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
> ---
>  drivers/media/video/omap3isp/isp.c      |   14 ---
>  drivers/media/video/omap3isp/isp.h      |    1 -
>  drivers/media/video/omap3isp/ispccdc.h  |   10 --
>  drivers/media/video/omap3isp/ispvideo.c |  139
> ------------------------------- 4 files changed, 0 insertions(+), 164
> deletions(-)
> 
> diff --git a/drivers/media/video/omap3isp/isp.c
> b/drivers/media/video/omap3isp/isp.c index 89a9bf8..4b2290d 100644
> --- a/drivers/media/video/omap3isp/isp.c
> +++ b/drivers/media/video/omap3isp/isp.c
> @@ -329,19 +329,6 @@ void omap3isp_configure_bridge(struct isp_device *isp,
>  	isp_reg_writel(isp, ispctrl_val, OMAP3_ISP_IOMEM_MAIN, ISP_CTRL);
>  }
> 
> -/**
> - * isp_set_pixel_clock - Configures the ISP pixel clock
> - * @isp: OMAP3 ISP device
> - * @pixelclk: Average pixel clock in Hz
> - *
> - * Set the average pixel clock required by the sensor. The ISP will use the
> - * lowest possible memory bandwidth settings compatible with the clock. -
> **/
> -static void isp_set_pixel_clock(struct isp_device *isp, unsigned int
> pixelclk) -{
> -	isp->isp_ccdc.vpcfg.pixelclk = pixelclk;
> -}
> -
>  void omap3isp_hist_dma_done(struct isp_device *isp)
>  {
>  	if (omap3isp_ccdc_busy(&isp->isp_ccdc) ||
> @@ -2116,7 +2103,6 @@ static int isp_probe(struct platform_device *pdev)
> 
>  	isp->autoidle = autoidle;
>  	isp->platform_cb.set_xclk = isp_set_xclk;
> -	isp->platform_cb.set_pixel_clock = isp_set_pixel_clock;
> 
>  	mutex_init(&isp->isp_mutex);
>  	spin_lock_init(&isp->stat_lock);
> diff --git a/drivers/media/video/omap3isp/isp.h
> b/drivers/media/video/omap3isp/isp.h index 43a1b16..90f3743 100644
> --- a/drivers/media/video/omap3isp/isp.h
> +++ b/drivers/media/video/omap3isp/isp.h
> @@ -126,7 +126,6 @@ struct isp_reg {
> 
>  struct isp_platform_callback {
>  	u32 (*set_xclk)(struct isp_device *isp, u32 xclk, u8 xclksel);
> -	void (*set_pixel_clock)(struct isp_device *isp, unsigned int pixelclk);
>  };
> 
>  /*
> diff --git a/drivers/media/video/omap3isp/ispccdc.h
> b/drivers/media/video/omap3isp/ispccdc.h index 6d0264b..e570abe 100644
> --- a/drivers/media/video/omap3isp/ispccdc.h
> +++ b/drivers/media/video/omap3isp/ispccdc.h
> @@ -80,14 +80,6 @@ struct ispccdc_syncif {
>  	u8 bt_r656_en;
>  };
> 
> -/*
> - * struct ispccdc_vp - Structure for Video Port parameters
> - * @pixelclk: Input pixel clock in Hz
> - */
> -struct ispccdc_vp {
> -	unsigned int pixelclk;
> -};
> -
>  enum ispccdc_lsc_state {
>  	LSC_STATE_STOPPED = 0,
>  	LSC_STATE_STOPPING = 1,
> @@ -161,7 +153,6 @@ struct ispccdc_lsc {
>   * @update: Bitmask of controls to update during the next interrupt
>   * @shadow_update: Controls update in progress by userspace
>   * @syncif: Interface synchronization configuration
> - * @vpcfg: Video port configuration
>   * @underrun: A buffer underrun occurred and a new buffer has been queued
>   * @state: Streaming state
>   * @lock: Serializes shadow_update with interrupt handler
> @@ -190,7 +181,6 @@ struct isp_ccdc_device {
>  	unsigned int shadow_update;
> 
>  	struct ispccdc_syncif syncif;
> -	struct ispccdc_vp vpcfg;
> 
>  	unsigned int underrun:1;
>  	enum isp_pipeline_stream_state state;
> diff --git a/drivers/media/video/omap3isp/ispvideo.c
> b/drivers/media/video/omap3isp/ispvideo.c index 2e4786d..07832c8 100644
> --- a/drivers/media/video/omap3isp/ispvideo.c
> +++ b/drivers/media/video/omap3isp/ispvideo.c
> @@ -130,37 +130,6 @@ omap3isp_video_format_info(enum v4l2_mbus_pixelcode
> code) }
> 
>  /*
> - * Decide whether desired output pixel code can be obtained with
> - * the lane shifter by shifting the input pixel code.
> - * @in: input pixelcode to shifter
> - * @out: output pixelcode from shifter
> - * @additional_shift: # of bits the sensor's LSB is offset from CAMEXT[0]
> - *
> - * return true if the combination is possible
> - * return false otherwise
> - */
> -static bool isp_video_is_shiftable(enum v4l2_mbus_pixelcode in,
> -		enum v4l2_mbus_pixelcode out,
> -		unsigned int additional_shift)
> -{
> -	const struct isp_format_info *in_info, *out_info;
> -
> -	if (in == out)
> -		return true;
> -
> -	in_info = omap3isp_video_format_info(in);
> -	out_info = omap3isp_video_format_info(out);
> -
> -	if ((in_info->flavor == 0) || (out_info->flavor == 0))
> -		return false;
> -
> -	if (in_info->flavor != out_info->flavor)
> -		return false;
> -
> -	return in_info->bpp - out_info->bpp + additional_shift <= 6;
> -}
> -
> -/*
>   * isp_video_mbus_to_pix - Convert v4l2_mbus_framefmt to v4l2_pix_format
>   * @video: ISP video instance
>   * @mbus: v4l2_mbus_framefmt format (input)
> @@ -284,107 +253,6 @@ isp_video_far_end(struct isp_video *video)
>  	return far_end;
>  }
> 
> -/*
> - * Validate a pipeline by checking both ends of all links for format
> - * discrepancies.
> - *
> - * Compute the minimum time per frame value as the maximum of time per
> frame - * limits reported by every block in the pipeline.
> - *
> - * Return 0 if all formats match, or -EPIPE if at least one link is found
> with - * different formats on its two ends or if the pipeline doesn't start
> with a - * video source (either a subdev with no input pad, or a non-subdev
> entity). - */
> -static int isp_video_validate_pipeline(struct isp_pipeline *pipe)
> -{
> -	struct isp_device *isp = pipe->output->isp;
> -	struct v4l2_subdev_format fmt_source;
> -	struct v4l2_subdev_format fmt_sink;
> -	struct media_pad *pad;
> -	struct v4l2_subdev *subdev;
> -	int ret;
> -
> -	subdev = isp_video_remote_subdev(pipe->output, NULL);
> -	if (subdev == NULL)
> -		return -EPIPE;
> -
> -	while (1) {
> -		unsigned int shifter_link;
> -		/* Retrieve the sink format */
> -		pad = &subdev->entity.pads[0];
> -		if (!(pad->flags & MEDIA_PAD_FL_SINK))
> -			break;
> -
> -		fmt_sink.pad = pad->index;
> -		fmt_sink.which = V4L2_SUBDEV_FORMAT_ACTIVE;
> -		ret = v4l2_subdev_call(subdev, pad, get_fmt, NULL, &fmt_sink);
> -		if (ret < 0 && ret != -ENOIOCTLCMD)
> -			return -EPIPE;
> -
> -		/* Update the maximum frame rate */
> -		if (subdev == &isp->isp_res.subdev)
> -			omap3isp_resizer_max_rate(&isp->isp_res,
> -						  &pipe->max_rate);
> -
> -		/* Check ccdc maximum data rate when data comes from sensor
> -		 * TODO: Include ccdc rate in pipe->max_rate and compare the
> -		 *       total pipe rate with the input data rate from sensor.
> -		 */
> -		if (subdev == &isp->isp_ccdc.subdev && pipe->input == NULL) {
> -			unsigned int rate = UINT_MAX;
> -
> -			omap3isp_ccdc_max_rate(&isp->isp_ccdc, &rate);
> -			if (isp->isp_ccdc.vpcfg.pixelclk > rate)
> -				return -ENOSPC;
> -		}
> -
> -		/* If sink pad is on CCDC, the link has the lane shifter
> -		 * in the middle of it. */
> -		shifter_link = subdev == &isp->isp_ccdc.subdev;
> -
> -		/* Retrieve the source format. Return an error if no source
> -		 * entity can be found, and stop checking the pipeline if the
> -		 * source entity isn't a subdev.
> -		 */
> -		pad = media_entity_remote_source(pad);
> -		if (pad == NULL)
> -			return -EPIPE;
> -
> -		if (media_entity_type(pad->entity) != MEDIA_ENT_T_V4L2_SUBDEV)
> -			break;
> -
> -		subdev = media_entity_to_v4l2_subdev(pad->entity);
> -
> -		fmt_source.pad = pad->index;
> -		fmt_source.which = V4L2_SUBDEV_FORMAT_ACTIVE;
> -		ret = v4l2_subdev_call(subdev, pad, get_fmt, NULL, &fmt_source);
> -		if (ret < 0 && ret != -ENOIOCTLCMD)
> -			return -EPIPE;
> -
> -		/* Check if the two ends match */
> -		if (fmt_source.format.width != fmt_sink.format.width ||
> -		    fmt_source.format.height != fmt_sink.format.height)
> -			return -EPIPE;
> -
> -		if (shifter_link) {
> -			unsigned int parallel_shift = 0;
> -			if (isp->isp_ccdc.input == CCDC_INPUT_PARALLEL) {
> -				struct isp_parallel_platform_data *pdata =
> -					&((struct isp_v4l2_subdevs_group *)
> -					      subdev->host_priv)->bus.parallel;
> -				parallel_shift = pdata->data_lane_shift * 2;
> -			}
> -			if (!isp_video_is_shiftable(fmt_source.format.code,
> -						fmt_sink.format.code,
> -						parallel_shift))
> -				return -EPIPE;
> -		} else if (fmt_source.format.code != fmt_sink.format.code)
> -			return -EPIPE;
> -	}
> -
> -	return 0;
> -}
> -
>  static int
>  __isp_video_get_format(struct isp_video *video, struct v4l2_format *format)
> {
> @@ -1034,13 +902,6 @@ isp_video_streamon(struct file *file, void *fh, enum
> v4l2_buf_type type) pipe->output = far_end;
>  	}
> 
> -	/* Validate the pipeline and update its state. */
> -	ret = isp_video_validate_pipeline(pipe);
> -	if (ret < 0)
> -		goto err_isp_video_check_format;
> -
> -	pipe->error = false;
> -
>  	spin_lock_irqsave(&pipe->lock, flags);
>  	pipe->state &= ~ISP_PIPELINE_STREAM;
>  	pipe->state |= state;
-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2012-02-22 11:26 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-20  1:56 [PATCH v3 0/33] V4L2 subdev and sensor control changes, SMIA++ driver and N9 camera board code Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 01/33] v4l: Introduce integer menu controls Sakari Ailus
2012-02-20 17:36   ` Sylwester Nawrocki
2012-02-20  1:56 ` [PATCH v3 02/33] v4l: Document " Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 03/33] vivi: Add an integer menu test control Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 04/33] v4l: VIDIOC_SUBDEV_S_SELECTION and VIDIOC_SUBDEV_G_SELECTION IOCTLs Sakari Ailus
2012-02-21 14:34   ` Laurent Pinchart
2012-02-23  5:49     ` Sakari Ailus
2012-02-21 16:15   ` Laurent Pinchart
2012-02-23  6:01     ` Sakari Ailus
2012-02-27  0:22       ` Laurent Pinchart
2012-02-27  0:57         ` Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 05/33] v4l: vdev_to_v4l2_subdev() should have return type "struct v4l2_subdev *" Sakari Ailus
2012-02-21 14:37   ` Laurent Pinchart
2012-02-20  1:56 ` [PATCH v3 06/33] v4l: Check pad number in get try pointer functions Sakari Ailus
2012-02-21 14:42   ` Laurent Pinchart
2012-02-23  5:57     ` Sakari Ailus
2012-02-27  0:33       ` Laurent Pinchart
2012-02-27 12:27         ` Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 07/33] v4l: Support s_crop and g_crop through s/g_selection Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 08/33] v4l: Add subdev selections documentation: svg and dia files Sakari Ailus
2012-02-21 15:00   ` Laurent Pinchart
2012-02-26 18:56     ` Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 09/33] v4l: Add subdev selections documentation Sakari Ailus
2012-02-21 16:41   ` Laurent Pinchart
2012-02-26 21:42     ` Sakari Ailus
2012-02-28 11:42       ` Laurent Pinchart
2012-03-02 12:24         ` Sakari Ailus
2012-03-02 17:54           ` Laurent Pinchart
2012-03-02 18:01             ` Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 10/33] v4l: Mark VIDIOC_SUBDEV_G_CROP and VIDIOC_SUBDEV_S_CROP obsolete Sakari Ailus
2012-02-21 16:42   ` Laurent Pinchart
2012-02-20  1:56 ` [PATCH v3 11/33] v4l: Image source control class Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 12/33] v4l: Image processing " Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 13/33] v4l: Document raw bayer 4CC codes Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 14/33] v4l: Add DPCM compressed formats Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 15/33] media: Add link_validate() op to check links to the sink pad Sakari Ailus
2012-02-22 10:05   ` Laurent Pinchart
2012-02-23 15:04     ` Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 16/33] v4l: Improve sub-device documentation for pad ops Sakari Ailus
2012-02-22 10:06   ` Laurent Pinchart
2012-02-20  1:56 ` [PATCH v3 17/33] v4l: Implement v4l2_subdev_link_validate() Sakari Ailus
2012-02-22 10:14   ` Laurent Pinchart
2012-02-23 16:07     ` Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 18/33] v4l: Allow changing control handler lock Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 19/33] omap3isp: Support additional in-memory compressed bayer formats Sakari Ailus
2012-02-20  1:56 ` [PATCH v3 20/33] omap3isp: Move definitions required by board code under include/media Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 21/33] omap3: add definition for CONTROL_CAMERA_PHY_CTRL Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 22/33] omap3isp: Assume media_entity_pipeline_start may fail Sakari Ailus
2012-02-22 10:48   ` Laurent Pinchart
2012-02-26  1:08     ` Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 23/33] omap3isp: Add lane configuration to platform data Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 24/33] omap3isp: Add information on external subdev to struct isp_pipeline Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 25/33] omap3isp: Introduce omap3isp_get_external_info() Sakari Ailus
2012-02-22 10:55   ` Laurent Pinchart
2012-02-26  1:09     ` Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 26/33] omap3isp: Default link validation for ccp2, csi2, preview and resizer Sakari Ailus
2012-02-22 11:01   ` Laurent Pinchart
2012-02-25  1:34     ` Sakari Ailus
2012-02-26 23:14       ` Laurent Pinchart
2012-02-26 23:40         ` Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 27/33] omap3isp: Implement proper CCDC link validation, check pixel rate Sakari Ailus
2012-02-22 11:11   ` Laurent Pinchart
2012-02-25  1:42     ` Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 28/33] omap3isp: Move setting constaints above media_entity_pipeline_start Sakari Ailus
2012-02-22 11:12   ` Laurent Pinchart
2012-02-25  1:46     ` Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 29/33] omap3isp: Configure CSI-2 phy based on platform data Sakari Ailus
2012-02-22 11:21   ` Laurent Pinchart
2012-02-25  1:49     ` Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 30/33] omap3isp: Add resizer data rate configuration to resizer_set_stream Sakari Ailus
2012-02-22 11:24   ` Laurent Pinchart
2012-02-26  1:10     ` Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 31/33] omap3isp: Remove isp_validate_pipeline and other old stuff Sakari Ailus
2012-02-22 11:26   ` Laurent Pinchart [this message]
2012-02-25  1:52     ` Sakari Ailus
2012-02-20  1:57 ` [PATCH v3 32/33] smiapp: Add driver Sakari Ailus
2012-02-27 15:38   ` Laurent Pinchart
2012-02-29  5:41     ` Sakari Ailus
2012-02-29  9:35       ` Laurent Pinchart
2012-02-29 10:00         ` Sylwester Nawrocki
2012-03-01 14:01         ` Sakari Ailus
2012-03-01 14:56           ` Laurent Pinchart
2012-02-20  1:57 ` [PATCH v3 33/33] rm680: Add camera init Sakari Ailus
2012-02-27  1:06   ` Laurent Pinchart
2012-02-28 19:05     ` Sakari Ailus
2012-02-20  2:03 ` [PATCH v3 0/33] V4L2 subdev and sensor control changes, SMIA++ driver and N9 camera board code Sakari Ailus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5497917.JsAkhUn8fq@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=dacohen@gmail.com \
    --cc=hverkuil@xs4all.nl \
    --cc=k.debski@gmail.com \
    --cc=linux-media@vger.kernel.org \
    --cc=riverful@gmail.com \
    --cc=sakari.ailus@iki.fi \
    --cc=snjw23@gmail.com \
    --cc=t.stanislaws@samsung.com \
    --cc=teturtia@gmail.com \
    --cc=tuukkat76@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.