linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/11] OMAP3 ISP BT.656 support
@ 2014-05-26 19:50 Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 01/11] v4l: subdev: Extend default link validation to cover field order Laurent Pinchart
                   ` (12 more replies)
  0 siblings, 13 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

Hello,

This patch sets implements support for BT.656 and interlaced formats in the
OMAP3 ISP driver. Better late than never I suppose, although given how long
this has been on my to-do list there's probably no valid excuse.

As a prerequisite, the first patch extends the v4l subdev default link
validation function to cover field order when validating links. Patches 2 to
4 and then perform small OMAP3 ISP cleanups, patches 5 to 10 add support for
interlaced formats and patch 11 finally adds BT.656 support.

The code is based on top of a merge between Mauro's latest master and omap3isp
branches.

I've also extended the media-ctl and yavta utilities with field order support.
The media-ctl modifications have been pushed to the field branch, while the
yavta modifications are available in the master branch.

The code has been validated on a Gumstix Overo connected to a TVP5151-based
board (http://www.sleepyrobot.com/?s=tvp5151) and an NTSC camera. I've tested
all supported field orders, but given the lack of clarity (and I weight my
words) of the field order documentation in the OMAP3 ISP datasheet I certainly
can have made a mistake somewhere.

Laurent Pinchart (11):
  v4l: subdev: Extend default link validation to cover field order
  omap3isp: Don't ignore subdev streamoff failures
  omap3isp: Remove boilerplate disclaimer and FSF address
  omap3isp: Move non-critical code out of the mutex-protected section
  omap3isp: Default to progressive field order when setting the format
  omap3isp: video: Validate the video node field order
  omap3isp: ccdc: Simplify the configuration function
  omap3isp: ccdc: Simplify the ccdc_isr_buffer() function
  omap3isp: ccdc: Add basic support for interlaced video
  omap3isp: ccdc: Support the interlaced field orders at the CCDC output
  omap3isp: ccdc: Add support for BT.656 YUV format at the CCDC input

 drivers/media/platform/omap3isp/cfa_coef_table.h   |  10 -
 drivers/media/platform/omap3isp/gamma_table.h      |  10 -
 drivers/media/platform/omap3isp/isp.c              |  20 +-
 drivers/media/platform/omap3isp/isp.h              |  10 -
 drivers/media/platform/omap3isp/ispccdc.c          | 261 +++++++++++++++------
 drivers/media/platform/omap3isp/ispccdc.h          |  12 +-
 drivers/media/platform/omap3isp/ispccp2.c          |  10 -
 drivers/media/platform/omap3isp/ispccp2.h          |  10 -
 drivers/media/platform/omap3isp/ispcsi2.c          |  10 -
 drivers/media/platform/omap3isp/ispcsi2.h          |  10 -
 drivers/media/platform/omap3isp/ispcsiphy.c        |  10 -
 drivers/media/platform/omap3isp/ispcsiphy.h        |  10 -
 drivers/media/platform/omap3isp/isph3a.h           |  10 -
 drivers/media/platform/omap3isp/isph3a_aewb.c      |  10 -
 drivers/media/platform/omap3isp/isph3a_af.c        |  10 -
 drivers/media/platform/omap3isp/isphist.c          |  10 -
 drivers/media/platform/omap3isp/isphist.h          |  10 -
 drivers/media/platform/omap3isp/isppreview.c       |  10 -
 drivers/media/platform/omap3isp/isppreview.h       |  10 -
 drivers/media/platform/omap3isp/ispreg.h           |  20 +-
 drivers/media/platform/omap3isp/ispresizer.c       |  10 -
 drivers/media/platform/omap3isp/ispresizer.h       |  10 -
 drivers/media/platform/omap3isp/ispstat.c          |  10 -
 drivers/media/platform/omap3isp/ispstat.h          |  10 -
 drivers/media/platform/omap3isp/ispvideo.c         |  59 +++--
 drivers/media/platform/omap3isp/ispvideo.h         |  12 +-
 .../media/platform/omap3isp/luma_enhance_table.h   |  10 -
 .../media/platform/omap3isp/noise_filter_table.h   |  10 -
 drivers/media/v4l2-core/v4l2-subdev.c              |   9 +
 include/media/omap3isp.h                           |   3 +
 30 files changed, 251 insertions(+), 365 deletions(-)

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH 01/11] v4l: subdev: Extend default link validation to cover field order
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 02/11] omap3isp: Don't ignore subdev streamoff failures Laurent Pinchart
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

The field order must match between the source and sink pads, or the sink
pad field order must be NONE. This allows connecting an interlaced
source to a bridge that has no hardware support for interlaced formats.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/v4l2-core/v4l2-subdev.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c
index 058c1a6..752cca0 100644
--- a/drivers/media/v4l2-core/v4l2-subdev.c
+++ b/drivers/media/v4l2-core/v4l2-subdev.c
@@ -468,11 +468,20 @@ int v4l2_subdev_link_validate_default(struct v4l2_subdev *sd,
 				      struct v4l2_subdev_format *source_fmt,
 				      struct v4l2_subdev_format *sink_fmt)
 {
+	/* The width, height and code must match. */
 	if (source_fmt->format.width != sink_fmt->format.width
 	    || source_fmt->format.height != sink_fmt->format.height
 	    || source_fmt->format.code != sink_fmt->format.code)
 		return -EINVAL;
 
+	/* The field order must match, or the sink field order must be NONE
+	 * to support interlaced hardware connected to bridges that support
+	 * progressive formats only.
+	 */
+	if (source_fmt->format.field != sink_fmt->format.field &&
+	    sink_fmt->format.field != V4L2_FIELD_NONE)
+		return -EINVAL;
+
 	return 0;
 }
 EXPORT_SYMBOL_GPL(v4l2_subdev_link_validate_default);
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 02/11] omap3isp: Don't ignore subdev streamoff failures
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 01/11] v4l: subdev: Extend default link validation to cover field order Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 03/11] omap3isp: Remove boilerplate disclaimer and FSF address Laurent Pinchart
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

Record the value returned by subdevs from s_stream(0) and handle stop
failures when an error occurs.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/omap3isp/isp.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
index 2c7aa67..7b10c46 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -999,16 +999,14 @@ static int isp_pipeline_disable(struct isp_pipeline *pipe)
 					 video, s_stream, 0);
 		}
 
-		v4l2_subdev_call(subdev, video, s_stream, 0);
+		ret = v4l2_subdev_call(subdev, video, s_stream, 0);
 
 		if (subdev == &isp->isp_res.subdev)
-			ret = isp_pipeline_wait(isp, isp_pipeline_wait_resizer);
+			ret |= isp_pipeline_wait(isp, isp_pipeline_wait_resizer);
 		else if (subdev == &isp->isp_prev.subdev)
-			ret = isp_pipeline_wait(isp, isp_pipeline_wait_preview);
+			ret |= isp_pipeline_wait(isp, isp_pipeline_wait_preview);
 		else if (subdev == &isp->isp_ccdc.subdev)
-			ret = isp_pipeline_wait(isp, isp_pipeline_wait_ccdc);
-		else
-			ret = 0;
+			ret |= isp_pipeline_wait(isp, isp_pipeline_wait_ccdc);
 
 		/* Handle stop failures. An entity that fails to stop can
 		 * usually just be restarted. Flag the stop failure nonetheless
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 03/11] omap3isp: Remove boilerplate disclaimer and FSF address
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 01/11] v4l: subdev: Extend default link validation to cover field order Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 02/11] omap3isp: Don't ignore subdev streamoff failures Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 04/11] omap3isp: Move non-critical code out of the mutex-protected section Laurent Pinchart
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

We don't want to modify all source files the day the FSF moves.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/omap3isp/cfa_coef_table.h     | 10 ----------
 drivers/media/platform/omap3isp/gamma_table.h        | 10 ----------
 drivers/media/platform/omap3isp/isp.c                | 10 ----------
 drivers/media/platform/omap3isp/isp.h                | 10 ----------
 drivers/media/platform/omap3isp/ispccdc.c            | 10 ----------
 drivers/media/platform/omap3isp/ispccdc.h            | 10 ----------
 drivers/media/platform/omap3isp/ispccp2.c            | 10 ----------
 drivers/media/platform/omap3isp/ispccp2.h            | 10 ----------
 drivers/media/platform/omap3isp/ispcsi2.c            | 10 ----------
 drivers/media/platform/omap3isp/ispcsi2.h            | 10 ----------
 drivers/media/platform/omap3isp/ispcsiphy.c          | 10 ----------
 drivers/media/platform/omap3isp/ispcsiphy.h          | 10 ----------
 drivers/media/platform/omap3isp/isph3a.h             | 10 ----------
 drivers/media/platform/omap3isp/isph3a_aewb.c        | 10 ----------
 drivers/media/platform/omap3isp/isph3a_af.c          | 10 ----------
 drivers/media/platform/omap3isp/isphist.c            | 10 ----------
 drivers/media/platform/omap3isp/isphist.h            | 10 ----------
 drivers/media/platform/omap3isp/isppreview.c         | 10 ----------
 drivers/media/platform/omap3isp/isppreview.h         | 10 ----------
 drivers/media/platform/omap3isp/ispreg.h             | 10 ----------
 drivers/media/platform/omap3isp/ispresizer.c         | 10 ----------
 drivers/media/platform/omap3isp/ispresizer.h         | 10 ----------
 drivers/media/platform/omap3isp/ispstat.c            | 10 ----------
 drivers/media/platform/omap3isp/ispstat.h            | 10 ----------
 drivers/media/platform/omap3isp/ispvideo.c           | 10 ----------
 drivers/media/platform/omap3isp/ispvideo.h           | 10 ----------
 drivers/media/platform/omap3isp/luma_enhance_table.h | 10 ----------
 drivers/media/platform/omap3isp/noise_filter_table.h | 10 ----------
 28 files changed, 280 deletions(-)

diff --git a/drivers/media/platform/omap3isp/cfa_coef_table.h b/drivers/media/platform/omap3isp/cfa_coef_table.h
index c84df07..e75b0eb 100644
--- a/drivers/media/platform/omap3isp/cfa_coef_table.h
+++ b/drivers/media/platform/omap3isp/cfa_coef_table.h
@@ -11,16 +11,6 @@
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 { 244, 0, 247,   0,  12,  27,  36, 247, 250,   0,  27,   0,   4, 250,  12, 244,
diff --git a/drivers/media/platform/omap3isp/gamma_table.h b/drivers/media/platform/omap3isp/gamma_table.h
index 78deebf..3b50707 100644
--- a/drivers/media/platform/omap3isp/gamma_table.h
+++ b/drivers/media/platform/omap3isp/gamma_table.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
   0,   0,   1,   2,   3,   3,   4,   5,   6,   8,  10,  12,  14,  16,  18,  20,
diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
index 7b10c46..72265e5 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -40,16 +40,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #include <asm/cacheflush.h>
diff --git a/drivers/media/platform/omap3isp/isp.h b/drivers/media/platform/omap3isp/isp.h
index 2c314ee..cfdfc87 100644
--- a/drivers/media/platform/omap3isp/isp.h
+++ b/drivers/media/platform/omap3isp/isp.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_CORE_H
diff --git a/drivers/media/platform/omap3isp/ispccdc.c b/drivers/media/platform/omap3isp/ispccdc.c
index 9f727d2..6409292 100644
--- a/drivers/media/platform/omap3isp/ispccdc.c
+++ b/drivers/media/platform/omap3isp/ispccdc.c
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #include <linux/module.h>
diff --git a/drivers/media/platform/omap3isp/ispccdc.h b/drivers/media/platform/omap3isp/ispccdc.h
index f650616..dd999be 100644
--- a/drivers/media/platform/omap3isp/ispccdc.h
+++ b/drivers/media/platform/omap3isp/ispccdc.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_CCDC_H
diff --git a/drivers/media/platform/omap3isp/ispccp2.c b/drivers/media/platform/omap3isp/ispccp2.c
index f3801db..9cb49b3 100644
--- a/drivers/media/platform/omap3isp/ispccp2.c
+++ b/drivers/media/platform/omap3isp/ispccp2.c
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #include <linux/delay.h>
diff --git a/drivers/media/platform/omap3isp/ispccp2.h b/drivers/media/platform/omap3isp/ispccp2.h
index 76d65f4..4662bff 100644
--- a/drivers/media/platform/omap3isp/ispccp2.h
+++ b/drivers/media/platform/omap3isp/ispccp2.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_CCP2_H
diff --git a/drivers/media/platform/omap3isp/ispcsi2.c b/drivers/media/platform/omap3isp/ispcsi2.c
index 5a2e47e..6530b25 100644
--- a/drivers/media/platform/omap3isp/ispcsi2.c
+++ b/drivers/media/platform/omap3isp/ispcsi2.c
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 #include <linux/delay.h>
 #include <media/v4l2-common.h>
diff --git a/drivers/media/platform/omap3isp/ispcsi2.h b/drivers/media/platform/omap3isp/ispcsi2.h
index c57729b..453ed62 100644
--- a/drivers/media/platform/omap3isp/ispcsi2.h
+++ b/drivers/media/platform/omap3isp/ispcsi2.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_CSI2_H
diff --git a/drivers/media/platform/omap3isp/ispcsiphy.c b/drivers/media/platform/omap3isp/ispcsiphy.c
index c09de32..e033f22 100644
--- a/drivers/media/platform/omap3isp/ispcsiphy.c
+++ b/drivers/media/platform/omap3isp/ispcsiphy.c
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #include <linux/delay.h>
diff --git a/drivers/media/platform/omap3isp/ispcsiphy.h b/drivers/media/platform/omap3isp/ispcsiphy.h
index 14551fd..e17c88b 100644
--- a/drivers/media/platform/omap3isp/ispcsiphy.h
+++ b/drivers/media/platform/omap3isp/ispcsiphy.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_CSI_PHY_H
diff --git a/drivers/media/platform/omap3isp/isph3a.h b/drivers/media/platform/omap3isp/isph3a.h
index fb09fd4..e5b28d0f 100644
--- a/drivers/media/platform/omap3isp/isph3a.h
+++ b/drivers/media/platform/omap3isp/isph3a.h
@@ -13,16 +13,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_H3A_H
diff --git a/drivers/media/platform/omap3isp/isph3a_aewb.c b/drivers/media/platform/omap3isp/isph3a_aewb.c
index d6811ce..b208c54 100644
--- a/drivers/media/platform/omap3isp/isph3a_aewb.c
+++ b/drivers/media/platform/omap3isp/isph3a_aewb.c
@@ -13,16 +13,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #include <linux/slab.h>
diff --git a/drivers/media/platform/omap3isp/isph3a_af.c b/drivers/media/platform/omap3isp/isph3a_af.c
index 6fc960c..8a83e19 100644
--- a/drivers/media/platform/omap3isp/isph3a_af.c
+++ b/drivers/media/platform/omap3isp/isph3a_af.c
@@ -13,16 +13,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 /* Linux specific include files */
diff --git a/drivers/media/platform/omap3isp/isphist.c b/drivers/media/platform/omap3isp/isphist.c
index 06a5f81..ce822c3 100644
--- a/drivers/media/platform/omap3isp/isphist.c
+++ b/drivers/media/platform/omap3isp/isphist.c
@@ -13,16 +13,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #include <linux/delay.h>
diff --git a/drivers/media/platform/omap3isp/isphist.h b/drivers/media/platform/omap3isp/isphist.h
index 0b2a38e..3b54155 100644
--- a/drivers/media/platform/omap3isp/isphist.h
+++ b/drivers/media/platform/omap3isp/isphist.h
@@ -13,16 +13,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_HIST_H
diff --git a/drivers/media/platform/omap3isp/isppreview.c b/drivers/media/platform/omap3isp/isppreview.c
index 720809b..605f57e 100644
--- a/drivers/media/platform/omap3isp/isppreview.c
+++ b/drivers/media/platform/omap3isp/isppreview.c
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #include <linux/device.h>
diff --git a/drivers/media/platform/omap3isp/isppreview.h b/drivers/media/platform/omap3isp/isppreview.h
index f669234..16fdc03 100644
--- a/drivers/media/platform/omap3isp/isppreview.h
+++ b/drivers/media/platform/omap3isp/isppreview.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_PREVIEW_H
diff --git a/drivers/media/platform/omap3isp/ispreg.h b/drivers/media/platform/omap3isp/ispreg.h
index b7d90e6..f37a8df 100644
--- a/drivers/media/platform/omap3isp/ispreg.h
+++ b/drivers/media/platform/omap3isp/ispreg.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_REG_H
diff --git a/drivers/media/platform/omap3isp/ispresizer.c b/drivers/media/platform/omap3isp/ispresizer.c
index 6f077c2..93104b0 100644
--- a/drivers/media/platform/omap3isp/ispresizer.c
+++ b/drivers/media/platform/omap3isp/ispresizer.c
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #include <linux/device.h>
diff --git a/drivers/media/platform/omap3isp/ispresizer.h b/drivers/media/platform/omap3isp/ispresizer.h
index 9b01e90..494f5a2 100644
--- a/drivers/media/platform/omap3isp/ispresizer.h
+++ b/drivers/media/platform/omap3isp/ispresizer.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_RESIZER_H
diff --git a/drivers/media/platform/omap3isp/ispstat.c b/drivers/media/platform/omap3isp/ispstat.c
index e6cbc1e..a94e834 100644
--- a/drivers/media/platform/omap3isp/ispstat.c
+++ b/drivers/media/platform/omap3isp/ispstat.c
@@ -13,16 +13,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #include <linux/dma-mapping.h>
diff --git a/drivers/media/platform/omap3isp/ispstat.h b/drivers/media/platform/omap3isp/ispstat.h
index 58d6ac7..b32b296 100644
--- a/drivers/media/platform/omap3isp/ispstat.h
+++ b/drivers/media/platform/omap3isp/ispstat.h
@@ -13,16 +13,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_STAT_H
diff --git a/drivers/media/platform/omap3isp/ispvideo.c b/drivers/media/platform/omap3isp/ispvideo.c
index e36bac2..04d45e7 100644
--- a/drivers/media/platform/omap3isp/ispvideo.c
+++ b/drivers/media/platform/omap3isp/ispvideo.c
@@ -11,16 +11,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #include <asm/cacheflush.h>
diff --git a/drivers/media/platform/omap3isp/ispvideo.h b/drivers/media/platform/omap3isp/ispvideo.h
index 7d2e821..a76124c 100644
--- a/drivers/media/platform/omap3isp/ispvideo.h
+++ b/drivers/media/platform/omap3isp/ispvideo.h
@@ -11,16 +11,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 #ifndef OMAP3_ISP_VIDEO_H
diff --git a/drivers/media/platform/omap3isp/luma_enhance_table.h b/drivers/media/platform/omap3isp/luma_enhance_table.h
index 098b45e..81c5b15 100644
--- a/drivers/media/platform/omap3isp/luma_enhance_table.h
+++ b/drivers/media/platform/omap3isp/luma_enhance_table.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 1047552, 1047552, 1047552, 1047552, 1047552, 1047552, 1047552, 1047552,
diff --git a/drivers/media/platform/omap3isp/noise_filter_table.h b/drivers/media/platform/omap3isp/noise_filter_table.h
index d50451a..5073f98 100644
--- a/drivers/media/platform/omap3isp/noise_filter_table.h
+++ b/drivers/media/platform/omap3isp/noise_filter_table.h
@@ -12,16 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
  */
 
 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 04/11] omap3isp: Move non-critical code out of the mutex-protected section
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
                   ` (2 preceding siblings ...)
  2014-05-26 19:50 ` [PATCH 03/11] omap3isp: Remove boilerplate disclaimer and FSF address Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 05/11] omap3isp: Default to progressive field order when setting the format Laurent Pinchart
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

The isp_video_pix_to_mbus() and isp_video_mbus_to_pix() calls in
isp_video_set_format() only access static fields of the isp_video
structure. They don't need to be protected by a mutex.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/omap3isp/ispvideo.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/media/platform/omap3isp/ispvideo.c b/drivers/media/platform/omap3isp/ispvideo.c
index 04d45e7..2876f34 100644
--- a/drivers/media/platform/omap3isp/ispvideo.c
+++ b/drivers/media/platform/omap3isp/ispvideo.c
@@ -631,17 +631,16 @@ isp_video_set_format(struct file *file, void *fh, struct v4l2_format *format)
 	if (format->type != video->type)
 		return -EINVAL;
 
-	mutex_lock(&video->mutex);
-
 	/* Fill the bytesperline and sizeimage fields by converting to media bus
 	 * format and back to pixel format.
 	 */
 	isp_video_pix_to_mbus(&format->fmt.pix, &fmt);
 	isp_video_mbus_to_pix(video, &fmt, &format->fmt.pix);
 
+	mutex_lock(&video->mutex);
 	vfh->format = *format;
-
 	mutex_unlock(&video->mutex);
+
 	return 0;
 }
 
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 05/11] omap3isp: Default to progressive field order when setting the format
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
                   ` (3 preceding siblings ...)
  2014-05-26 19:50 ` [PATCH 04/11] omap3isp: Move non-critical code out of the mutex-protected section Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 06/11] omap3isp: video: Validate the video node field order Laurent Pinchart
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

If the requested field order is not supported default to progressive as
we can't guess how the user will configure the pipeline later on.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/omap3isp/ispvideo.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/media/platform/omap3isp/ispvideo.c b/drivers/media/platform/omap3isp/ispvideo.c
index 2876f34..2fe1c46 100644
--- a/drivers/media/platform/omap3isp/ispvideo.c
+++ b/drivers/media/platform/omap3isp/ispvideo.c
@@ -631,6 +631,15 @@ isp_video_set_format(struct file *file, void *fh, struct v4l2_format *format)
 	if (format->type != video->type)
 		return -EINVAL;
 
+	/* Default to the progressive field order if the requested value is not
+	 * supported (or set to ANY). The only supported orders are progressive
+	 * (available on all video nodes) and alternate (available on capture
+	 * nodes only).
+	 */
+	if (format->fmt.pix.field != V4L2_FIELD_ALTERNATE ||
+	    video->type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
+		format->fmt.pix.field = V4L2_FIELD_NONE;
+
 	/* Fill the bytesperline and sizeimage fields by converting to media bus
 	 * format and back to pixel format.
 	 */
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 06/11] omap3isp: video: Validate the video node field order
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
                   ` (4 preceding siblings ...)
  2014-05-26 19:50 ` [PATCH 05/11] omap3isp: Default to progressive field order when setting the format Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 07/11] omap3isp: ccdc: Simplify the configuration function Laurent Pinchart
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

The field order requested on the video node must match the field order
at the connected subdevice source pad.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/omap3isp/ispvideo.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/omap3isp/ispvideo.c b/drivers/media/platform/omap3isp/ispvideo.c
index 2fe1c46..756c162 100644
--- a/drivers/media/platform/omap3isp/ispvideo.c
+++ b/drivers/media/platform/omap3isp/ispvideo.c
@@ -309,10 +309,11 @@ isp_video_check_format(struct isp_video *video, struct isp_video_fh *vfh)
 	    vfh->format.fmt.pix.height != format.fmt.pix.height ||
 	    vfh->format.fmt.pix.width != format.fmt.pix.width ||
 	    vfh->format.fmt.pix.bytesperline != format.fmt.pix.bytesperline ||
-	    vfh->format.fmt.pix.sizeimage != format.fmt.pix.sizeimage)
+	    vfh->format.fmt.pix.sizeimage != format.fmt.pix.sizeimage ||
+	    vfh->format.fmt.pix.field != format.fmt.pix.field)
 		return -EINVAL;
 
-	return ret;
+	return 0;
 }
 
 /* -----------------------------------------------------------------------------
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 07/11] omap3isp: ccdc: Simplify the configuration function
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
                   ` (5 preceding siblings ...)
  2014-05-26 19:50 ` [PATCH 06/11] omap3isp: video: Validate the video node field order Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 08/11] omap3isp: ccdc: Simplify the ccdc_isr_buffer() function Laurent Pinchart
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

Assign the format variable to the sink pad format earlier and use it
instead of accessing the sink pad format directly from the ISP
structure.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/omap3isp/ispccdc.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/media/platform/omap3isp/ispccdc.c b/drivers/media/platform/omap3isp/ispccdc.c
index 6409292..8fbba95 100644
--- a/drivers/media/platform/omap3isp/ispccdc.c
+++ b/drivers/media/platform/omap3isp/ispccdc.c
@@ -1114,6 +1114,9 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 		pdata = &((struct isp_v4l2_subdevs_group *)sensor->host_priv)
 			->bus.parallel;
 
+	/* CCDC_PAD_SINK */
+	format = &ccdc->formats[CCDC_PAD_SINK];
+
 	/* Compute the lane shifter shift value and enable the bridge when the
 	 * input format is YUV.
 	 */
@@ -1124,8 +1127,7 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 		depth_in = fmt_info->width;
 	}
 
-	fmt_info = omap3isp_video_format_info
-		(isp->isp_ccdc.formats[CCDC_PAD_SINK].code);
+	fmt_info = omap3isp_video_format_info(format->code);
 	depth_out = fmt_info->width;
 	shift = depth_in - depth_out;
 
@@ -1157,9 +1159,6 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 	else
 		syn_mode &= ~ISPCCDC_SYN_MODE_SDR2RSZ;
 
-	/* CCDC_PAD_SINK */
-	format = &ccdc->formats[CCDC_PAD_SINK];
-
 	/* Mosaic filter */
 	switch (format->code) {
 	case V4L2_MBUS_FMT_SRGGB10_1X10:
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 08/11] omap3isp: ccdc: Simplify the ccdc_isr_buffer() function
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
                   ` (6 preceding siblings ...)
  2014-05-26 19:50 ` [PATCH 07/11] omap3isp: ccdc: Simplify the configuration function Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 09/11] omap3isp: ccdc: Add basic support for interlaced video Laurent Pinchart
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

Instead of using goto statements to a single line return, return the
correct value immediately.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/omap3isp/ispccdc.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/drivers/media/platform/omap3isp/ispccdc.c b/drivers/media/platform/omap3isp/ispccdc.c
index 8fbba95..76d4fd7 100644
--- a/drivers/media/platform/omap3isp/ispccdc.c
+++ b/drivers/media/platform/omap3isp/ispccdc.c
@@ -1480,7 +1480,6 @@ static int ccdc_isr_buffer(struct isp_ccdc_device *ccdc)
 	struct isp_pipeline *pipe = to_isp_pipeline(&ccdc->subdev.entity);
 	struct isp_device *isp = to_isp_device(ccdc);
 	struct isp_buffer *buffer;
-	int restart = 0;
 
 	/* The CCDC generates VD0 interrupts even when disabled (the datasheet
 	 * doesn't explicitly state if that's supposed to happen or not, so it
@@ -1489,30 +1488,27 @@ static int ccdc_isr_buffer(struct isp_ccdc_device *ccdc)
 	 * would thus not be enough, we need to handle the situation explicitly.
 	 */
 	if (list_empty(&ccdc->video_out.dmaqueue))
-		goto done;
+		return 0;
 
 	/* We're in continuous mode, and memory writes were disabled due to a
 	 * buffer underrun. Reenable them now that we have a buffer. The buffer
 	 * address has been set in ccdc_video_queue.
 	 */
 	if (ccdc->state == ISP_PIPELINE_STREAM_CONTINUOUS && ccdc->underrun) {
-		restart = 1;
 		ccdc->underrun = 0;
-		goto done;
+		return 1;
 	}
 
 	if (ccdc_sbl_wait_idle(ccdc, 1000)) {
 		dev_info(isp->dev, "CCDC won't become idle!\n");
 		isp->crashed |= 1U << ccdc->subdev.entity.id;
 		omap3isp_pipeline_cancel_stream(pipe);
-		goto done;
+		return 0;
 	}
 
 	buffer = omap3isp_video_buffer_next(&ccdc->video_out);
-	if (buffer != NULL) {
+	if (buffer != NULL)
 		ccdc_set_outaddr(ccdc, buffer->dma);
-		restart = 1;
-	}
 
 	pipe->state |= ISP_PIPELINE_IDLE_OUTPUT;
 
@@ -1521,8 +1517,7 @@ static int ccdc_isr_buffer(struct isp_ccdc_device *ccdc)
 		omap3isp_pipeline_set_stream(pipe,
 					ISP_PIPELINE_STREAM_SINGLESHOT);
 
-done:
-	return restart;
+	return buffer != NULL;
 }
 
 /*
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 09/11] omap3isp: ccdc: Add basic support for interlaced video
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
                   ` (7 preceding siblings ...)
  2014-05-26 19:50 ` [PATCH 08/11] omap3isp: ccdc: Simplify the ccdc_isr_buffer() function Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 21:12   ` Sakari Ailus
  2014-05-26 19:50 ` [PATCH 10/11] omap3isp: ccdc: Support the interlaced field orders at the CCDC output Laurent Pinchart
                   ` (3 subsequent siblings)
  12 siblings, 1 reply; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

