diff mbox

media: v4l2-ctrls: add control for test pattern

Message ID 1346663777-23149-1-git-send-email-prabhakar.lad@ti.com (mailing list archive)
State Awaiting Upstream
Headers show

Commit Message

Prabhakar Lad Sept. 3, 2012, 9:16 a.m. UTC
From: Lad, Prabhakar <prabhakar.lad@ti.com>

add V4L2_CID_TEST_PATTERN of type menu, which determines
the internal test pattern selected by the device.

Signed-off-by: Lad, Prabhakar <prabhakar.lad@ti.com>
Signed-off-by: Manjunath Hadli <manjunath.hadli@ti.com>
Cc: Sakari Ailus <sakari.ailus@iki.fi>
Cc: Hans Verkuil <hans.verkuil@cisco.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Rob Landley <rob@landley.net>
Cc: HeungJun Kim <riverful.kim@samsung.com>
Cc: Rob Landley <rob@landley.net>
---
 This patches has one checkpatch warning for line over
 80 characters altough it can be avoided I have kept it
 for consistency.

 Documentation/DocBook/media/v4l/controls.xml |   52 ++++++++++++++++++++++++++
 drivers/media/v4l2-core/v4l2-ctrls.c         |   16 ++++++++
 include/linux/videodev2.h                    |   12 ++++++
 3 files changed, 80 insertions(+), 0 deletions(-)

Comments

Hans Verkuil Sept. 3, 2012, 9:22 a.m. UTC | #1
On Mon September 3 2012 11:16:17 Prabhakar Lad wrote:
> From: Lad, Prabhakar <prabhakar.lad@ti.com>
> 
> add V4L2_CID_TEST_PATTERN of type menu, which determines
> the internal test pattern selected by the device.
> 
> Signed-off-by: Lad, Prabhakar <prabhakar.lad@ti.com>
> Signed-off-by: Manjunath Hadli <manjunath.hadli@ti.com>
> Cc: Sakari Ailus <sakari.ailus@iki.fi>
> Cc: Hans Verkuil <hans.verkuil@cisco.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
> Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Rob Landley <rob@landley.net>
> Cc: HeungJun Kim <riverful.kim@samsung.com>
> Cc: Rob Landley <rob@landley.net>
> ---
>  This patches has one checkpatch warning for line over
>  80 characters altough it can be avoided I have kept it
>  for consistency.
> 
>  Documentation/DocBook/media/v4l/controls.xml |   52 ++++++++++++++++++++++++++
>  drivers/media/v4l2-core/v4l2-ctrls.c         |   16 ++++++++
>  include/linux/videodev2.h                    |   12 ++++++
>  3 files changed, 80 insertions(+), 0 deletions(-)
> 
> diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
> index f704218..06f16e7 100644
> --- a/Documentation/DocBook/media/v4l/controls.xml
> +++ b/Documentation/DocBook/media/v4l/controls.xml
> @@ -4313,6 +4313,58 @@ interface and may change in the future.</para>
>  	      </tbody>
>  	    </entrytbl>
>  	  </row>
> +	  <row>
> +	    <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN</constant></entry>
> +	    <entry>menu</entry>
> +	  </row>
> +	  <row id="v4l2-test-pattern">
> +	    <entry spanname="descr"> The capture devices/sensors have the capability to

Test patterns are also applicable to output devices, not just capture and sensor devices.

> +	    generate internal test patterns. This test patterns are used to test a device
> +	    is properly working and can generate the desired waveforms that it supports.
> +	    </entry>
> +	  </row>
> +	  <row>
> +	    <entrytbl spanname="descr" cols="2">
> +	      <tbody valign="top">
> +	        <row>
> +	         <entry><constant>V4L2_TEST_PATTERN_DISABLED</constant></entry>
> +	          <entry>Test pattern generation is disabled</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_VERTICAL_LINES</constant></entry>
> +	          <entry>Generate vertical lines as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_HORIZONTAL_LINES</constant></entry>
> +	          <entry>Generate horizontal lines as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_DIAGONAL_LINES</constant></entry>
> +	          <entry>Generate diagonal lines as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_BLACK</constant></entry>
> +	          <entry>Generate solid black color as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_WHITE</constant></entry>
> +	          <entry>Generate solid white color as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_BLUE</constant></entry>
> +	          <entry>Generate solid blue color as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_RED</constant></entry>
> +	          <entry>Generate solid red color as test pattern</entry>
> +	        </row>

