[PATCH RFC v3] media: OF: add video sync endpoint property
Prabhakar Lad
prabhakar.csengg at gmail.com
Thu Jul 11 21:41:00 EST 2013
Hi Sylwester,
Oops some how missed this mail, sorry for the late response.
On Sun, Jun 30, 2013 at 9:23 PM, Sylwester Nawrocki
<sylvester.nawrocki at gmail.com> wrote:
> Hi,
>
>
> On 06/22/2013 05:03 PM, Prabhakar Lad wrote:
>>
>> From: "Lad, Prabhakar"<prabhakar.csengg at gmail.com>
>>
>> This patch adds video sync properties as part of endpoint
>> properties and also support to parse them in the parser.
>>
>> Signed-off-by: Lad, Prabhakar<prabhakar.csengg at gmail.com>
>> Cc: Hans Verkuil<hans.verkuil at cisco.com>
>> Cc: Laurent Pinchart<laurent.pinchart at ideasonboard.com>
>> Cc: Mauro Carvalho Chehab<mchehab at redhat.com>
>> Cc: Guennadi Liakhovetski<g.liakhovetski at gmx.de>
>> Cc: Sylwester Nawrocki<s.nawrocki at samsung.com>
>> Cc: Sakari Ailus<sakari.ailus at iki.fi>
>> Cc: Grant Likely<grant.likely at secretlab.ca>
>> Cc: Rob Herring<rob.herring at calxeda.com>
>> Cc: Rob Landley<rob at landley.net>
>> Cc: devicetree-discuss at lists.ozlabs.org
>> Cc: linux-doc at vger.kernel.org
>> Cc: linux-kernel at vger.kernel.org
>> Cc: davinci-linux-open-source at linux.davincidsp.com
>> Cc: Kyungmin Park<kyungmin.park at samsung.com>
>
>
> Do you really need such a long Cc list here ? I think it would be better
> to just add relevant e-mail addresses when sending the patch, otherwise
> when this patch is applied in this form all those addresses are going to
> be spammed with the patch management notifications, which might not be
> what some ones are really interested in.
>
>
Ok I'll take care of it in the next version.
>> ---
>> This patch has 10 warnings for line over 80 characters
>> for which I think can be ignored.
>>
>> RFC v2 https://patchwork.kernel.org/patch/2578091/
>> RFC V1 https://patchwork.kernel.org/patch/2572341/
>> Changes for v3:
>> 1: Fixed review comments pointed by Laurent and Sylwester.
>>
>> .../devicetree/bindings/media/video-interfaces.txt | 1 +
>> drivers/media/v4l2-core/v4l2-of.c | 20
>> ++++++++++++++++++
>> include/dt-bindings/media/video-interfaces.h | 17
>> +++++++++++++++
>> include/media/v4l2-mediabus.h | 22
>> +++++++++++---------
>> 4 files changed, 50 insertions(+), 10 deletions(-)
>> create mode 100644 include/dt-bindings/media/video-interfaces.h
>>
>> diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt
>> b/Documentation/devicetree/bindings/media/video-interfaces.txt
>> index e022d2d..2081278 100644
>> --- a/Documentation/devicetree/bindings/media/video-interfaces.txt
>> +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
>> @@ -101,6 +101,7 @@ Optional endpoint properties
>> array contains only one entry.
>> - clock-noncontinuous: a boolean property to allow MIPI CSI-2
>> non-continuous
>> clock mode.
>> +- video-sync: property indicating to sync the video on a signal in RGB.
>>
>>
>> Example
>> diff --git a/drivers/media/v4l2-core/v4l2-of.c
>> b/drivers/media/v4l2-core/v4l2-of.c
>> index aa59639..1a54530 100644
>> --- a/drivers/media/v4l2-core/v4l2-of.c
>> +++ b/drivers/media/v4l2-core/v4l2-of.c
>> @@ -100,6 +100,26 @@ static void v4l2_of_parse_parallel_bus(const struct
>> device_node *node,
>> if (!of_property_read_u32(node, "data-shift",&v))
>> bus->data_shift = v;
>>
>> + if (!of_property_read_u32(node, "video-sync",&v)) {
>> + switch (v) {
>> + case V4L2_MBUS_VIDEO_SEPARATE_SYNC:
>> + flags |= V4L2_MBUS_VIDEO_SEPARATE_SYNC;
>
>
> I'm not convinced all those video sync types is something that really
> belongs
> to the flags field. In my understanding this field is supposed to hold only
> the _signal polarity_ information.
>
>
Ok, so there should be a function say v4l2_of_parse_signal_polarity()
to get the polarity alone then.
>> + break;
>> + case V4L2_MBUS_VIDEO_COMPOSITE_SYNC:
>> + flags |= V4L2_MBUS_VIDEO_COMPOSITE_SYNC;
>> + break;
>> + case V4L2_MBUS_VIDEO_SYNC_ON_COMPOSITE:
>> + flags |= V4L2_MBUS_VIDEO_SYNC_ON_COMPOSITE;
>> + break;
>> + case V4L2_MBUS_VIDEO_SYNC_ON_GREEN:
>> + flags |= V4L2_MBUS_VIDEO_SYNC_ON_GREEN;
>> + break;
>> + case V4L2_MBUS_VIDEO_SYNC_ON_LUMINANCE:
>> + flags |= V4L2_MBUS_VIDEO_SYNC_ON_LUMINANCE;
>> + break;
>> + }
>> + }
>> +
>> bus->flags = flags;
>>
>> }
>> diff --git a/include/dt-bindings/media/video-interfaces.h
>> b/include/dt-bindings/media/video-interfaces.h
>> new file mode 100644
>> index 0000000..1a083dd
>> --- /dev/null
>> +++ b/include/dt-bindings/media/video-interfaces.h
>> @@ -0,0 +1,17 @@
>> +/*
>> + * This header provides constants for video interface.
>> + *
>> + */
>> +
>> +#ifndef _DT_BINDINGS_VIDEO_INTERFACES_H
>> +#define _DT_BINDINGS_VIDEO_INTERFACES_H
>> +
>> +#define V4L2_MBUS_VIDEO_SEPARATE_SYNC (1<< 2)
>
>
> You should never be putting anything Linux specific in those dt-bindings
> headers. It just happens now include/dt-bindings is a part of the Linux
> kernel, but it could well be in some separate repository, or could be
> a part of the DT bindings specification, which is only specific to the
> hardware and doesn't depend on Linux OS at all. Thus V4L2_MBUS_ prefix
> shouldn't be used here.
>
>
Ok
>> +#define V4L2_MBUS_VIDEO_COMPOSITE_SYNC (1<< 3)
>> +#define V4L2_MBUS_VIDEO_SYNC_ON_COMPOSITE (1<< 4)
>> +#define V4L2_MBUS_VIDEO_SYNC_ON_GREEN (1<< 5)
>> +#define V4L2_MBUS_VIDEO_SYNC_ON_LUMINANCE (1<< 6)
>> +
>> +#define V4L2_MBUS_VIDEO_INTERFACES_END 6
>> +
>> +#endif
>> diff --git a/include/media/v4l2-mediabus.h b/include/media/v4l2-mediabus.h
>> index 83ae07e..a4676dd 100644
>> --- a/include/media/v4l2-mediabus.h
>> +++ b/include/media/v4l2-mediabus.h
>> @@ -11,6 +11,8 @@
>> #ifndef V4L2_MEDIABUS_H
>> #define V4L2_MEDIABUS_H
>>
>> +#include<dt-bindings/media/video-interfaces.h>
>> +
>> #include<linux/v4l2-mediabus.h>
>>
>> /* Parallel flags */
>> @@ -28,18 +30,18 @@
>> * V4L2_MBUS_[HV]SYNC* flags should be also used for specifying
>> * configuration of hardware that uses [HV]REF signals
>> */
>> -#define V4L2_MBUS_HSYNC_ACTIVE_HIGH (1<< 2)
>> -#define V4L2_MBUS_HSYNC_ACTIVE_LOW (1<< 3)
>> -#define V4L2_MBUS_VSYNC_ACTIVE_HIGH (1<< 4)
>> -#define V4L2_MBUS_VSYNC_ACTIVE_LOW (1<< 5)
>> -#define V4L2_MBUS_PCLK_SAMPLE_RISING (1<< 6)
>> -#define V4L2_MBUS_PCLK_SAMPLE_FALLING (1<< 7)
>> -#define V4L2_MBUS_DATA_ACTIVE_HIGH (1<< 8)
>> -#define V4L2_MBUS_DATA_ACTIVE_LOW (1<< 9)
>> +#define V4L2_MBUS_HSYNC_ACTIVE_HIGH (1<<
>> (V4L2_MBUS_VIDEO_INTERFACES_END + 1))
>
>
> No, please don't do that. We shouldn't combine the DT and Linux kernel
> definitions like this.
>
>
Ok.
>> +#define V4L2_MBUS_HSYNC_ACTIVE_LOW (1<<
>> (V4L2_MBUS_VIDEO_INTERFACES_END + 2))
>> +#define V4L2_MBUS_VSYNC_ACTIVE_HIGH (1<<
>> (V4L2_MBUS_VIDEO_INTERFACES_END + 3))
>> +#define V4L2_MBUS_VSYNC_ACTIVE_LOW (1<<
>> (V4L2_MBUS_VIDEO_INTERFACES_END + 4))
>> +#define V4L2_MBUS_PCLK_SAMPLE_RISING (1<<
>> (V4L2_MBUS_VIDEO_INTERFACES_END + 5))
>> +#define V4L2_MBUS_PCLK_SAMPLE_FALLING (1<<
>> (V4L2_MBUS_VIDEO_INTERFACES_END + 6))
>> +#define V4L2_MBUS_DATA_ACTIVE_HIGH (1<<
>> (V4L2_MBUS_VIDEO_INTERFACES_END + 7))
>> +#define V4L2_MBUS_DATA_ACTIVE_LOW (1<<
>> (V4L2_MBUS_VIDEO_INTERFACES_END + 8))
>>
>> /* FIELD = 0/1 - Field1 (odd)/Field2 (even) */
>> -#define V4L2_MBUS_FIELD_EVEN_HIGH (1<< 10)
>> +#define V4L2_MBUS_FIELD_EVEN_HIGH (1<<
>> (V4L2_MBUS_VIDEO_INTERFACES_END + 9))
>> /* FIELD = 1/0 - Field1 (odd)/Field2 (even) */
>> -#define V4L2_MBUS_FIELD_EVEN_LOW (1<< 11)
>> +#define V4L2_MBUS_FIELD_EVEN_LOW (1<<
>> (V4L2_MBUS_VIDEO_INTERFACES_END + 10))
>
>
> Please see my review of your 'media: i2c: tvp7002: add OF support" patch.
> AFAICS it should be sufficient to add only V4L2_MBUS_SOG_ACTIVE_{LOW,HIGH}
> flags and 'sync-on-green-active' DT property.
>
Ok.
Regards,
--Prabhakar Lad
More information about the devicetree-discuss
mailing list