When the CCDC input is interlaced enable the alternate field order on
the CCDC output video node. The field signal polarity is specified
through platform data.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/omap3isp/ispccdc.c  | 21 ++++++++++++++++++++-
 drivers/media/platform/omap3isp/ispvideo.c |  6 ++++++
 drivers/media/platform/omap3isp/ispvideo.h |  2 ++
 include/media/omap3isp.h                   |  3 +++
 4 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/omap3isp/ispccdc.c b/drivers/media/platform/omap3isp/ispccdc.c
index 76d4fd7..49d7256 100644
--- a/drivers/media/platform/omap3isp/ispccdc.c
+++ b/drivers/media/platform/omap3isp/ispccdc.c
@@ -1001,6 +1001,9 @@ static void ccdc_config_sync_if(struct isp_ccdc_device *ccdc,
 	if (pdata && pdata->vs_pol)
 		syn_mode |= ISPCCDC_SYN_MODE_VDPOL;
 
+	if (pdata && pdata->fld_pol)
+		syn_mode |= ISPCCDC_SYN_MODE_FLDPOL;
+
 	isp_reg_writel(isp, syn_mode, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE);
 
 	/* The CCDC_CFG.Y8POS bit is used in YCbCr8 input mode only. The
@@ -1140,6 +1143,7 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 
 	omap3isp_configure_bridge(isp, ccdc->input, pdata, shift, bridge);
 
+	/* Configure the sync interface. */
 	ccdc_config_sync_if(ccdc, pdata, depth_out);
 
 	syn_mode = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE);
