From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([85.220.165.71]:47595 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751293AbeFANWg (ORCPT ); Fri, 1 Jun 2018 09:22:36 -0400 Message-ID: <1527859350.5913.4.camel@pengutronix.de> Subject: Re: [PATCH v2 01/10] media: imx-csi: Pass sink pad field to ipu_csi_init_interface From: Philipp Zabel To: Steve Longerbeam , Krzysztof =?UTF-8?Q?Ha=C5=82asa?= , Mauro Carvalho Chehab , Greg Kroah-Hartman , Hans Verkuil Cc: linux-media@vger.kernel.org, Steve Longerbeam Date: Fri, 01 Jun 2018 15:22:30 +0200 In-Reply-To: <1527813049-3231-2-git-send-email-steve_longerbeam@mentor.com> References: <1527813049-3231-1-git-send-email-steve_longerbeam@mentor.com> <1527813049-3231-2-git-send-email-steve_longerbeam@mentor.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-media-owner@vger.kernel.org List-ID: On Thu, 2018-05-31 at 17:30 -0700, Steve Longerbeam wrote: > The output pad's field type was being passed to ipu_csi_init_interface(), > in order to deal with field type 'alternate' at the sink pad, which > is not understood by ipu_csi_init_interface(). > > Remove that code and pass the sink pad field to ipu_csi_init_interface(). > The latter function will have to explicity deal with field type 'alternate' > when setting up the CSI interface for BT.656 busses. I fear this won't be enough. If we want to capture sink:ALTERNATE/SEQ_TB/SEQ_BT -> src:SEQ_TB we have to configure the CSI differently than if we want to capture ALTERNATE/SEQ_TB/SEQ_BT -> src:SEQ_BT. (And differently for NTSC and PAL). For NTSC sink:ALTERNATE should behave like sink:SEQ_BT, and for PAL sink:ALTERNATE should behave like sink:SEQ_TB. Interweaving SEQ_TB to INTERLACED_TB should work right now, but to interweave SEQ_BT to INTERLACED_BT, we need to add one line offset to the frame start and use a negative interlaced scanline offset. regards Philipp > Reported-by: Krzysztof HaƂasa > Signed-off-by: Steve Longerbeam > --- > drivers/staging/media/imx/imx-media-csi.c | 13 ++----------- > 1 file changed, 2 insertions(+), 11 deletions(-) > > diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c > index 95d7805..9bc555c 100644 > --- a/drivers/staging/media/imx/imx-media-csi.c > +++ b/drivers/staging/media/imx/imx-media-csi.c > @@ -629,12 +629,10 @@ static void csi_idmac_stop(struct csi_priv *priv) > /* Update the CSI whole sensor and active windows */ > static int csi_setup(struct csi_priv *priv) > { > - struct v4l2_mbus_framefmt *infmt, *outfmt; > + struct v4l2_mbus_framefmt *infmt; > struct v4l2_mbus_config mbus_cfg; > - struct v4l2_mbus_framefmt if_fmt; > > infmt = &priv->format_mbus[CSI_SINK_PAD]; > - outfmt = &priv->format_mbus[priv->active_output_pad]; > > /* compose mbus_config from the upstream endpoint */ > mbus_cfg.type = priv->upstream_ep.bus_type; > @@ -642,20 +640,13 @@ static int csi_setup(struct csi_priv *priv) > priv->upstream_ep.bus.mipi_csi2.flags : > priv->upstream_ep.bus.parallel.flags; > > - /* > - * we need to pass input frame to CSI interface, but > - * with translated field type from output format > - */ > - if_fmt = *infmt; > - if_fmt.field = outfmt->field; > - > ipu_csi_set_window(priv->csi, &priv->crop); > > ipu_csi_set_downsize(priv->csi, > priv->crop.width == 2 * priv->compose.width, > priv->crop.height == 2 * priv->compose.height); > > - ipu_csi_init_interface(priv->csi, &mbus_cfg, &if_fmt); > + ipu_csi_init_interface(priv->csi, &mbus_cfg, infmt); > > ipu_csi_set_dest(priv->csi, priv->dest); >