Just wondering: is there no SOLID_GREEN available with this sensor?

Regards,

	Hans

> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_CHECKER_BOARD</constant></entry>
> +	          <entry>Generate a checker board as test pattern</entry>
> +	        </row>
> +	      </tbody>
> +	    </entrytbl>
> +	  </row>
>  	<row><entry></entry></row>
>  	</tbody>
>        </tgroup>
> diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
> index 2d7bc15..ae709d1 100644
> --- a/drivers/media/v4l2-core/v4l2-ctrls.c
> +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
> @@ -430,6 +430,18 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
>  		"Advanced Predictor",
>  		NULL,
>  	};
> +	static const char * const test_pattern[] = {
> +		"Test Pattern Disabled",
> +		"Vertical Lines",
> +		"Horizontal Lines",
> +		"Diagonal Lines",
> +		"Solid Black",
> +		"Solid White",
> +		"Solid Blue",
> +		"Solid Red",
> +		"Checker Board",
> +		NULL,
> +	};
>  
>  	switch (id) {
>  	case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
> @@ -509,6 +521,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
>  		return jpeg_chroma_subsampling;
>  	case V4L2_CID_DPCM_PREDICTOR:
>  		return dpcm_predictor;
> +	case V4L2_CID_TEST_PATTERN:
> +		return test_pattern;
>  
>  	default:
>  		return NULL;
> @@ -740,6 +754,7 @@ const char *v4l2_ctrl_get_name(u32 id)
>  	case V4L2_CID_LINK_FREQ:		return "Link Frequency";
>  	case V4L2_CID_PIXEL_RATE:		return "Pixel Rate";
>  	case V4L2_CID_DPCM_PREDICTOR:		return "DPCM Predictor";
> +	case V4L2_CID_TEST_PATTERN:		return "Test Pattern";
>  
>  	default:
>  		return NULL;
> @@ -841,6 +856,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
>  	case V4L2_CID_EXPOSURE_METERING:
>  	case V4L2_CID_SCENE_MODE:
>  	case V4L2_CID_DPCM_PREDICTOR:
> +	case V4L2_CID_TEST_PATTERN:
>  		*type = V4L2_CTRL_TYPE_MENU;
>  		break;
>  	case V4L2_CID_LINK_FREQ:
> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
> index ca9fb78..1796079 100644
> --- a/include/linux/videodev2.h
> +++ b/include/linux/videodev2.h
> @@ -2005,6 +2005,18 @@ enum v4l2_dpcm_predictor {
>  	V4L2_DPCM_PREDICTOR_SIMPLE	= 0,
>  	V4L2_DPCM_PREDICTOR_ADVANCED	= 1,
>  };
> +#define V4L2_CID_TEST_PATTERN			(V4L2_CID_IMAGE_PROC_CLASS_BASE + 4)
> +enum v4l2_test_pattern {
> +	V4L2_TEST_PATTERN_DISABLED		= 0,
> +	V4L2_TEST_PATTERN_VERTICAL_LINES	= 1,
> +	V4L2_TEST_PATTERN_HORIZONTAL_LINES	= 2,
> +	V4L2_TEST_PATTERN_DIAGONAL_LINES	= 3,
> +	V4L2_TEST_PATTERN_SOLID_BLACK		= 4,
> +	V4L2_TEST_PATTERN_SOLID_WHITE		= 5,
> +	V4L2_TEST_PATTERN_SOLID_BLUE		= 6,
> +	V4L2_TEST_PATTERN_SOLID_RED		= 7,
> +	V4L2_TEST_PATTERN_CHECKER_BOARD		= 8,
> +};
>  
>  /*
>   *	T U N I N G
>
On 09/03/2012 11:16 AM, Prabhakar Lad wrote:
> diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
> index 2d7bc15..ae709d1 100644
> --- a/drivers/media/v4l2-core/v4l2-ctrls.c
> +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
> @@ -430,6 +430,18 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
>  		"Advanced Predictor",
>  		NULL,
>  	};
> +	static const char * const test_pattern[] = {
> +		"Test Pattern Disabled",

How about just "Disabled" ?

> +		"Vertical Lines",
> +		"Horizontal Lines",
> +		"Diagonal Lines",
> +		"Solid Black",
> +		"Solid White",
> +		"Solid Blue",
> +		"Solid Red",
> +		"Checker Board",
> +		NULL,
> +	};

--

Regards,
Sylwester
Prabhakar Lad Sept. 3, 2012, 9:46 a.m. UTC | #3
Hi Hans,

Thanks for the review.

On Monday 03 September 2012 02:52 PM, Hans Verkuil wrote:
> On Mon September 3 2012 11:16:17 Prabhakar Lad wrote:
>> From: Lad, Prabhakar <prabhakar.lad@ti.com>
>>
>> add V4L2_CID_TEST_PATTERN of type menu, which determines
>> the internal test pattern selected by the device.
>>
>> Signed-off-by: Lad, Prabhakar <prabhakar.lad@ti.com>
>> Signed-off-by: Manjunath Hadli <manjunath.hadli@ti.com>
>> Cc: Sakari Ailus <sakari.ailus@iki.fi>
>> Cc: Hans Verkuil <hans.verkuil@cisco.com>
>> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>> Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
>> Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
>> Cc: Hans de Goede <hdegoede@redhat.com>
>> Cc: Kyungmin Park <kyungmin.park@samsung.com>
>> Cc: Rob Landley <rob@landley.net>
>> Cc: HeungJun Kim <riverful.kim@samsung.com>
>> Cc: Rob Landley <rob@landley.net>
>> ---
>>  This patches has one checkpatch warning for line over
>>  80 characters altough it can be avoided I have kept it
>>  for consistency.
>>
>>  Documentation/DocBook/media/v4l/controls.xml |   52 ++++++++++++++++++++++++++
>>  drivers/media/v4l2-core/v4l2-ctrls.c         |   16 ++++++++
>>  include/linux/videodev2.h                    |   12 ++++++
>>  3 files changed, 80 insertions(+), 0 deletions(-)
>>
>> diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
>> index f704218..06f16e7 100644
>> --- a/Documentation/DocBook/media/v4l/controls.xml
>> +++ b/Documentation/DocBook/media/v4l/controls.xml
>> @@ -4313,6 +4313,58 @@ interface and may change in the future.</para>
>>  	      </tbody>
>>  	    </entrytbl>
>>  	  </row>
>> +	  <row>
>> +	    <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN</constant></entry>
>> +	    <entry>menu</entry>
>> +	  </row>
>> +	  <row id="v4l2-test-pattern">
>> +	    <entry spanname="descr"> The capture devices/sensors have the capability to
> 
> Test patterns are also applicable to output devices, not just capture and sensor devices.
> 
Agreed. I'll make it 'capture/display/sensors'.

>> +	    generate internal test patterns. This test patterns are used to test a device
>> +	    is properly working and can generate the desired waveforms that it supports.
>> +	    </entry>
>> +	  </row>
>> +	  <row>
>> +	    <entrytbl spanname="descr" cols="2">
>> +	      <tbody valign="top">
>> +	        <row>
>> +	         <entry><constant>V4L2_TEST_PATTERN_DISABLED</constant></entry>
>> +	          <entry>Test pattern generation is disabled</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_VERTICAL_LINES</constant></entry>
>> +	          <entry>Generate vertical lines as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_HORIZONTAL_LINES</constant></entry>
>> +	          <entry>Generate horizontal lines as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_DIAGONAL_LINES</constant></entry>
>> +	          <entry>Generate diagonal lines as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_BLACK</constant></entry>
>> +	          <entry>Generate solid black color as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_WHITE</constant></entry>
>> +	          <entry>Generate solid white color as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_BLUE</constant></entry>
>> +	          <entry>Generate solid blue color as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_RED</constant></entry>
>> +	          <entry>Generate solid red color as test pattern</entry>
>> +	        </row>
> 
> Just wondering: is there no SOLID_GREEN available with this sensor?
> 
Not sure I guess it should be.

Thanks and Regards,
--Prabhakar Lad

> Regards,
> 
> 	Hans
> 
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_CHECKER_BOARD</constant></entry>
>> +	          <entry>Generate a checker board as test pattern</entry>
>> +	        </row>
>> +	      </tbody>
>> +	    </entrytbl>
>> +	  </row>
>>  	<row><entry></entry></row>
>>  	</tbody>
>>        </tgroup>
>> diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
>> index 2d7bc15..ae709d1 100644
>> --- a/drivers/media/v4l2-core/v4l2-ctrls.c
>> +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
>> @@ -430,6 +430,18 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
>>  		"Advanced Predictor",
>>  		NULL,
>>  	};
>> +	static const char * const test_pattern[] = {
>> +		"Test Pattern Disabled",
>> +		"Vertical Lines",
>> +		"Horizontal Lines",
>> +		"Diagonal Lines",
>> +		"Solid Black",
>> +		"Solid White",
>> +		"Solid Blue",
>> +		"Solid Red",
>> +		"Checker Board",
>> +		NULL,
>> +	};
>>  
>>  	switch (id) {
>>  	case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
>> @@ -509,6 +521,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
>>  		return jpeg_chroma_subsampling;
>>  	case V4L2_CID_DPCM_PREDICTOR:
>>  		return dpcm_predictor;
>> +	case V4L2_CID_TEST_PATTERN:
>> +		return test_pattern;
>>  
>>  	default:
>>  		return NULL;
>> @@ -740,6 +754,7 @@ const char *v4l2_ctrl_get_name(u32 id)
>>  	case V4L2_CID_LINK_FREQ:		return "Link Frequency";
>>  	case V4L2_CID_PIXEL_RATE:		return "Pixel Rate";
>>  	case V4L2_CID_DPCM_PREDICTOR:		return "DPCM Predictor";
>> +	case V4L2_CID_TEST_PATTERN:		return "Test Pattern";
>>  
>>  	default:
>>  		return NULL;
>> @@ -841,6 +856,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
>>  	case V4L2_CID_EXPOSURE_METERING:
>>  	case V4L2_CID_SCENE_MODE:
>>  	case V4L2_CID_DPCM_PREDICTOR:
>> +	case V4L2_CID_TEST_PATTERN:
>>  		*type = V4L2_CTRL_TYPE_MENU;
>>  		break;
>>  	case V4L2_CID_LINK_FREQ:
>> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
>> index ca9fb78..1796079 100644
>> --- a/include/linux/videodev2.h
>> +++ b/include/linux/videodev2.h
>> @@ -2005,6 +2005,18 @@ enum v4l2_dpcm_predictor {
>>  	V4L2_DPCM_PREDICTOR_SIMPLE	= 0,
>>  	V4L2_DPCM_PREDICTOR_ADVANCED	= 1,
>>  };
>> +#define V4L2_CID_TEST_PATTERN			(V4L2_CID_IMAGE_PROC_CLASS_BASE + 4)
>> +enum v4l2_test_pattern {
>> +	V4L2_TEST_PATTERN_DISABLED		= 0,
>> +	V4L2_TEST_PATTERN_VERTICAL_LINES	= 1,
>> +	V4L2_TEST_PATTERN_HORIZONTAL_LINES	= 2,
>> +	V4L2_TEST_PATTERN_DIAGONAL_LINES	= 3,
>> +	V4L2_TEST_PATTERN_SOLID_BLACK		= 4,
>> +	V4L2_TEST_PATTERN_SOLID_WHITE		= 5,
>> +	V4L2_TEST_PATTERN_SOLID_BLUE		= 6,
>> +	V4L2_TEST_PATTERN_SOLID_RED		= 7,
>> +	V4L2_TEST_PATTERN_CHECKER_BOARD		= 8,
>> +};
>>  
>>  /*
>>   *	T U N I N G
>>
Prabhakar Lad Sept. 3, 2012, 9:51 a.m. UTC | #4
Hi Sylwester,

Thanks for the review.

On Monday 03 September 2012 02:55 PM, Sylwester Nawrocki wrote:
> On 09/03/2012 11:16 AM, Prabhakar Lad wrote:
>> diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
>> index 2d7bc15..ae709d1 100644
>> --- a/drivers/media/v4l2-core/v4l2-ctrls.c
>> +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
>> @@ -430,6 +430,18 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
>>  		"Advanced Predictor",
>>  		NULL,
>>  	};
>> +	static const char * const test_pattern[] = {
>> +		"Test Pattern Disabled",
> 
> How about just "Disabled" ?
> 
Ok.

Thanks and Regards,
--Prabhakar Lad

>> +		"Vertical Lines",
>> +		"Horizontal Lines",
>> +		"Diagonal Lines",
>> +		"Solid Black",
>> +		"Solid White",
>> +		"Solid Blue",
>> +		"Solid Red",
>> +		"Checker Board",
>> +		NULL,
>> +	};
> 
> --
> 
> Regards,
> Sylwester
>
Sakari Ailus Sept. 3, 2012, 7:39 p.m. UTC | #5
Hi Prabhakar,

Thanks for the patch.

On Mon, Sep 03, 2012 at 02:46:17PM +0530, Prabhakar Lad wrote:
> From: Lad, Prabhakar <prabhakar.lad@ti.com>
> 
> add V4L2_CID_TEST_PATTERN of type menu, which determines
> the internal test pattern selected by the device.
> 
> Signed-off-by: Lad, Prabhakar <prabhakar.lad@ti.com>
> Signed-off-by: Manjunath Hadli <manjunath.hadli@ti.com>
> Cc: Sakari Ailus <sakari.ailus@iki.fi>
> Cc: Hans Verkuil <hans.verkuil@cisco.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
> Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Rob Landley <rob@landley.net>
> Cc: HeungJun Kim <riverful.kim@samsung.com>
> Cc: Rob Landley <rob@landley.net>
> ---
>  This patches has one checkpatch warning for line over
>  80 characters altough it can be avoided I have kept it
>  for consistency.
> 
>  Documentation/DocBook/media/v4l/controls.xml |   52 ++++++++++++++++++++++++++
>  drivers/media/v4l2-core/v4l2-ctrls.c         |   16 ++++++++
>  include/linux/videodev2.h                    |   12 ++++++
>  3 files changed, 80 insertions(+), 0 deletions(-)
> 
> diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
> index f704218..06f16e7 100644
> --- a/Documentation/DocBook/media/v4l/controls.xml
> +++ b/Documentation/DocBook/media/v4l/controls.xml
> @@ -4313,6 +4313,58 @@ interface and may change in the future.</para>
>  	      </tbody>
>  	    </entrytbl>
>  	  </row>
> +	  <row>
> +	    <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN</constant></entry>
> +	    <entry>menu</entry>
> +	  </row>
> +	  <row id="v4l2-test-pattern">
> +	    <entry spanname="descr"> The capture devices/sensors have the capability to
> +	    generate internal test patterns. This test patterns are used to test a device
> +	    is properly working and can generate the desired waveforms that it supports.
> +	    </entry>
> +	  </row>
> +	  <row>
> +	    <entrytbl spanname="descr" cols="2">
> +	      <tbody valign="top">
> +	        <row>
> +	         <entry><constant>V4L2_TEST_PATTERN_DISABLED</constant></entry>
> +	          <entry>Test pattern generation is disabled</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_VERTICAL_LINES</constant></entry>
> +	          <entry>Generate vertical lines as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_HORIZONTAL_LINES</constant></entry>
> +	          <entry>Generate horizontal lines as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_DIAGONAL_LINES</constant></entry>
> +	          <entry>Generate diagonal lines as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_BLACK</constant></entry>
> +	          <entry>Generate solid black color as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_WHITE</constant></entry>
> +	          <entry>Generate solid white color as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_BLUE</constant></entry>
> +	          <entry>Generate solid blue color as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_RED</constant></entry>
> +	          <entry>Generate solid red color as test pattern</entry>
> +	        </row>
> +	        <row>
> +	          <entry><constant>V4L2_TEST_PATTERN_CHECKER_BOARD</constant></entry>
> +	          <entry>Generate a checker board as test pattern</entry>
> +	        </row>

You're defining 8 different test patterns based on a single device, I guess? 

As the test patterns are not standardised, I'd suppose that if another
driver implements the same control, it would require another n menu items
added to the same standard menu. That way we'd run quickly out of menu items
as the maximum is 32.

For this reason I'd leave the items in the menu up to the driver that
implements the control, until we have more information on the test patterns
different devices implement --- as discussed earlier.

Kind regards,
Prabhakar Lad Sept. 4, 2012, 5:05 a.m. UTC | #6
Hi Sakari,

Thanks for the review.

On Tuesday 04 September 2012 01:09 AM, Sakari Ailus wrote:
> Hi Prabhakar,
> 
> Thanks for the patch.
> 
> On Mon, Sep 03, 2012 at 02:46:17PM +0530, Prabhakar Lad wrote:
>> From: Lad, Prabhakar <prabhakar.lad@ti.com>
>>
>> add V4L2_CID_TEST_PATTERN of type menu, which determines
>> the internal test pattern selected by the device.
>>
>> Signed-off-by: Lad, Prabhakar <prabhakar.lad@ti.com>
>> Signed-off-by: Manjunath Hadli <manjunath.hadli@ti.com>
>> Cc: Sakari Ailus <sakari.ailus@iki.fi>
>> Cc: Hans Verkuil <hans.verkuil@cisco.com>
>> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>> Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
>> Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
>> Cc: Hans de Goede <hdegoede@redhat.com>
>> Cc: Kyungmin Park <kyungmin.park@samsung.com>
>> Cc: Rob Landley <rob@landley.net>
>> Cc: HeungJun Kim <riverful.kim@samsung.com>
>> Cc: Rob Landley <rob@landley.net>
>> ---
>>  This patches has one checkpatch warning for line over
>>  80 characters altough it can be avoided I have kept it
>>  for consistency.
>>
>>  Documentation/DocBook/media/v4l/controls.xml |   52 ++++++++++++++++++++++++++
>>  drivers/media/v4l2-core/v4l2-ctrls.c         |   16 ++++++++
>>  include/linux/videodev2.h                    |   12 ++++++
>>  3 files changed, 80 insertions(+), 0 deletions(-)
>>
>> diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
>> index f704218..06f16e7 100644
>> --- a/Documentation/DocBook/media/v4l/controls.xml
>> +++ b/Documentation/DocBook/media/v4l/controls.xml
>> @@ -4313,6 +4313,58 @@ interface and may change in the future.</para>
>>  	      </tbody>
>>  	    </entrytbl>
>>  	  </row>
>> +	  <row>
>> +	    <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN</constant></entry>
>> +	    <entry>menu</entry>
>> +	  </row>
>> +	  <row id="v4l2-test-pattern">
>> +	    <entry spanname="descr"> The capture devices/sensors have the capability to
>> +	    generate internal test patterns. This test patterns are used to test a device
>> +	    is properly working and can generate the desired waveforms that it supports.
>> +	    </entry>
>> +	  </row>
>> +	  <row>
>> +	    <entrytbl spanname="descr" cols="2">
>> +	      <tbody valign="top">
>> +	        <row>
>> +	         <entry><constant>V4L2_TEST_PATTERN_DISABLED</constant></entry>
>> +	          <entry>Test pattern generation is disabled</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_VERTICAL_LINES</constant></entry>
>> +	          <entry>Generate vertical lines as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_HORIZONTAL_LINES</constant></entry>
>> +	          <entry>Generate horizontal lines as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_DIAGONAL_LINES</constant></entry>
>> +	          <entry>Generate diagonal lines as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_BLACK</constant></entry>
>> +	          <entry>Generate solid black color as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_WHITE</constant></entry>
>> +	          <entry>Generate solid white color as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_BLUE</constant></entry>
>> +	          <entry>Generate solid blue color as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_SOLID_RED</constant></entry>
>> +	          <entry>Generate solid red color as test pattern</entry>
>> +	        </row>
>> +	        <row>
>> +	          <entry><constant>V4L2_TEST_PATTERN_CHECKER_BOARD</constant></entry>
>> +	          <entry>Generate a checker board as test pattern</entry>
>> +	        </row>
> 
> You're defining 8 different test patterns based on a single device, I guess? 
> 
No.

> As the test patterns are not standardised, I'd suppose that if another
> driver implements the same control, it would require another n menu items
> added to the same standard menu. That way we'd run quickly out of menu items
> as the maximum is 32.
> 
Agreed the test patterns are not standardized and are hardware
dependent, but this entries which have been added are generally common
across capture/display/sensors.

> For this reason I'd leave the items in the menu up to the driver that
> implements the control, until we have more information on the test patterns
> different devices implement --- as discussed earlier.
> 
Assuming that I only added disable test pattern and if a driver wants to
implement this control and wants add  an item to this menu, on what
basis an entry to this menu will be qualified then ?

Thanks and Regards,
--Prabhakar Lad

> Kind regards,
>
diff mbox

Patch

diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
index f704218..06f16e7 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -4313,6 +4313,58 @@  interface and may change in the future.</para>
 	      </tbody>
 	    </entrytbl>
 	  </row>
+	  <row>
+	    <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN</constant></entry>
+	    <entry>menu</entry>
+	  </row>
+	  <row id="v4l2-test-pattern">
+	    <entry spanname="descr"> The capture devices/sensors have the capability to
+	    generate internal test patterns. This test patterns are used to test a device
+	    is properly working and can generate the desired waveforms that it supports.
+	    </entry>
+	  </row>
+	  <row>
+	    <entrytbl spanname="descr" cols="2">
+	      <tbody valign="top">
+	        <row>
+	         <entry><constant>V4L2_TEST_PATTERN_DISABLED</constant></entry>
+	          <entry>Test pattern generation is disabled</entry>
+	        </row>
+	        <row>
+	          <entry><constant>V4L2_TEST_PATTERN_VERTICAL_LINES</constant></entry>
+	          <entry>Generate vertical lines as test pattern</entry>
+	        </row>
+	        <row>
+	          <entry><constant>V4L2_TEST_PATTERN_HORIZONTAL_LINES</constant></entry>
+	          <entry>Generate horizontal lines as test pattern</entry>
+	        </row>
+	        <row>
+	          <entry><constant>V4L2_TEST_PATTERN_DIAGONAL_LINES</constant></entry>
+	          <entry>Generate diagonal lines as test pattern</entry>
+	        </row>
+	        <row>
+	          <entry><constant>V4L2_TEST_PATTERN_SOLID_BLACK</constant></entry>
+	          <entry>Generate solid black color as test pattern</entry>
+	        </row>
+	        <row>
+	          <entry><constant>V4L2_TEST_PATTERN_SOLID_WHITE</constant></entry>
+	          <entry>Generate solid white color as test pattern</entry>
+	        </row>
+	        <row>
+	          <entry><constant>V4L2_TEST_PATTERN_SOLID_BLUE</constant></entry>
+	          <entry>Generate solid blue color as test pattern</entry>
+	        </row>
+	        <row>
+	          <entry><constant>V4L2_TEST_PATTERN_SOLID_RED</constant></entry>
+	          <entry>Generate solid red color as test pattern</entry>
+	        </row>
+	        <row>
+	          <entry><constant>V4L2_TEST_PATTERN_CHECKER_BOARD</constant></entry>
+	          <entry>Generate a checker board as test pattern</entry>
+	        </row>
+	      </tbody>
+	    </entrytbl>
+	  </row>
 	<row><entry></entry></row>
 	</tbody>
       </tgroup>
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
index 2d7bc15..ae709d1 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -430,6 +430,18 @@  const char * const *v4l2_ctrl_get_menu(u32 id)
 		"Advanced Predictor",
 		NULL,
 	};
+	static const char * const test_pattern[] = {
+		"Test Pattern Disabled",
+		"Vertical Lines",
+		"Horizontal Lines",
+		"Diagonal Lines",
+		"Solid Black",
+		"Solid White",
+		"Solid Blue",
+		"Solid Red",
+		"Checker Board",
+		NULL,
+	};
 
 	switch (id) {
 	case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
@@ -509,6 +521,8 @@  const char * const *v4l2_ctrl_get_menu(u32 id)
 		return jpeg_chroma_subsampling;
 	case V4L2_CID_DPCM_PREDICTOR:
 		return dpcm_predictor;
+	case V4L2_CID_TEST_PATTERN:
+		return test_pattern;
 
 	default:
 		return NULL;
@@ -740,6 +754,7 @@  const char *v4l2_ctrl_get_name(u32 id)
 	case V4L2_CID_LINK_FREQ:		return "Link Frequency";
 	case V4L2_CID_PIXEL_RATE:		return "Pixel Rate";
 	case V4L2_CID_DPCM_PREDICTOR:		return "DPCM Predictor";
+	case V4L2_CID_TEST_PATTERN:		return "Test Pattern";
 
 	default:
 		return NULL;
@@ -841,6 +856,7 @@  void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
 	case V4L2_CID_EXPOSURE_METERING:
 	case V4L2_CID_SCENE_MODE:
 	case V4L2_CID_DPCM_PREDICTOR:
+	case V4L2_CID_TEST_PATTERN:
 		*type = V4L2_CTRL_TYPE_MENU;
 		break;
 	case V4L2_CID_LINK_FREQ:
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index ca9fb78..1796079 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -2005,6 +2005,18 @@  enum v4l2_dpcm_predictor {
 	V4L2_DPCM_PREDICTOR_SIMPLE	= 0,
 	V4L2_DPCM_PREDICTOR_ADVANCED	= 1,
 };
+#define V4L2_CID_TEST_PATTERN			(V4L2_CID_IMAGE_PROC_CLASS_BASE + 4)
+enum v4l2_test_pattern {
+	V4L2_TEST_PATTERN_DISABLED		= 0,
+	V4L2_TEST_PATTERN_VERTICAL_LINES	= 1,
+	V4L2_TEST_PATTERN_HORIZONTAL_LINES	= 2,
+	V4L2_TEST_PATTERN_DIAGONAL_LINES	= 3,
+	V4L2_TEST_PATTERN_SOLID_BLACK		= 4,
+	V4L2_TEST_PATTERN_SOLID_WHITE		= 5,
+	V4L2_TEST_PATTERN_SOLID_BLUE		= 6,
+	V4L2_TEST_PATTERN_SOLID_RED		= 7,
+	V4L2_TEST_PATTERN_CHECKER_BOARD		= 8,
+};
 
 /*
  *	T U N I N G