@@ -1499,6 +1503,17 @@ static int ccdc_isr_buffer(struct isp_ccdc_device *ccdc)
 		return 1;
 	}
 
+	/* When capturing fields in alternate order read the current field
+	 * identifier and store it in the pipeline.
+	 */
+	if (ccdc->formats[CCDC_PAD_SOURCE_OF].field == V4L2_FIELD_ALTERNATE) {
+		u32 syn_mode = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCDC,
+					     ISPCCDC_SYN_MODE);
+
+		pipe->field = syn_mode & ISPCCDC_SYN_MODE_FLDSTAT
+			    ? V4L2_FIELD_BOTTOM : V4L2_FIELD_TOP;
+	}
+
 	if (ccdc_sbl_wait_idle(ccdc, 1000)) {
 		dev_info(isp->dev, "CCDC won't become idle!\n");
 		isp->crashed |= 1U << ccdc->subdev.entity.id;
@@ -1830,6 +1845,11 @@ ccdc_try_format(struct isp_ccdc_device *ccdc, struct v4l2_subdev_fh *fh,
 		/* Clamp the input size. */
 		fmt->width = clamp_t(u32, width, 32, 4096);
 		fmt->height = clamp_t(u32, height, 32, 4096);
+
+		/* Default to progressive field order. */
+		if (fmt->field == V4L2_FIELD_ANY)
+			fmt->field = V4L2_FIELD_NONE;
+
 		break;
 
 	case CCDC_PAD_SOURCE_OF:
@@ -1885,7 +1905,6 @@ ccdc_try_format(struct isp_ccdc_device *ccdc, struct v4l2_subdev_fh *fh,
 	 * stored on 2 bytes.
 	 */
 	fmt->colorspace = V4L2_COLORSPACE_SRGB;
-	fmt->field = V4L2_FIELD_NONE;
 }
 
 /*
diff --git a/drivers/media/platform/omap3isp/ispvideo.c b/drivers/media/platform/omap3isp/ispvideo.c
index 756c162..c38f1d4 100644
--- a/drivers/media/platform/omap3isp/ispvideo.c
+++ b/drivers/media/platform/omap3isp/ispvideo.c
@@ -482,6 +482,11 @@ struct isp_buffer *omap3isp_video_buffer_next(struct isp_video *video)
 	else
 		buf->vb.v4l2_buf.sequence = atomic_read(&pipe->frame_number);
 
+	if (pipe->field != V4L2_FIELD_NONE)
+		buf->vb.v4l2_buf.sequence /= 2;
+
+	buf->vb.v4l2_buf.field = pipe->field;
+
 	/* Report pipeline errors to userspace on the capture device side. */
 	if (video->type == V4L2_BUF_TYPE_VIDEO_CAPTURE && pipe->error) {
 		state = VB2_BUF_STATE_ERROR;
@@ -1038,6 +1043,7 @@ isp_video_streamon(struct file *file, void *fh, enum v4l2_buf_type type)
 	video->queue = &vfh->queue;
 	INIT_LIST_HEAD(&video->dmaqueue);
 	atomic_set(&pipe->frame_number, -1);
+	pipe->field = vfh->format.fmt.pix.field;
 
 	mutex_lock(&video->queue_lock);
 	ret = vb2_streamon(&vfh->queue, type);
diff --git a/drivers/media/platform/omap3isp/ispvideo.h b/drivers/media/platform/omap3isp/ispvideo.h
index a76124c..0b7efed 100644
--- a/drivers/media/platform/omap3isp/ispvideo.h
+++ b/drivers/media/platform/omap3isp/ispvideo.h
@@ -78,6 +78,7 @@ enum isp_pipeline_state {
 
 /*
  * struct isp_pipeline - An ISP hardware pipeline
+ * @field: The field being processed by the pipeline
  * @error: A hardware error occurred during capture
  * @entities: Bitmask of entities in the pipeline (indexed by entity ID)
  */
@@ -91,6 +92,7 @@ struct isp_pipeline {
 	u32 entities;
 	unsigned long l3_ick;
 	unsigned int max_rate;
+	enum v4l2_field field;
 	atomic_t frame_number;
 	bool do_propagation; /* of frame number */
 	bool error;
diff --git a/include/media/omap3isp.h b/include/media/omap3isp.h
index c9d06d9..398279d 100644
--- a/include/media/omap3isp.h
+++ b/include/media/omap3isp.h
@@ -57,6 +57,8 @@ enum {
  *		0 - Active high, 1 - Active low
  * @vs_pol: Vertical synchronization polarity
  *		0 - Active high, 1 - Active low
+ * @fld_pol: Field signal polarity
+ *		0 - Positive, 1 - Negative
  * @data_pol: Data polarity
  *		0 - Normal, 1 - One's complement
  */
@@ -65,6 +67,7 @@ struct isp_parallel_platform_data {
 	unsigned int clk_pol:1;
 	unsigned int hs_pol:1;
 	unsigned int vs_pol:1;
+	unsigned int fld_pol:1;
 	unsigned int data_pol:1;
 };
 
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 10/11] omap3isp: ccdc: Support the interlaced field orders at the CCDC output
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
                   ` (8 preceding siblings ...)
  2014-05-26 19:50 ` [PATCH 09/11] omap3isp: ccdc: Add basic support for interlaced video Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 19:50 ` [PATCH 11/11] omap3isp: ccdc: Add support for BT.656 YUV format at the CCDC input Laurent Pinchart
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

The CCDC can interleave fields into a single buffer when writing to
memory. Support it.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/omap3isp/ispccdc.c  | 132 +++++++++++++++++++----------
 drivers/media/platform/omap3isp/ispreg.h   |  10 +--
 drivers/media/platform/omap3isp/ispvideo.c |  40 +++++++--
 3 files changed, 122 insertions(+), 60 deletions(-)

diff --git a/drivers/media/platform/omap3isp/ispccdc.c b/drivers/media/platform/omap3isp/ispccdc.c
index 49d7256..8d1861d 100644
--- a/drivers/media/platform/omap3isp/ispccdc.c
+++ b/drivers/media/platform/omap3isp/ispccdc.c
@@ -863,52 +863,51 @@ static void ccdc_enable_vp(struct isp_ccdc_device *ccdc, u8 enable)
 /*
  * ccdc_config_outlineoffset - Configure memory saving output line offset
  * @ccdc: Pointer to ISP CCDC device.
- * @offset: Address offset to start a new line. Must be twice the
- *          Output width and aligned on 32 byte boundary
- * @oddeven: Specifies the odd/even line pattern to be chosen to store the
- *           output.
- * @numlines: Set the value 0-3 for +1-4lines, 4-7 for -1-4lines.
+ * @bpl: Number of bytes per line when stored in memory.
+ * @field: Field order when storing interlaced formats in memory.
  *
- * - Configures the output line offset when stored in memory
- * - Sets the odd/even line pattern to store the output
- *    (EVENEVEN (1), ODDEVEN (2), EVENODD (3), ODDODD (4))
- * - Configures the number of even and odd line fields in case of rearranging
- * the lines.
+ * Configure the offsets for the line output control:
+ *
+ * - The horizontal line offset is defined as the number of bytes between the
+ *   start of two consecutive lines in memory. Set it to the given bytes per
+ *   line value.
+ *
+ * - The field offset value is defined as the number of lines to offset the
+ *   start of the field identified by FID = 1. Set it to one.
+ *
+ * - The line offset values are defined as the number of lines (as defined by
+ *   the horizontal line offset) between the start of two consecutive lines for
+ *   all combinations of odd/even lines in odd/even fields. When interleaving
+ *   fields set them all to two lines, and to one line otherwise.
  */
 static void ccdc_config_outlineoffset(struct isp_ccdc_device *ccdc,
-					u32 offset, u8 oddeven, u8 numlines)
+				      unsigned int bpl,
+				      enum v4l2_field field)
 {
 	struct isp_device *isp = to_isp_device(ccdc);
+	u32 sdofst = 0;
 
-	isp_reg_writel(isp, offset & 0xffff,
-		       OMAP3_ISP_IOMEM_CCDC, ISPCCDC_HSIZE_OFF);
-
-	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
-		    ISPCCDC_SDOFST_FINV);
+	isp_reg_writel(isp, bpl & 0xffff, OMAP3_ISP_IOMEM_CCDC,
+		       ISPCCDC_HSIZE_OFF);
 
-	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
-		    ISPCCDC_SDOFST_FOFST_4L);
-
-	switch (oddeven) {
-	case EVENEVEN:
-		isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
-			    (numlines & 0x7) << ISPCCDC_SDOFST_LOFST0_SHIFT);
-		break;
-	case ODDEVEN:
-		isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
-			    (numlines & 0x7) << ISPCCDC_SDOFST_LOFST1_SHIFT);
-		break;
-	case EVENODD:
-		isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
-			    (numlines & 0x7) << ISPCCDC_SDOFST_LOFST2_SHIFT);
-		break;
-	case ODDODD:
-		isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
-			    (numlines & 0x7) << ISPCCDC_SDOFST_LOFST3_SHIFT);
+	switch (field) {
+	case V4L2_FIELD_INTERLACED_TB:
+	case V4L2_FIELD_INTERLACED_BT:
+		/* When interleaving fields in memory offset field one by one
+		 * line and set the line offset to two lines.
+		 */
+		sdofst |= (1 << ISPCCDC_SDOFST_LOFST0_SHIFT)
+		       |  (1 << ISPCCDC_SDOFST_LOFST1_SHIFT)
+		       |  (1 << ISPCCDC_SDOFST_LOFST2_SHIFT)
+		       |  (1 << ISPCCDC_SDOFST_LOFST3_SHIFT);
 		break;
+
 	default:
+		/* In all other cases set the line offsets to one line. */
 		break;
 	}
+
+	isp_reg_writel(isp, sdofst, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST);
 }
 
 /*
@@ -1204,7 +1203,17 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 			<< ISPCCDC_VERT_LINES_NLV_SHIFT,
 		       OMAP3_ISP_IOMEM_CCDC, ISPCCDC_VERT_LINES);
 
-	ccdc_config_outlineoffset(ccdc, ccdc->video_out.bpl_value, 0, 0);
+	ccdc_config_outlineoffset(ccdc, ccdc->video_out.bpl_value,
+				  format->field);
+
+	/* When interleaving fields enable processing of the field input signal.
+	 * This will cause the line output control module to apply the field
+	 * offset to field 1.
+	 */
+	if (ccdc->formats[CCDC_PAD_SINK].field == V4L2_FIELD_ALTERNATE &&
+	    (format->field == V4L2_FIELD_INTERLACED_TB ||
+	     format->field == V4L2_FIELD_INTERLACED_BT))
+		syn_mode |= ISPCCDC_SYN_MODE_FLDMODE;
 
 	/* The CCDC outputs data in UYVY order by default. Swap bytes to get
 	 * YUYV.
@@ -1484,6 +1493,7 @@ static int ccdc_isr_buffer(struct isp_ccdc_device *ccdc)
 	struct isp_pipeline *pipe = to_isp_pipeline(&ccdc->subdev.entity);
 	struct isp_device *isp = to_isp_device(ccdc);
 	struct isp_buffer *buffer;
+	enum v4l2_field field;
 
 	/* The CCDC generates VD0 interrupts even when disabled (the datasheet
 	 * doesn't explicitly state if that's supposed to happen or not, so it
@@ -1503,17 +1513,12 @@ static int ccdc_isr_buffer(struct isp_ccdc_device *ccdc)
 		return 1;
 	}
 
-	/* When capturing fields in alternate order read the current field
-	 * identifier and store it in the pipeline.
-	 */
-	if (ccdc->formats[CCDC_PAD_SOURCE_OF].field == V4L2_FIELD_ALTERNATE) {
-		u32 syn_mode = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCDC,
-					     ISPCCDC_SYN_MODE);
-
-		pipe->field = syn_mode & ISPCCDC_SYN_MODE_FLDSTAT
-			    ? V4L2_FIELD_BOTTOM : V4L2_FIELD_TOP;
-	}
+	/* Read the current field identifier. */
+	field = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE)
+	      & ISPCCDC_SYN_MODE_FLDSTAT
+	      ? V4L2_FIELD_BOTTOM : V4L2_FIELD_TOP;
 
+	/* Wait for the CCDC to become idle. */
 	if (ccdc_sbl_wait_idle(ccdc, 1000)) {
 		dev_info(isp->dev, "CCDC won't become idle!\n");
 		isp->crashed |= 1U << ccdc->subdev.entity.id;
@@ -1521,6 +1526,28 @@ static int ccdc_isr_buffer(struct isp_ccdc_device *ccdc)
 		return 0;
 	}
 
+	switch (ccdc->formats[CCDC_PAD_SOURCE_OF].field) {
+	case V4L2_FIELD_ALTERNATE:
+		/* When capturing fields in alternate order store the current
+		 * field identifier in the pipeline.
+		 */
+		pipe->field = field;
+		break;
+
+	case V4L2_FIELD_INTERLACED_TB:
+		/* When interleaving fields only complete the buffer after
+		 * capturing the second field.
+		 */
+		if (field == V4L2_FIELD_TOP)
+			return 1;
+		break;
+
+	case V4L2_FIELD_INTERLACED_BT:
+		if (field == V4L2_FIELD_BOTTOM)
+			return 1;
+		break;
+	}
+
 	buffer = omap3isp_video_buffer_next(&ccdc->video_out);
 	if (buffer != NULL)
 		ccdc_set_outaddr(ccdc, buffer->dma);
@@ -1829,6 +1856,7 @@ ccdc_try_format(struct isp_ccdc_device *ccdc, struct v4l2_subdev_fh *fh,
 	unsigned int width = fmt->width;
 	unsigned int height = fmt->height;
 	struct v4l2_rect *crop;
+	enum v4l2_field field;
 	unsigned int i;
 
 	switch (pad) {
@@ -1854,6 +1882,7 @@ ccdc_try_format(struct isp_ccdc_device *ccdc, struct v4l2_subdev_fh *fh,
 
 	case CCDC_PAD_SOURCE_OF:
 		pixelcode = fmt->code;
+		field = fmt->field;
 		*fmt = *__ccdc_get_format(ccdc, fh, CCDC_PAD_SINK, which);
 
 		/* YUV formats are converted from 2X8 to 1X16 by the bridge and
@@ -1878,6 +1907,17 @@ ccdc_try_format(struct isp_ccdc_device *ccdc, struct v4l2_subdev_fh *fh,
 		crop = __ccdc_get_crop(ccdc, fh, which);
 		fmt->width = crop->width;
 		fmt->height = crop->height;
+
+		/* When input format is interlaced with alternating fields the
+		 * CCDC can interleave the fields.
+		 */
+		if (fmt->field == V4L2_FIELD_ALTERNATE &&
+		    (field == V4L2_FIELD_INTERLACED_TB ||
+		     field == V4L2_FIELD_INTERLACED_BT)) {
+			fmt->field = field;
+			fmt->height *= 2;
+		}
+
 		break;
 
 	case CCDC_PAD_SOURCE_VP:
diff --git a/drivers/media/platform/omap3isp/ispreg.h b/drivers/media/platform/omap3isp/ispreg.h
index f37a8df..b5ea8da 100644
--- a/drivers/media/platform/omap3isp/ispreg.h
+++ b/drivers/media/platform/omap3isp/ispreg.h
@@ -730,17 +730,13 @@
 
 #define ISPCCDC_HSIZE_OFF_SHIFT			0
 
-#define ISPCCDC_SDOFST_FINV			(1 << 14)
-#define ISPCCDC_SDOFST_FOFST_1L			0
-#define ISPCCDC_SDOFST_FOFST_4L			(3 << 12)
+#define ISPCCDC_SDOFST_FIINV			(1 << 14)
+#define ISPCCDC_SDOFST_FOFST_SHIFT		12
+#define ISPCCDC_SDOFST_FOFST_MASK		(3 << 12)
 #define ISPCCDC_SDOFST_LOFST3_SHIFT		0
 #define ISPCCDC_SDOFST_LOFST2_SHIFT		3
 #define ISPCCDC_SDOFST_LOFST1_SHIFT		6
 #define ISPCCDC_SDOFST_LOFST0_SHIFT		9
-#define EVENEVEN				1
-#define ODDEVEN					2
-#define EVENODD					3
-#define ODDODD					4
 
 #define ISPCCDC_CLAMP_OBGAIN_SHIFT		0
 #define ISPCCDC_CLAMP_OBST_SHIFT		10
diff --git a/drivers/media/platform/omap3isp/ispvideo.c b/drivers/media/platform/omap3isp/ispvideo.c
index c38f1d4..bc38c88 100644
--- a/drivers/media/platform/omap3isp/ispvideo.c
+++ b/drivers/media/platform/omap3isp/ispvideo.c
@@ -637,14 +637,40 @@ isp_video_set_format(struct file *file, void *fh, struct v4l2_format *format)
 	if (format->type != video->type)
 		return -EINVAL;
 
-	/* Default to the progressive field order if the requested value is not
-	 * supported (or set to ANY). The only supported orders are progressive
-	 * (available on all video nodes) and alternate (available on capture
-	 * nodes only).
-	 */
-	if (format->fmt.pix.field != V4L2_FIELD_ALTERNATE ||
-	    video->type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
+	/* Replace unsupported field orders with sane defaults. */
+	switch (format->fmt.pix.field) {
+	case V4L2_FIELD_NONE:
+		/* Progressive is supported everywhere. */
+		break;
+	case V4L2_FIELD_ALTERNATE:
+		/* ALTERNATE is not supported on output nodes. */
+		if (video->type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
+			format->fmt.pix.field = V4L2_FIELD_NONE;
+		break;
+	case V4L2_FIELD_INTERLACED:
+		/* The ISP has no concept of video standard, select the
+		 * top-bottom order when the unqualified interlaced order is
+		 * requested.
+		 */
+		format->fmt.pix.field = V4L2_FIELD_INTERLACED_TB;
+		/* Fall-through */
+	case V4L2_FIELD_INTERLACED_TB:
+	case V4L2_FIELD_INTERLACED_BT:
+		/* Interlaced orders are only supported at the CCDC output. */
+		if (video != &video->isp->isp_ccdc.video_out)
+			format->fmt.pix.field = V4L2_FIELD_NONE;
+		break;
+	case V4L2_FIELD_TOP:
+	case V4L2_FIELD_BOTTOM:
+	case V4L2_FIELD_SEQ_TB:
+	case V4L2_FIELD_SEQ_BT:
+	default:
+		/* All other field orders are currently unsupported, default to
+		 * progressive.
+		 */
 		format->fmt.pix.field = V4L2_FIELD_NONE;
+		break;
+	}
 
 	/* Fill the bytesperline and sizeimage fields by converting to media bus
 	 * format and back to pixel format.
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH 11/11] omap3isp: ccdc: Add support for BT.656 YUV format at the CCDC input
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
                   ` (9 preceding siblings ...)
  2014-05-26 19:50 ` [PATCH 10/11] omap3isp: ccdc: Support the interlaced field orders at the CCDC output Laurent Pinchart
@ 2014-05-26 19:50 ` Laurent Pinchart
  2014-05-26 21:18 ` [PATCH 00/11] OMAP3 ISP BT.656 support Sakari Ailus
  2014-05-27  8:38 ` Enrico
  12 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-05-26 19:50 UTC (permalink / raw)
  To: linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus

Query the CCDC input media bus type from the subdev connected to the
CCDC sink pad and configure the CCDC accordingly to support BT.656
synchronization.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/omap3isp/ispccdc.c | 94 +++++++++++++++++++++++++------
 drivers/media/platform/omap3isp/ispccdc.h |  2 +
 2 files changed, 80 insertions(+), 16 deletions(-)

diff --git a/drivers/media/platform/omap3isp/ispccdc.c b/drivers/media/platform/omap3isp/ispccdc.c
index 8d1861d..150bbf0 100644
--- a/drivers/media/platform/omap3isp/ispccdc.c
+++ b/drivers/media/platform/omap3isp/ispccdc.c
@@ -970,10 +970,16 @@ static void ccdc_config_sync_if(struct isp_ccdc_device *ccdc,
 
 	if (format->code == V4L2_MBUS_FMT_YUYV8_2X8 ||
 	    format->code == V4L2_MBUS_FMT_UYVY8_2X8) {
-		/* The bridge is enabled for YUV8 formats. Configure the input
-		 * mode accordingly.
+		/* According to the OMAP3 TRM the input mode only affects SYNC
+		 * mode, enabling BT.656 mode should take precedence. However,
+		 * in practice setting the input mode to YCbCr data on 8 bits
+		 * seems to be required in BT.656 mode. In SYNC mode set it to
+		 * YCbCr on 16 bits as the bridge is enabled in that case.
 		 */
-		syn_mode |= ISPCCDC_SYN_MODE_INPMOD_YCBCR16;
+		if (ccdc->bt656)
+			syn_mode |= ISPCCDC_SYN_MODE_INPMOD_YCBCR8;
+		else
+			syn_mode |= ISPCCDC_SYN_MODE_INPMOD_YCBCR16;
 	}
 
 	switch (data_size) {
@@ -997,7 +1003,10 @@ static void ccdc_config_sync_if(struct isp_ccdc_device *ccdc,
 	if (pdata && pdata->hs_pol)
 		syn_mode |= ISPCCDC_SYN_MODE_HDPOL;
 
-	if (pdata && pdata->vs_pol)
+	/* The polarity of the vertical sync signal output by the BT.656
+	 * decoder is not documented and seems to be active low.
+	 */
+	if ((pdata && pdata->vs_pol) || ccdc->bt656)
 		syn_mode |= ISPCCDC_SYN_MODE_VDPOL;
 
 	if (pdata && pdata->fld_pol)
@@ -1015,8 +1024,16 @@ static void ccdc_config_sync_if(struct isp_ccdc_device *ccdc,
 		isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG,
 			    ISPCCDC_CFG_Y8POS);
 
-	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_REC656IF,
-		    ISPCCDC_REC656IF_R656ON);
+	/* Enable or disable BT.656 mode, including error correction for the
+	 * synchronization codes.
+	 */
+	if (ccdc->bt656)
+		isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_REC656IF,
+			    ISPCCDC_REC656IF_R656ON | ISPCCDC_REC656IF_ECCFVH);
+	else
+		isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_REC656IF,
+			    ISPCCDC_REC656IF_R656ON | ISPCCDC_REC656IF_ECCFVH);
+
 }
 
 /* CCDC formats descriptions */
@@ -1107,20 +1124,32 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 	unsigned long flags;
 	unsigned int bridge;
 	unsigned int shift;
+	unsigned int nph;
+	unsigned int sph;
 	u32 syn_mode;
 	u32 ccdc_pattern;
 
+	ccdc->bt656 = false;
+
 	pad = media_entity_remote_pad(&ccdc->pads[CCDC_PAD_SINK]);
 	sensor = media_entity_to_v4l2_subdev(pad->entity);
-	if (ccdc->input == CCDC_INPUT_PARALLEL)
+	if (ccdc->input == CCDC_INPUT_PARALLEL) {
+		struct v4l2_mbus_config cfg;
+		int ret;
+
+		ret = v4l2_subdev_call(sensor, video, g_mbus_config, &cfg);
+		if (!ret)
+			ccdc->bt656 = cfg.type == V4L2_MBUS_BT656;
+
 		pdata = &((struct isp_v4l2_subdevs_group *)sensor->host_priv)
 			->bus.parallel;
+	}
 
 	/* CCDC_PAD_SINK */
 	format = &ccdc->formats[CCDC_PAD_SINK];
 
 	/* Compute the lane shifter shift value and enable the bridge when the
-	 * input format is YUV.
+	 * input format is a non-BT.656 YUV variant.
 	 */
 	fmt_src.pad = pad->index;
 	fmt_src.which = V4L2_SUBDEV_FORMAT_ACTIVE;
@@ -1133,7 +1162,9 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 	depth_out = fmt_info->width;
 	shift = depth_in - depth_out;
 
-	if (fmt_info->code == V4L2_MBUS_FMT_YUYV8_2X8)
+	if (ccdc->bt656)
+		bridge = ISPCTRL_PAR_BRIDGE_DISABLE;
+	else if (fmt_info->code == V4L2_MBUS_FMT_YUYV8_2X8)
 		bridge = ISPCTRL_PAR_BRIDGE_LENDIAN;
 	else if (fmt_info->code == V4L2_MBUS_FMT_UYVY8_2X8)
 		bridge = ISPCTRL_PAR_BRIDGE_BENDIAN;
@@ -1194,10 +1225,24 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 	format = &ccdc->formats[CCDC_PAD_SOURCE_OF];
 	crop = &ccdc->crop;
 
-	isp_reg_writel(isp, (crop->left << ISPCCDC_HORZ_INFO_SPH_SHIFT) |
-		       ((crop->width - 1) << ISPCCDC_HORZ_INFO_NPH_SHIFT),
+	/* The horizontal coordinates are expressed in pixel clock cycles. We
+	 * need two cycles per pixel in BT.656 mode, and one cycle per pixel in
+	 * SYNC mode regardless of the format as the bridge is enabled for YUV
+	 * formats in that case.
+	 */
+	if (ccdc->bt656) {
+		sph = crop->left * 2;
+		nph = crop->width * 2 - 1;
+	} else {
+		sph = crop->left;
+		nph = crop->width - 1;
+	}
+
+	isp_reg_writel(isp, (sph << ISPCCDC_HORZ_INFO_SPH_SHIFT) |
+		       (nph << ISPCCDC_HORZ_INFO_NPH_SHIFT),
 		       OMAP3_ISP_IOMEM_CCDC, ISPCCDC_HORZ_INFO);
-	isp_reg_writel(isp, crop->top << ISPCCDC_VERT_START_SLV0_SHIFT,
+	isp_reg_writel(isp, (crop->top << ISPCCDC_VERT_START_SLV0_SHIFT) |
+		       (crop->top << ISPCCDC_VERT_START_SLV1_SHIFT),
 		       OMAP3_ISP_IOMEM_CCDC, ISPCCDC_VERT_START);
 	isp_reg_writel(isp, (crop->height - 1)
 			<< ISPCCDC_VERT_LINES_NLV_SHIFT,
@@ -1225,8 +1270,11 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 		isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG,
 			    ISPCCDC_CFG_BSWD);
 
-	/* Use PACK8 mode for 1byte per pixel formats. */
-	if (omap3isp_video_format_info(format->code)->width <= 8)
+	/* Use PACK8 mode for 1byte per pixel formats. Check for BT.656 mode
+	 * explicitly as the driver reports 1X16 instead of 2X8 at the OF pad
+	 * for simplicity.
+	 */
+	if (omap3isp_video_format_info(format->code)->width <= 8 || ccdc->bt656)
 		syn_mode |= ISPCCDC_SYN_MODE_PACK8;
 	else
 		syn_mode &= ~ISPCCDC_SYN_MODE_PACK8;
@@ -1598,6 +1646,16 @@ static void ccdc_vd1_isr(struct isp_ccdc_device *ccdc)
 {
 	unsigned long flags;
 
+	/* In BT.656 mode the CCDC doesn't generate an HS/VS interrupt. We thus
+	 * need to increment the frame counter here.
+	 */
+	if (ccdc->bt656) {
+		struct isp_pipeline *pipe =
+			to_isp_pipeline(&ccdc->subdev.entity);
+
+		atomic_inc(&pipe->frame_number);
+	}
+
 	spin_lock_irqsave(&ccdc->lsc.req_lock, flags);
 
 	/*
@@ -1885,8 +1943,12 @@ ccdc_try_format(struct isp_ccdc_device *ccdc, struct v4l2_subdev_fh *fh,
 		field = fmt->field;
 		*fmt = *__ccdc_get_format(ccdc, fh, CCDC_PAD_SINK, which);
 
-		/* YUV formats are converted from 2X8 to 1X16 by the bridge and
-		 * can be byte-swapped.
+		/* In SYNC mode the bridge converts YUV formats from 2X8 to
+		 * 1X16. In BT.656 no such conversion occurs. As we don't know
+		 * at this point whether the source will use SYNC or BT.656 mode
+		 * let's pretend the conversion always occurs. The CCDC will be
+		 * configured to pack bytes in BT.656, hiding the inaccuracy.
+		 * In all cases bytes can be swapped.
 		 */
 		if (fmt->code == V4L2_MBUS_FMT_YUYV8_2X8 ||
 		    fmt->code == V4L2_MBUS_FMT_UYVY8_2X8) {
diff --git a/drivers/media/platform/omap3isp/ispccdc.h b/drivers/media/platform/omap3isp/ispccdc.h
index dd999be..c325b89 100644
--- a/drivers/media/platform/omap3isp/ispccdc.h
+++ b/drivers/media/platform/omap3isp/ispccdc.h
@@ -113,6 +113,7 @@ struct ispccdc_lsc {
  * @lsc: Lens shading compensation configuration
  * @update: Bitmask of controls to update during the next interrupt
  * @shadow_update: Controls update in progress by userspace
+ * @bt656: Whether the input interface uses BT.656 synchronization
  * @underrun: A buffer underrun occurred and a new buffer has been queued
  * @state: Streaming state
  * @lock: Serializes shadow_update with interrupt handler
@@ -141,6 +142,7 @@ struct isp_ccdc_device {
 	unsigned int update;
 	unsigned int shadow_update;
 
+	bool bt656;
 	unsigned int underrun:1;
 	enum isp_pipeline_stream_state state;
 	spinlock_t lock;
-- 
1.8.5.5


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* Re: [PATCH 09/11] omap3isp: ccdc: Add basic support for interlaced video
  2014-05-26 19:50 ` [PATCH 09/11] omap3isp: ccdc: Add basic support for interlaced video Laurent Pinchart
@ 2014-05-26 21:12   ` Sakari Ailus
  0 siblings, 0 replies; 31+ messages in thread
From: Sakari Ailus @ 2014-05-26 21:12 UTC (permalink / raw)
  To: Laurent Pinchart, linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg

Hi Laurent,

Laurent Pinchart wrote:
> When the CCDC input is interlaced enable the alternate field order on
> the CCDC output video node. The field signal polarity is specified
> through platform data.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>   drivers/media/platform/omap3isp/ispccdc.c  | 21 ++++++++++++++++++++-
>   drivers/media/platform/omap3isp/ispvideo.c |  6 ++++++
>   drivers/media/platform/omap3isp/ispvideo.h |  2 ++
>   include/media/omap3isp.h                   |  3 +++
>   4 files changed, 31 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/omap3isp/ispccdc.c b/drivers/media/platform/omap3isp/ispccdc.c
> index 76d4fd7..49d7256 100644
> --- a/drivers/media/platform/omap3isp/ispccdc.c
> +++ b/drivers/media/platform/omap3isp/ispccdc.c
...
> @@ -1830,6 +1845,11 @@ ccdc_try_format(struct isp_ccdc_device *ccdc, struct v4l2_subdev_fh *fh,
>   		/* Clamp the input size. */
>   		fmt->width = clamp_t(u32, width, 32, 4096);
>   		fmt->height = clamp_t(u32, height, 32, 4096);
> +
> +		/* Default to progressive field order. */
> +		if (fmt->field == V4L2_FIELD_ANY)
> +			fmt->field = V4L2_FIELD_NONE;

I think this change would better fit in "omap3isp: Default to 
progressive field order when setting the format". Then you could omit " 
when setting the format". :-)

-- 
Kind regards,

Sakari Ailus
sakari.ailus@iki.fi

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
                   ` (10 preceding siblings ...)
  2014-05-26 19:50 ` [PATCH 11/11] omap3isp: ccdc: Add support for BT.656 YUV format at the CCDC input Laurent Pinchart
@ 2014-05-26 21:18 ` Sakari Ailus
  2014-05-27  8:38 ` Enrico
  12 siblings, 0 replies; 31+ messages in thread
From: Sakari Ailus @ 2014-05-26 21:18 UTC (permalink / raw)
  To: Laurent Pinchart, linux-media
  Cc: Julien BERAUD, Boris Todorov, Gary Thomas, Enrico,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg

Hi Laurent,

Laurent Pinchart wrote:
> Hello,
>
> This patch sets implements support for BT.656 and interlaced formats in the
> OMAP3 ISP driver. Better late than never I suppose, although given how long
> this has been on my to-do list there's probably no valid excuse.

Thanks!

Acked-by: Sakari Ailus <sakari.ailus@iki.fi>

-- 
Sakari Ailus
sakari.ailus@iki.fi

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
                   ` (11 preceding siblings ...)
  2014-05-26 21:18 ` [PATCH 00/11] OMAP3 ISP BT.656 support Sakari Ailus
@ 2014-05-27  8:38 ` Enrico
  2014-06-24 15:19   ` Enrico
  12 siblings, 1 reply; 31+ messages in thread
From: Enrico @ 2014-05-27  8:38 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: linux-media, Julien BERAUD, Boris Todorov, Gary Thomas,
	Stefan Herbrechtsmeier, Javier Martinez Canillas,
	Chris Whittenburg, Sakari Ailus, Enric Balletbo Serra

On Mon, May 26, 2014 at 9:50 PM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> Hello,
>
> This patch sets implements support for BT.656 and interlaced formats in the
> OMAP3 ISP driver. Better late than never I suppose, although given how long
> this has been on my to-do list there's probably no valid excuse.

Thanks Laurent!

I hope to have time soon to test it :)

Enrico

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-05-27  8:38 ` Enrico
@ 2014-06-24 15:19   ` Enrico
  2014-06-24 17:19     ` Stefan Herbrechtsmeier
                       ` (2 more replies)
  0 siblings, 3 replies; 31+ messages in thread
From: Enrico @ 2014-06-24 15:19 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: linux-media, Enric Balletbo Serra

On Tue, May 27, 2014 at 10:38 AM, Enrico <ebutera@users.berlios.de> wrote:
> On Mon, May 26, 2014 at 9:50 PM, Laurent Pinchart
> <laurent.pinchart@ideasonboard.com> wrote:
>> Hello,
>>
>> This patch sets implements support for BT.656 and interlaced formats in the
>> OMAP3 ISP driver. Better late than never I suppose, although given how long
>> this has been on my to-do list there's probably no valid excuse.
>
> Thanks Laurent!
>
> I hope to have time soon to test it :)

Hi Laurent,

i wanted to try your patches but i'm having a problem (probably not
caused by your patches).

I merged media_tree master and omap3isp branches, applied your patches
and added camera platform data in pdata-quirks, but when loading the
omap3-isp driver i have:

omap3isp: clk_set_rate for cam_mclk failed

The returned value from clk_set_rate is -22 (EINVAL), but i can't see
any other debug message to track it down. Any ides?
I'm testing it on an igep proton (omap3530 version).

Thanks,

Enrico

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-06-24 15:19   ` Enrico
@ 2014-06-24 17:19     ` Stefan Herbrechtsmeier
  2014-07-01 20:24       ` Laurent Pinchart
  2014-06-26 16:18     ` Enrico
  2014-07-22 15:52     ` Enrico
  2 siblings, 1 reply; 31+ messages in thread
From: Stefan Herbrechtsmeier @ 2014-06-24 17:19 UTC (permalink / raw)
  To: Enrico, Laurent Pinchart; +Cc: linux-media, Enric Balletbo Serra

[-- Attachment #1: Type: text/plain, Size: 1188 bytes --]

Am 24.06.2014 17:19, schrieb Enrico:
> On Tue, May 27, 2014 at 10:38 AM, Enrico <ebutera@users.berlios.de> wrote:
>> On Mon, May 26, 2014 at 9:50 PM, Laurent Pinchart
>> <laurent.pinchart@ideasonboard.com> wrote:
>>> Hello,
>>>
>>> This patch sets implements support for BT.656 and interlaced formats in the
>>> OMAP3 ISP driver. Better late than never I suppose, although given how long
>>> this has been on my to-do list there's probably no valid excuse.
>> Thanks Laurent!
>>
>> I hope to have time soon to test it :)
> i wanted to try your patches but i'm having a problem (probably not
> caused by your patches).
>
> I merged media_tree master and omap3isp branches, applied your patches
> and added camera platform data in pdata-quirks, but when loading the
> omap3-isp driver i have:
>
> omap3isp: clk_set_rate for cam_mclk failed
>
> The returned value from clk_set_rate is -22 (EINVAL), but i can't see
> any other debug message to track it down. Any ides?
> I'm testing it on an igep proton (omap3530 version).
Hi Enrico,

please test the attached patch. It is based on Laurent's patches for the 
clock and boot testes on an Gumstix Overo with an OMAP3530.

Regards,
   Stefan


[-- Attachment #2: 0021-ARM-dts-set-ti-set-rate-parent-for-dpll4_m5x2-clock.patch --]
[-- Type: text/x-patch, Size: 1034 bytes --]

>From 9f8162ddebf7636e60101f0831d071e73ab6df75 Mon Sep 17 00:00:00 2001
From: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
Date: Fri, 13 Jun 2014 18:15:56 +0200
Subject: [PATCH 21/25] ARM: dts: set 'ti,set-rate-parent' for dpll4_m5x2 clock

Set 'ti,set-rate-parent' property for the dpll4_m5x2_ck clock, which
is used for the ISP functional clock. This fixes the OMAP3 ISP driver's
clock rate configuration on OMAP34xx, which needs the rate to be
propagated properly to the divider node (dpll4_m5_ck).

Signed-off-by: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
---
 arch/arm/boot/dts/omap3xxx-clocks.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/omap3xxx-clocks.dtsi b/arch/arm/boot/dts/omap3xxx-clocks.dtsi
index 25adab1..beeff7c 100644
--- a/arch/arm/boot/dts/omap3xxx-clocks.dtsi
+++ b/arch/arm/boot/dts/omap3xxx-clocks.dtsi
@@ -465,6 +465,7 @@
 		ti,bit-shift = <0x1e>;
 		reg = <0x0d00>;
 		ti,set-bit-to-disable;
+		ti,set-rate-parent;
 	};
 
 	dpll4_m6_ck: dpll4_m6_ck {
-- 
2.0.0


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-06-24 15:19   ` Enrico
  2014-06-24 17:19     ` Stefan Herbrechtsmeier
@ 2014-06-26 16:18     ` Enrico
  2014-07-01 20:17       ` Laurent Pinchart
  2014-07-22 15:52     ` Enrico
  2 siblings, 1 reply; 31+ messages in thread
From: Enrico @ 2014-06-26 16:18 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: linux-media, Enric Balletbo Serra

On Tue, Jun 24, 2014 at 5:19 PM, Enrico <ebutera@users.berlios.de> wrote:
> On Tue, May 27, 2014 at 10:38 AM, Enrico <ebutera@users.berlios.de> wrote:
>> On Mon, May 26, 2014 at 9:50 PM, Laurent Pinchart
>> <laurent.pinchart@ideasonboard.com> wrote:
>>> Hello,
>>>
>>> This patch sets implements support for BT.656 and interlaced formats in the
>>> OMAP3 ISP driver. Better late than never I suppose, although given how long
>>> this has been on my to-do list there's probably no valid excuse.
>>
>> Thanks Laurent!
>>
>> I hope to have time soon to test it :)
>
> Hi Laurent,
>
> i wanted to try your patches but i'm having a problem (probably not
> caused by your patches).
>
> I merged media_tree master and omap3isp branches, applied your patches
> and added camera platform data in pdata-quirks, but when loading the
> omap3-isp driver i have:
>
> omap3isp: clk_set_rate for cam_mclk failed
>
> The returned value from clk_set_rate is -22 (EINVAL), but i can't see
> any other debug message to track it down. Any ides?
> I'm testing it on an igep proton (omap3530 version).

Trying it on an igep com module (dm3730) i don't get the clk_set_rate
error (but there is no tvp hardware connected so i can't go farther).

So it must be something different between omap3430/omap3630 clocks, i
tried to use (CM_CAM_MCLK_HZ / 2) with the omap3530 one but i get the
same error.

I don't know what else i can try.

Enrico

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-06-26 16:18     ` Enrico
@ 2014-07-01 20:17       ` Laurent Pinchart
  0 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-07-01 20:17 UTC (permalink / raw)
  To: Enrico; +Cc: linux-media, Enric Balletbo Serra

Hi Enrico,

On Thursday 26 June 2014 18:18:53 Enrico wrote:
> On Tue, Jun 24, 2014 at 5:19 PM, Enrico <ebutera@users.berlios.de> wrote:
> > On Tue, May 27, 2014 at 10:38 AM, Enrico <ebutera@users.berlios.de> wrote:
> >> On Mon, May 26, 2014 at 9:50 PM, Laurent Pinchart wrote:
> >>> Hello,
> >>> 
> >>> This patch sets implements support for BT.656 and interlaced formats in
> >>> the OMAP3 ISP driver. Better late than never I suppose, although given
> >>> how long this has been on my to-do list there's probably no valid
> >>> excuse.
> >> 
> >> Thanks Laurent!
> >> 
> >> I hope to have time soon to test it :)
> > 
> > Hi Laurent,
> > 
> > i wanted to try your patches but i'm having a problem (probably not
> > caused by your patches).
> > 
> > I merged media_tree master and omap3isp branches, applied your patches
> > and added camera platform data in pdata-quirks, but when loading the
> > omap3-isp driver i have:
> > 
> > omap3isp: clk_set_rate for cam_mclk failed
> > 
> > The returned value from clk_set_rate is -22 (EINVAL), but i can't see
> > any other debug message to track it down. Any ides?
> > I'm testing it on an igep proton (omap3530 version).
> 
> Trying it on an igep com module (dm3730) i don't get the clk_set_rate
> error (but there is no tvp hardware connected so i can't go farther).
> 
> So it must be something different between omap3430/omap3630 clocks, i
> tried to use (CM_CAM_MCLK_HZ / 2) with the omap3530 one but i get the
> same error.
> 
> I don't know what else i can try.

Does your platform instantiate clocks through DT or through SoC code ? In the 
first case commit 2febd999764c682e1f125a4307fcb8791df3100e ("ARM: dts: set 
'ti,set-rate-parent' for dpll4_m5 path") might help, and in the second case 
you should apply commit 98d7e1aee6dd534f468993f8c6a1bc730d4cfa81 ("ARM: OMAP3: 
clock: Back-propagate rate change from cam_mclk to dpll4_m5 on all OMAP3 
platforms"). You can just apply both, as well as the patch that Stefan has 
posted in reply to your e-mail, and retry.

-- 
Regards,

Laurent Pinchart



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-06-24 17:19     ` Stefan Herbrechtsmeier
@ 2014-07-01 20:24       ` Laurent Pinchart
  2014-07-04 11:21         ` Stefan Herbrechtsmeier
  0 siblings, 1 reply; 31+ messages in thread
From: Laurent Pinchart @ 2014-07-01 20:24 UTC (permalink / raw)
  To: Stefan Herbrechtsmeier; +Cc: Enrico, linux-media, Enric Balletbo Serra

Hi Stefan,

On Tuesday 24 June 2014 19:19:22 Stefan Herbrechtsmeier wrote:
> Am 24.06.2014 17:19, schrieb Enrico:
> > On Tue, May 27, 2014 at 10:38 AM, Enrico <ebutera@users.berlios.de> wrote:
> >> On Mon, May 26, 2014 at 9:50 PM, Laurent Pinchart wrote:
> >>> Hello,
> >>> 
> >>> This patch sets implements support for BT.656 and interlaced formats in
> >>> the OMAP3 ISP driver. Better late than never I suppose, although given
> >>> how long this has been on my to-do list there's probably no valid
> >>> excuse.
> >> 
> >> Thanks Laurent!
> >> 
> >> I hope to have time soon to test it :)
> > 
> > i wanted to try your patches but i'm having a problem (probably not
> > caused by your patches).
> > 
> > I merged media_tree master and omap3isp branches, applied your patches
> > and added camera platform data in pdata-quirks, but when loading the
> > omap3-isp driver i have:
> > 
> > omap3isp: clk_set_rate for cam_mclk failed
> > 
> > The returned value from clk_set_rate is -22 (EINVAL), but i can't see
> > any other debug message to track it down. Any ides?
> > I'm testing it on an igep proton (omap3530 version).
> 
> Hi Enrico,
> 
> please test the attached patch. It is based on Laurent's patches for the
> clock and boot testes on an Gumstix Overo with an OMAP3530.

The patch looks good to me. Do you plan to submit it to mainline ?

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-07-01 20:24       ` Laurent Pinchart
@ 2014-07-04 11:21         ` Stefan Herbrechtsmeier
  0 siblings, 0 replies; 31+ messages in thread
From: Stefan Herbrechtsmeier @ 2014-07-04 11:21 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: Enrico, linux-media, Enric Balletbo Serra

Hi Laurent,

Am 01.07.2014 22:24, schrieb Laurent Pinchart:
> On Tuesday 24 June 2014 19:19:22 Stefan Herbrechtsmeier wrote:
>> Am 24.06.2014 17:19, schrieb Enrico:
>>> On Tue, May 27, 2014 at 10:38 AM, Enrico <ebutera@users.berlios.de> wrote:
>>>> On Mon, May 26, 2014 at 9:50 PM, Laurent Pinchart wrote:
>>>>> Hello,
>>>>>
>>>>> This patch sets implements support for BT.656 and interlaced formats in
>>>>> the OMAP3 ISP driver. Better late than never I suppose, although given
>>>>> how long this has been on my to-do list there's probably no valid
>>>>> excuse.
>>>> Thanks Laurent!
>>>>
>>>> I hope to have time soon to test it :)
>>> i wanted to try your patches but i'm having a problem (probably not
>>> caused by your patches).
>>>
>>> I merged media_tree master and omap3isp branches, applied your patches
>>> and added camera platform data in pdata-quirks, but when loading the
>>> omap3-isp driver i have:
>>>
>>> omap3isp: clk_set_rate for cam_mclk failed
>>>
>>> The returned value from clk_set_rate is -22 (EINVAL), but i can't see
>>> any other debug message to track it down. Any ides?
>>> I'm testing it on an igep proton (omap3530 version).
>> Hi Enrico,
>>
>> please test the attached patch. It is based on Laurent's patches for the
>> clock and boot testes on an Gumstix Overo with an OMAP3530.
> The patch looks good to me. Do you plan to submit it to mainline ?
I will submit it, if I have a running set-up.

At the moment the camera clock is half of the requested clock.

I have changed the ti,clock-mult of dpll4_m5x2_mul_ck to 1 to get the 
requested rate. But the omap3isp reports an unexpected cam_mclk rate 
(expected : 172800000, actual : 144000000).


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-06-24 15:19   ` Enrico
  2014-06-24 17:19     ` Stefan Herbrechtsmeier
  2014-06-26 16:18     ` Enrico
@ 2014-07-22 15:52     ` Enrico
  2014-07-22 16:04       ` Laurent Pinchart
  2 siblings, 1 reply; 31+ messages in thread
From: Enrico @ 2014-07-22 15:52 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: linux-media, Enric Balletbo Serra, stefan

[-- Attachment #1: Type: text/plain, Size: 2247 bytes --]

On Tue, Jun 24, 2014 at 5:19 PM, Enrico <ebutera@users.berlios.de> wrote:
> On Tue, May 27, 2014 at 10:38 AM, Enrico <ebutera@users.berlios.de> wrote:
>> On Mon, May 26, 2014 at 9:50 PM, Laurent Pinchart
>> <laurent.pinchart@ideasonboard.com> wrote:
>>> Hello,
>>>
>>> This patch sets implements support for BT.656 and interlaced formats in the
>>> OMAP3 ISP driver. Better late than never I suppose, although given how long
>>> this has been on my to-do list there's probably no valid excuse.
>>
>> Thanks Laurent!
>>
>> I hope to have time soon to test it :)
>
> Hi Laurent,
>
> i wanted to try your patches but i'm having a problem (probably not
> caused by your patches).
>
> I merged media_tree master and omap3isp branches, applied your patches
> and added camera platform data in pdata-quirks, but when loading the
> omap3-isp driver i have:
>
> omap3isp: clk_set_rate for cam_mclk failed
>
> The returned value from clk_set_rate is -22 (EINVAL), but i can't see
> any other debug message to track it down. Any ides?
> I'm testing it on an igep proton (omap3530 version).

I found out that my previous email was not working anymore, so i
didn't read about Stefan patch (ti,set-rate-parent).

With that patch i can setup my pipeline (attached), but i can't make
yavta capture:

root@igep00x0:~/field# ./yavta -f UYVY -n4 -s 720x624 -c100 /dev/video2
Device /dev/video2 opened.
Device `OMAP3 ISP CCDC output' on `media' is a video output (without
mplanes) device.
Video format set: UYVY (59565955) 720x624 (stride 1440) field none
buffer size 898560
Video format: UYVY (59565955) 720x624 (stride 1440) field none buffer
size 898560
4 buffers requested.
length: 898560 offset: 0 timestamp type/source: mono/EoF
Buffer 0/0 mapped at address 0xb6ce4000.
length: 898560 offset: 901120 timestamp type/source: mono/EoF
Buffer 1/0 mapped at address 0xb6c08000.
length: 898560 offset: 1802240 timestamp type/source: mono/EoF
Buffer 2/0 mapped at address 0xb6b2c000.
length: 898560 offset: 2703360 timestamp type/source: mono/EoF
Buffer 3/0 mapped at address 0xb6a50000.
Unable to start streaming: Invalid argument (22).
4 buffers released.

strace:

ioctl(3, VIDIOC_STREAMON, 0xbef9c75c)   = -1 EINVAL (Invalid argument)

any ideas?

Thanks,

Enrico

[-- Attachment #2: mediactl.txt --]
[-- Type: text/plain, Size: 4124 bytes --]

Opening media device /dev/media0
Enumerating entities
Found 16 entities
Enumerating pads and links
Media controller API version 0.0.0

Media device information
------------------------
driver          omap3isp
model           TI OMAP3 ISP
serial          
bus info        
hw revision     0x20
driver version  0.0.0

Device topology
- entity 1: OMAP3 ISP CCP2 (2 pads, 2 links)
            type V4L2 subdev subtype Unknown
            device node name /dev/v4l-subdev0
	pad0: Sink [SGRBG10 4096x4096]
		<- "OMAP3 ISP CCP2 input":0 []
	pad1: Source [SGRBG10 4096x4096]
		-> "OMAP3 ISP CCDC":0 []

- entity 2: OMAP3 ISP CCP2 input (1 pad, 1 link)
            type Node subtype V4L
            device node name /dev/video0
	pad0: Source 
		-> "OMAP3 ISP CCP2":0 []

- entity 3: OMAP3 ISP CSI2a (2 pads, 2 links)
            type V4L2 subdev subtype Unknown
            device node name /dev/v4l-subdev1
	pad0: Sink [SGRBG10 4096x4096]
	pad1: Source [SGRBG10 4096x4096]
		-> "OMAP3 ISP CSI2a output":0 []
		-> "OMAP3 ISP CCDC":0 []

- entity 4: OMAP3 ISP CSI2a output (1 pad, 1 link)
            type Node subtype V4L
            device node name /dev/video1
	pad0: Sink 
		<- "OMAP3 ISP CSI2a":1 []

- entity 5: OMAP3 ISP CCDC (3 pads, 9 links)
            type V4L2 subdev subtype Unknown
            device node name /dev/v4l-subdev2
	pad0: Sink [UYVY2X8 720x625]
		<- "OMAP3 ISP CCP2":1 []
		<- "OMAP3 ISP CSI2a":1 []
		<- "tvp5150 1-005c":0 [ENABLED]
	pad1: Source [UYVY 720x624 (0,0)/720x624]
		-> "OMAP3 ISP CCDC output":0 [ENABLED]
		-> "OMAP3 ISP resizer":0 []
	pad2: Source [unknown 720x624]
		-> "OMAP3 ISP preview":0 []
		-> "OMAP3 ISP AEWB":0 [ENABLED,IMMUTABLE]
		-> "OMAP3 ISP AF":0 [ENABLED,IMMUTABLE]
		-> "OMAP3 ISP histogram":0 [ENABLED,IMMUTABLE]

- entity 6: OMAP3 ISP CCDC output (1 pad, 1 link)
            type Node subtype V4L
            device node name /dev/video2
	pad0: Sink 
		<- "OMAP3 ISP CCDC":1 [ENABLED]

- entity 7: OMAP3 ISP preview (2 pads, 4 links)
            type V4L2 subdev subtype Unknown
            device node name /dev/v4l-subdev3
	pad0: Sink [SGRBG10 4096x4096 (8,4)/4082x4088]
		<- "OMAP3 ISP CCDC":2 []
		<- "OMAP3 ISP preview input":0 []
	pad1: Source [YUYV 4082x4088]
		-> "OMAP3 ISP preview output":0 []
		-> "OMAP3 ISP resizer":0 []

- entity 8: OMAP3 ISP preview input (1 pad, 1 link)
            type Node subtype V4L
            device node name /dev/video3
	pad0: Source 
		-> "OMAP3 ISP preview":0 []

- entity 9: OMAP3 ISP preview output (1 pad, 1 link)
            type Node subtype V4L
            device node name /dev/video4
	pad0: Sink 
		<- "OMAP3 ISP preview":1 []

- entity 10: OMAP3 ISP resizer (2 pads, 4 links)
             type V4L2 subdev subtype Unknown
             device node name /dev/v4l-subdev4
	pad0: Sink [YUYV 4095x4095 (0,6)/4094x4082]
		<- "OMAP3 ISP CCDC":1 []
		<- "OMAP3 ISP preview":1 []
		<- "OMAP3 ISP resizer input":0 []
	pad1: Source [YUYV 3312x4095]
		-> "OMAP3 ISP resizer output":0 []

- entity 11: OMAP3 ISP resizer input (1 pad, 1 link)
             type Node subtype V4L
             device node name /dev/video5
	pad0: Source 
		-> "OMAP3 ISP resizer":0 []

- entity 12: OMAP3 ISP resizer output (1 pad, 1 link)
             type Node subtype V4L
             device node name /dev/video6
	pad0: Sink 
		<- "OMAP3 ISP resizer":1 []

- entity 13: OMAP3 ISP AEWB (1 pad, 1 link)
             type V4L2 subdev subtype Unknown
             device node name /dev/v4l-subdev5
	pad0: Sink 
		<- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE]

- entity 14: OMAP3 ISP AF (1 pad, 1 link)
             type V4L2 subdev subtype Unknown
             device node name /dev/v4l-subdev6
	pad0: Sink 
		<- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE]

- entity 15: OMAP3 ISP histogram (1 pad, 1 link)
             type V4L2 subdev subtype Unknown
             device node name /dev/v4l-subdev7
	pad0: Sink 
		<- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE]

- entity 16: tvp5150 1-005c (1 pad, 1 link)
             type V4L2 subdev subtype Unknown
             device node name /dev/v4l-subdev8
	pad0: Source [UYVY2X8 720x625]
		-> "OMAP3 ISP CCDC":0 [ENABLED]



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-07-22 15:52     ` Enrico
@ 2014-07-22 16:04       ` Laurent Pinchart
  2014-07-22 16:26         ` Enrico
       [not found]         ` <1406046034.73192.YahooMailNeo@web162404.mail.bf1.yahoo.com>
  0 siblings, 2 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-07-22 16:04 UTC (permalink / raw)
  To: Enrico; +Cc: linux-media, Enric Balletbo Serra, stefan

Hi Enrico,

On Tuesday 22 July 2014 17:52:27 Enrico wrote:
> On Tue, Jun 24, 2014 at 5:19 PM, Enrico <ebutera@users.berlios.de> wrote:
> > On Tue, May 27, 2014 at 10:38 AM, Enrico <ebutera@users.berlios.de> wrote:
> >> On Mon, May 26, 2014 at 9:50 PM, Laurent Pinchart wrote:
> >>> Hello,
> >>> 
> >>> This patch sets implements support for BT.656 and interlaced formats in
> >>> the OMAP3 ISP driver. Better late than never I suppose, although given
> >>> how long this has been on my to-do list there's probably no valid
> >>> excuse.
> >> 
> >> Thanks Laurent!
> >> 
> >> I hope to have time soon to test it :)
> > 
> > Hi Laurent,
> > 
> > i wanted to try your patches but i'm having a problem (probably not
> > caused by your patches).
> > 
> > I merged media_tree master and omap3isp branches, applied your patches
> > and added camera platform data in pdata-quirks, but when loading the
> > omap3-isp driver i have:
> > 
> > omap3isp: clk_set_rate for cam_mclk failed
> > 
> > The returned value from clk_set_rate is -22 (EINVAL), but i can't see
> > any other debug message to track it down. Any ides?
> > I'm testing it on an igep proton (omap3530 version).
> 
> I found out that my previous email was not working anymore, so i
> didn't read about Stefan patch (ti,set-rate-parent).
> 
> With that patch i can setup my pipeline (attached), but i can't make
> yavta capture:
> 
> root@igep00x0:~/field# ./yavta -f UYVY -n4 -s 720x624 -c100 /dev/video2
> Device /dev/video2 opened.
> Device `OMAP3 ISP CCDC output' on `media' is a video output (without
> mplanes) device.
> Video format set: UYVY (59565955) 720x624 (stride 1440) field none
> buffer size 898560
> Video format: UYVY (59565955) 720x624 (stride 1440) field none buffer
> size 898560
> 4 buffers requested.
> length: 898560 offset: 0 timestamp type/source: mono/EoF
> Buffer 0/0 mapped at address 0xb6ce4000.
> length: 898560 offset: 901120 timestamp type/source: mono/EoF
> Buffer 1/0 mapped at address 0xb6c08000.
> length: 898560 offset: 1802240 timestamp type/source: mono/EoF
> Buffer 2/0 mapped at address 0xb6b2c000.
> length: 898560 offset: 2703360 timestamp type/source: mono/EoF
> Buffer 3/0 mapped at address 0xb6a50000.
> Unable to start streaming: Invalid argument (22).
> 4 buffers released.
> 
> strace:
> 
> ioctl(3, VIDIOC_STREAMON, 0xbef9c75c)   = -1 EINVAL (Invalid argument)
> 
> any ideas?

You will need to upgrade media-ctl and yavta to versions that support 
interlaced formats. media-ctl has been moved to v4l-utils 
(http://git.linuxtv.org/cgit.cgi/v4l-utils.git/) and yavta is hosted at 
git://git.ideasonboard.org/yavta.git. You want to use the master branch for 
both trees.

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-07-22 16:04       ` Laurent Pinchart
@ 2014-07-22 16:26         ` Enrico
  2014-07-22 16:32           ` Laurent Pinchart
       [not found]         ` <1406046034.73192.YahooMailNeo@web162404.mail.bf1.yahoo.com>
  1 sibling, 1 reply; 31+ messages in thread
From: Enrico @ 2014-07-22 16:26 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: linux-media, Enric Balletbo Serra, stefan

On Tue, Jul 22, 2014 at 6:04 PM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> Hi Enrico,
>
> You will need to upgrade media-ctl and yavta to versions that support
> interlaced formats. media-ctl has been moved to v4l-utils
> (http://git.linuxtv.org/cgit.cgi/v4l-utils.git/) and yavta is hosted at
> git://git.ideasonboard.org/yavta.git. You want to use the master branch for
> both trees.

It seems that in v4l-utils there is no field support in media-ctl, am i wrong?

I forgot to add that i'm using yavta master and media-ctl "field"
branch (from ideasonboard).

Enrico

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
       [not found]         ` <1406046034.73192.YahooMailNeo@web162404.mail.bf1.yahoo.com>
@ 2014-07-22 16:27           ` Laurent Pinchart
  0 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-07-22 16:27 UTC (permalink / raw)
  To: Raymond Jender; +Cc: Enrico, linux-media, Enric Balletbo Serra, stefan

Hi Raymond,

On Tuesday 22 July 2014 09:20:34 Raymond Jender wrote:
> Please remove me from this mailing list.  It does not provide me with what I
> thought it would.

We can't do that, but you can easily perform the operation yourself. Look at 
the bottom of any e-mail you receive from the list (but not the e-mails that 
are explicitly sent to you, like this one, as they don't go through the 
mailing list manager) for instructions.

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-07-22 16:26         ` Enrico
@ 2014-07-22 16:32           ` Laurent Pinchart
  2014-07-23 13:54             ` Enrico
  0 siblings, 1 reply; 31+ messages in thread
From: Laurent Pinchart @ 2014-07-22 16:32 UTC (permalink / raw)
  To: Enrico; +Cc: linux-media, Enric Balletbo Serra, stefan

Hi Enrico,

On Tuesday 22 July 2014 18:26:52 Enrico wrote:
> On Tue, Jul 22, 2014 at 6:04 PM, Laurent Pinchart wrote:
> > Hi Enrico,
> > 
> > You will need to upgrade media-ctl and yavta to versions that support
> > interlaced formats. media-ctl has been moved to v4l-utils
> > (http://git.linuxtv.org/cgit.cgi/v4l-utils.git/) and yavta is hosted at
> > git://git.ideasonboard.org/yavta.git. You want to use the master branch
> > for both trees.
> 
> It seems that in v4l-utils there is no field support in media-ctl, am i
> wrong?

Oops, my bad, you're absolutely right.

> I forgot to add that i'm using yavta master and media-ctl "field"
> branch (from ideasonboard).

Could you please try media-ctl from

	git://linuxtv.org/pinchartl/v4l-utils.git field

The IOB repository is deprecated, although the version of media-ctl present 
there might work, I'd like to rule out that issue.

The media-ctl output you've posted doesn't show field information, so you're 
probably running either the wrong media-ctl version or the wrong kernel 
version.

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-07-22 16:32           ` Laurent Pinchart
@ 2014-07-23 13:54             ` Enrico
  2014-07-23 13:57               ` Enrico
  0 siblings, 1 reply; 31+ messages in thread
From: Enrico @ 2014-07-23 13:54 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: linux-media, Enric Balletbo Serra

On Tue, Jul 22, 2014 at 6:32 PM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> Hi Enrico,
>
> On Tuesday 22 July 2014 18:26:52 Enrico wrote:
>> On Tue, Jul 22, 2014 at 6:04 PM, Laurent Pinchart wrote:
>> > Hi Enrico,
>> >
>> > You will need to upgrade media-ctl and yavta to versions that support
>> > interlaced formats. media-ctl has been moved to v4l-utils
>> > (http://git.linuxtv.org/cgit.cgi/v4l-utils.git/) and yavta is hosted at
>> > git://git.ideasonboard.org/yavta.git. You want to use the master branch
>> > for both trees.
>>
>> It seems that in v4l-utils there is no field support in media-ctl, am i
>> wrong?
>
> Oops, my bad, you're absolutely right.
>
>> I forgot to add that i'm using yavta master and media-ctl "field"
>> branch (from ideasonboard).
>
> Could you please try media-ctl from
>
>         git://linuxtv.org/pinchartl/v4l-utils.git field
>
> The IOB repository is deprecated, although the version of media-ctl present
> there might work, I'd like to rule out that issue.
>
> The media-ctl output you've posted doesn't show field information, so you're
> probably running either the wrong media-ctl version or the wrong kernel
> version.

You were right i was using the wrong binary, now the output is:

...
- entity 5: OMAP3 ISP CCDC (3 pads, 9 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev2
        pad0: Sink
                [fmt:UYVY2X8/720x625 field:interlaced]
...
        pad1: Source
                [fmt:UYVY/720x624 field:interlaced
                 crop.bounds:(0,0)/720x624
                 crop:(0,0)/720x624]

...

- entity 16: tvp5150 1-005c (1 pad, 1 link)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev8
        pad0: Source
                [fmt:UYVY2X8/720x625 field:interlaced]


but i still get the same error:

root@igep00x0:~/field# ./yavta -f UYVY -n4 -s 720x624 -c100 /dev/video2
Device /dev/video2 opened.
Device `OMAP3 ISP CCDC output' on `media' is a video output (without
mplanes) device.
Video format set: UYVY (59565955) 720x624 (stride 1440) field none
buffer size 898560
Video format: UYVY (59565955) 720x624 (stride 1440) field none buffer
size 898560
4 buffers requested.
length: 898560 offset: 0 timestamp type/source: mono/EoF
Buffer 0/0 mapped at address 0xb6d95000.
length: 898560 offset: 901120 timestamp type/source: mono/EoF
Buffer 1/0 mapped at address 0xb6cb9000.
length: 898560 offset: 1802240 timestamp type/source: mono/EoF
Buffer 2/0 mapped at address 0xb6bdd000.
length: 898560 offset: 2703360 timestamp type/source: mono/EoF
Buffer 3/0 mapped at address 0xb6b01000.
Unable to start streaming: Invalid argument (22).
4 buffers released.


And ccdc pad1: Source (entity 5) is strange, i think it should be
field:none (because ccdc output is deinterlaced).

Enrico

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-07-23 13:54             ` Enrico
@ 2014-07-23 13:57               ` Enrico
  2014-07-30 21:01                 ` Laurent Pinchart
  0 siblings, 1 reply; 31+ messages in thread
From: Enrico @ 2014-07-23 13:57 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: linux-media, Enric Balletbo Serra

On Wed, Jul 23, 2014 at 3:54 PM, Enrico <ebutera@users.sourceforge.net> wrote:
> On Tue, Jul 22, 2014 at 6:32 PM, Laurent Pinchart
> <laurent.pinchart@ideasonboard.com> wrote:
>> Hi Enrico,
>>
>> On Tuesday 22 July 2014 18:26:52 Enrico wrote:
>>> On Tue, Jul 22, 2014 at 6:04 PM, Laurent Pinchart wrote:
>>> > Hi Enrico,
>>> >
>>> > You will need to upgrade media-ctl and yavta to versions that support
>>> > interlaced formats. media-ctl has been moved to v4l-utils
>>> > (http://git.linuxtv.org/cgit.cgi/v4l-utils.git/) and yavta is hosted at
>>> > git://git.ideasonboard.org/yavta.git. You want to use the master branch
>>> > for both trees.
>>>
>>> It seems that in v4l-utils there is no field support in media-ctl, am i
>>> wrong?
>>
>> Oops, my bad, you're absolutely right.
>>
>>> I forgot to add that i'm using yavta master and media-ctl "field"
>>> branch (from ideasonboard).
>>
>> Could you please try media-ctl from
>>
>>         git://linuxtv.org/pinchartl/v4l-utils.git field
>>
>> The IOB repository is deprecated, although the version of media-ctl present
>> there might work, I'd like to rule out that issue.
>>
>> The media-ctl output you've posted doesn't show field information, so you're
>> probably running either the wrong media-ctl version or the wrong kernel
>> version.
>
> You were right i was using the wrong binary, now the output is:
>
> ...
> - entity 5: OMAP3 ISP CCDC (3 pads, 9 links)
>             type V4L2 subdev subtype Unknown flags 0
>             device node name /dev/v4l-subdev2
>         pad0: Sink
>                 [fmt:UYVY2X8/720x625 field:interlaced]
> ...
>         pad1: Source
>                 [fmt:UYVY/720x624 field:interlaced
>                  crop.bounds:(0,0)/720x624
>                  crop:(0,0)/720x624]
>
> ...
>
> - entity 16: tvp5150 1-005c (1 pad, 1 link)
>              type V4L2 subdev subtype Unknown flags 0
>              device node name /dev/v4l-subdev8
>         pad0: Source
>                 [fmt:UYVY2X8/720x625 field:interlaced]
>
>
> but i still get the same error:
>
> root@igep00x0:~/field# ./yavta -f UYVY -n4 -s 720x624 -c100 /dev/video2
> Device /dev/video2 opened.
> Device `OMAP3 ISP CCDC output' on `media' is a video output (without
> mplanes) device.
> Video format set: UYVY (59565955) 720x624 (stride 1440) field none
> buffer size 898560
> Video format: UYVY (59565955) 720x624 (stride 1440) field none buffer
> size 898560
> 4 buffers requested.
> length: 898560 offset: 0 timestamp type/source: mono/EoF
> Buffer 0/0 mapped at address 0xb6d95000.
> length: 898560 offset: 901120 timestamp type/source: mono/EoF
> Buffer 1/0 mapped at address 0xb6cb9000.
> length: 898560 offset: 1802240 timestamp type/source: mono/EoF
> Buffer 2/0 mapped at address 0xb6bdd000.
> length: 898560 offset: 2703360 timestamp type/source: mono/EoF
> Buffer 3/0 mapped at address 0xb6b01000.
> Unable to start streaming: Invalid argument (22).
> 4 buffers released.

Same error adding field parameter to yavta:
./yavta -f UYVY -n4 -s 720x624 -c100 --field interlaced /dev/video2

Enrico

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-07-23 13:57               ` Enrico
@ 2014-07-30 21:01                 ` Laurent Pinchart
  2014-07-31 10:21                   ` Enrico
  0 siblings, 1 reply; 31+ messages in thread
From: Laurent Pinchart @ 2014-07-30 21:01 UTC (permalink / raw)
  To: Enrico; +Cc: linux-media, Enric Balletbo Serra

Hi Enrico,

On Wednesday 23 July 2014 15:57:51 Enrico wrote:
> On Wed, Jul 23, 2014 at 3:54 PM, Enrico wrote:

[snip]

> > You were right i was using the wrong binary, now the output is:
> > 
> > ...
> > - entity 5: OMAP3 ISP CCDC (3 pads, 9 links)
> >             type V4L2 subdev subtype Unknown flags 0
> >             device node name /dev/v4l-subdev2
> >         pad0: Sink
> >                 [fmt:UYVY2X8/720x625 field:interlaced]
> > ...
> >         pad1: Source
> >                 [fmt:UYVY/720x624 field:interlaced
> >                  crop.bounds:(0,0)/720x624
> >                  crop:(0,0)/720x624]
> > ...
> > - entity 16: tvp5150 1-005c (1 pad, 1 link)
> >              type V4L2 subdev subtype Unknown flags 0
> >              device node name /dev/v4l-subdev8
> >         pad0: Source
> >                 [fmt:UYVY2X8/720x625 field:interlaced]

That's surprising. Have you applied the tvp5150 patches from the 
omap3isp/bt656 branch ? The field should be hardcoded to V4L2_FIELD_ALTERNATE 
(reported as "alternate" by media-ctl), as the tvp5150 alternates between the 
top and bottom fields in consecutive frames. The CCDC input should then be 
configured to V4L2_FIELD_ALTERNATE as well, and the CCDC output to 
V4L2_FIELD_ALTERNATE ("alternate"), V4L2_FIELD_INTERLACED_TB ("interlaced-tb") 
or V4L2_FIELD_INTERLACED_BT ("interlaced-bt").

> > but i still get the same error:
> > 
> > root@igep00x0:~/field# ./yavta -f UYVY -n4 -s 720x624 -c100 /dev/video2
> > Device /dev/video2 opened.
> > Device `OMAP3 ISP CCDC output' on `media' is a video output (without
> > mplanes) device.
> > Video format set: UYVY (59565955) 720x624 (stride 1440) field none
> > buffer size 898560
> > Video format: UYVY (59565955) 720x624 (stride 1440) field none buffer
> > size 898560
> > 4 buffers requested.
> > length: 898560 offset: 0 timestamp type/source: mono/EoF
> > Buffer 0/0 mapped at address 0xb6d95000.
> > length: 898560 offset: 901120 timestamp type/source: mono/EoF
> > Buffer 1/0 mapped at address 0xb6cb9000.
> > length: 898560 offset: 1802240 timestamp type/source: mono/EoF
> > Buffer 2/0 mapped at address 0xb6bdd000.
> > length: 898560 offset: 2703360 timestamp type/source: mono/EoF
> > Buffer 3/0 mapped at address 0xb6b01000.
> > Unable to start streaming: Invalid argument (22).
> > 4 buffers released.
> 
> Same error adding field parameter to yavta:
> ./yavta -f UYVY -n4 -s 720x624 -c100 --field interlaced /dev/video2


-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-07-30 21:01                 ` Laurent Pinchart
@ 2014-07-31 10:21                   ` Enrico
  2014-08-01 13:46                     ` Laurent Pinchart
  0 siblings, 1 reply; 31+ messages in thread
From: Enrico @ 2014-07-31 10:21 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: linux-media, Enric Balletbo Serra

On Wed, Jul 30, 2014 at 11:01 PM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> Hi Enrico,
>
> On Wednesday 23 July 2014 15:57:51 Enrico wrote:
>> On Wed, Jul 23, 2014 at 3:54 PM, Enrico wrote:
>
> [snip]
>
>> > You were right i was using the wrong binary, now the output is:
>> >
>> > ...
>> > - entity 5: OMAP3 ISP CCDC (3 pads, 9 links)
>> >             type V4L2 subdev subtype Unknown flags 0
>> >             device node name /dev/v4l-subdev2
>> >         pad0: Sink
>> >                 [fmt:UYVY2X8/720x625 field:interlaced]
>> > ...
>> >         pad1: Source
>> >                 [fmt:UYVY/720x624 field:interlaced
>> >                  crop.bounds:(0,0)/720x624
>> >                  crop:(0,0)/720x624]
>> > ...
>> > - entity 16: tvp5150 1-005c (1 pad, 1 link)
>> >              type V4L2 subdev subtype Unknown flags 0
>> >              device node name /dev/v4l-subdev8
>> >         pad0: Source
>> >                 [fmt:UYVY2X8/720x625 field:interlaced]
>
> That's surprising. Have you applied the tvp5150 patches from the
> omap3isp/bt656 branch ? The field should be hardcoded to V4L2_FIELD_ALTERNATE
> (reported as "alternate" by media-ctl), as the tvp5150 alternates between the
> top and bottom fields in consecutive frames. The CCDC input should then be
> configured to V4L2_FIELD_ALTERNATE as well, and the CCDC output to
> V4L2_FIELD_ALTERNATE ("alternate"), V4L2_FIELD_INTERLACED_TB ("interlaced-tb")
> or V4L2_FIELD_INTERLACED_BT ("interlaced-bt").

No, i missed those patches i was using only the omap3isp patches you
posted here.
With those patches and configuring the pipleline as you suggested i
could finally capture some good frames with yavta.

But i think there is some race, because it's not very "reliable". This
is what i see:

(with yavta -c50 -f UYVY -s 720x576 --field interlaced-tb /dev/video2)

1) first run, ok

2) if i re-run it soon after it finishes, it just hangs on start (in
VIDIOC_DQBUF).
I have to stop it with ctrl+c and after some seconds it exits, and the
kernel prints the ccdc stop timeout message.

in any case when it doesn't hang i can capture 200 frames with no
errors. And if i wait some seconds before running it again it usually
works (not always).

3) if i add -F to yavta (saving to a tmpfs in ram), it hangs after
capturing some frames (usually between 20 and 30).
yet again, same ctrl+c thing (it exits, ccdc stop timeout...).

Apart from these issues your patches are much better then the old
ones! Any hints on what i can try to fix these issues?

Thanks,

Enrico

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH 00/11] OMAP3 ISP BT.656 support
  2014-07-31 10:21                   ` Enrico
@ 2014-08-01 13:46                     ` Laurent Pinchart
  0 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2014-08-01 13:46 UTC (permalink / raw)
  To: Enrico; +Cc: linux-media, Enric Balletbo Serra

Hi Enrico,

On Thursday 31 July 2014 12:21:09 Enrico wrote:
> On Wed, Jul 30, 2014 at 11:01 PM, Laurent Pinchart wrote:
> > On Wednesday 23 July 2014 15:57:51 Enrico wrote:
> >> On Wed, Jul 23, 2014 at 3:54 PM, Enrico wrote:
> >
> > [snip]
> > 
> >> > You were right i was using the wrong binary, now the output is:
> >> > 
> >> > ...
> >> > - entity 5: OMAP3 ISP CCDC (3 pads, 9 links)
> >> >             type V4L2 subdev subtype Unknown flags 0
> >> >             device node name /dev/v4l-subdev2
> >> >         pad0: Sink
> >> >                 [fmt:UYVY2X8/720x625 field:interlaced]
> >> > ...
> >> >         pad1: Source
> >> >                 [fmt:UYVY/720x624 field:interlaced
> >> >                  crop.bounds:(0,0)/720x624
> >> >                  crop:(0,0)/720x624]
> >> > ...
> >> > - entity 16: tvp5150 1-005c (1 pad, 1 link)
> >> >              type V4L2 subdev subtype Unknown flags 0
> >> >              device node name /dev/v4l-subdev8
> >> >         pad0: Source
> >> >                 [fmt:UYVY2X8/720x625 field:interlaced]
> > 
> > That's surprising. Have you applied the tvp5150 patches from the
> > omap3isp/bt656 branch ? The field should be hardcoded to
> > V4L2_FIELD_ALTERNATE (reported as "alternate" by media-ctl), as the
> > tvp5150 alternates between the top and bottom fields in consecutive
> > frames. The CCDC input should then be configured to V4L2_FIELD_ALTERNATE
> > as well, and the CCDC output to V4L2_FIELD_ALTERNATE ("alternate"),
> > V4L2_FIELD_INTERLACED_TB ("interlaced-tb") or V4L2_FIELD_INTERLACED_BT
> > ("interlaced-bt").
> 
> No, i missed those patches i was using only the omap3isp patches you
> posted here.
> With those patches and configuring the pipleline as you suggested i
> could finally capture some good frames with yavta.
> 
> But i think there is some race, because it's not very "reliable". This
> is what i see:
> 
> (with yavta -c50 -f UYVY -s 720x576 --field interlaced-tb /dev/video2)
> 
> 1) first run, ok
> 
> 2) if i re-run it soon after it finishes, it just hangs on start (in
> VIDIOC_DQBUF).
> I have to stop it with ctrl+c and after some seconds it exits, and the
> kernel prints the ccdc stop timeout message.
> 
> in any case when it doesn't hang i can capture 200 frames with no
> errors. And if i wait some seconds before running it again it usually
> works (not always).
> 
> 3) if i add -F to yavta (saving to a tmpfs in ram), it hangs after
> capturing some frames (usually between 20 and 30).
> yet again, same ctrl+c thing (it exits, ccdc stop timeout...).
>
> Apart from these issues your patches are much better then the old ones!

Thank you. Feel free to ack them if you want ;-) I'd like to get them merged 
in v3.18, even if they're not perfect, provided they don't cause regressions 
in the non-BT.656 case.

> Any hints on what i can try to fix these issues?

I've just sent a patch series that might help (you've been CC'ed). Lucky you 
;-)

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2014-08-01 13:55 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-26 19:50 [PATCH 00/11] OMAP3 ISP BT.656 support Laurent Pinchart
2014-05-26 19:50 ` [PATCH 01/11] v4l: subdev: Extend default link validation to cover field order Laurent Pinchart
2014-05-26 19:50 ` [PATCH 02/11] omap3isp: Don't ignore subdev streamoff failures Laurent Pinchart
2014-05-26 19:50 ` [PATCH 03/11] omap3isp: Remove boilerplate disclaimer and FSF address Laurent Pinchart
2014-05-26 19:50 ` [PATCH 04/11] omap3isp: Move non-critical code out of the mutex-protected section Laurent Pinchart
2014-05-26 19:50 ` [PATCH 05/11] omap3isp: Default to progressive field order when setting the format Laurent Pinchart
2014-05-26 19:50 ` [PATCH 06/11] omap3isp: video: Validate the video node field order Laurent Pinchart
2014-05-26 19:50 ` [PATCH 07/11] omap3isp: ccdc: Simplify the configuration function Laurent Pinchart
2014-05-26 19:50 ` [PATCH 08/11] omap3isp: ccdc: Simplify the ccdc_isr_buffer() function Laurent Pinchart
2014-05-26 19:50 ` [PATCH 09/11] omap3isp: ccdc: Add basic support for interlaced video Laurent Pinchart
2014-05-26 21:12   ` Sakari Ailus
2014-05-26 19:50 ` [PATCH 10/11] omap3isp: ccdc: Support the interlaced field orders at the CCDC output Laurent Pinchart
2014-05-26 19:50 ` [PATCH 11/11] omap3isp: ccdc: Add support for BT.656 YUV format at the CCDC input Laurent Pinchart
2014-05-26 21:18 ` [PATCH 00/11] OMAP3 ISP BT.656 support Sakari Ailus
2014-05-27  8:38 ` Enrico
2014-06-24 15:19   ` Enrico
2014-06-24 17:19     ` Stefan Herbrechtsmeier
2014-07-01 20:24       ` Laurent Pinchart
2014-07-04 11:21         ` Stefan Herbrechtsmeier
2014-06-26 16:18     ` Enrico
2014-07-01 20:17       ` Laurent Pinchart
2014-07-22 15:52     ` Enrico
2014-07-22 16:04       ` Laurent Pinchart
2014-07-22 16:26         ` Enrico
2014-07-22 16:32           ` Laurent Pinchart
2014-07-23 13:54             ` Enrico
2014-07-23 13:57               ` Enrico
2014-07-30 21:01                 ` Laurent Pinchart
2014-07-31 10:21                   ` Enrico
2014-08-01 13:46                     ` Laurent Pinchart
     [not found]         ` <1406046034.73192.YahooMailNeo@web162404.mail.bf1.yahoo.com>
2014-07-22 16:27           ` Laurent Pinchart

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).