Re: [PATCH v2 1/5] video: move mediabus format definition to a more standard place

2014-11-03 Thread Hans Verkuil
Hi Boris, Laurent,

My apologies, I missed this patch when it was posted.

First of all, please convert all existing kernel drivers that use V4L2_MBUS_FMT
to the new macro. It's easy to automate, and I see no reason why we shouldn't
do this.

If you don't do that now, then we'll be stuck with two naming conventions
in the kernel for a long time.

Actually, to be explicit, I will NACK this if this conversion isn't done
as part of the patch series.

Also add something like:

#ifdef __KERNEL__
#error Use video-bus-format.h instead of v4l2-mediabus.h
#else
#warning Use video-bus-format.h instead of v4l2-mediabus.h
#endif

to the old header to prevent future drivers from using it. I'm not sure
about the warning when included by userspace applications. I personally
think it makes sense. While everyone claims now to keep the two headers
in sync, I think that in practice this will not work. Freezing the old
header and only adding new values to the new header is better.

Secondly, is there any reason why this shouldn't be named media-bus-format.h
instead? Besides regular video these busses can also carry VBI data or even
audio. I prefer the more generic term 'media'. Besides, it's already called a
mediabus format, just with a V4L2 prefix, so why not keep that name? Less
confusing for existing users of this header.

Thirdly, as others mentioned, the updated documentation must be part of the
patch series. I'll NACK it if it isn't. One reason why V4L2 has really good
API documentation is the strict requirement that patches that touch on the
userspace API must also update documentation.

It happened too often that developers swear up and down that they will update
the documentation later, and then they don't.

So, based on the above points:

Nacked-by: Hans Verkuil 

But it really shouldn't be hard to fix it because I do like the idea behind
it very much.

Apologies once again for the late reply and thanks to Laurent for asking me
to review this.

Regards,

Hans

On 09/29/2014 04:02 PM, Boris Brezillon wrote:
> Rename mediabus formats and move the enum into a separate header file so
> that it can be used by DRM/KMS subsystem without any reference to the V4L2
> subsystem.
> 
> Old V4L2_MBUS_FMT_ definitions are now macros that points to VIDEO_BUS_FMT_
> definitions.
> 
> Signed-off-by: Boris BREZILLON 
> Acked-by: Guennadi Liakhovetski 
> ---
>  include/uapi/linux/Kbuild |   1 +
>  include/uapi/linux/v4l2-mediabus.h| 183 
> +++---
>  include/uapi/linux/video-bus-format.h | 127 +++
>  3 files changed, 207 insertions(+), 104 deletions(-)
>  create mode 100644 include/uapi/linux/video-bus-format.h
> 
> diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
> index be88166..8712730 100644
> --- a/include/uapi/linux/Kbuild
> +++ b/include/uapi/linux/Kbuild
> @@ -410,6 +410,7 @@ header-y += veth.h
>  header-y += vfio.h
>  header-y += vhost.h
>  header-y += videodev2.h
> +header-y += video-bus-format.h
>  header-y += virtio_9p.h
>  header-y += virtio_balloon.h
>  header-y += virtio_blk.h
> diff --git a/include/uapi/linux/v4l2-mediabus.h 
> b/include/uapi/linux/v4l2-mediabus.h
> index 1445e85..7b0a06c 100644
> --- a/include/uapi/linux/v4l2-mediabus.h
> +++ b/include/uapi/linux/v4l2-mediabus.h
> @@ -13,118 +13,93 @@
>  
>  #include 
>  #include 
> +#include 
>  
> -/*
> - * These pixel codes uniquely identify data formats on the media bus. Mostly
> - * they correspond to similarly named V4L2_PIX_FMT_* formats, format 0 is
> - * reserved, V4L2_MBUS_FMT_FIXED shall be used by host-client pairs, where 
> the
> - * data format is fixed. Additionally, "2X8" means that one pixel is 
> transferred
> - * in two 8-bit samples, "BE" or "LE" specify in which order those samples 
> are
> - * transferred over the bus: "LE" means that the least significant bits are
> - * transferred first, "BE" means that the most significant bits are 
> transferred
> - * first, and "PADHI" and "PADLO" define which bits - low or high, in the
> - * incomplete high byte, are filled with padding bits.
> - *
> - * The pixel codes are grouped by type, bus_width, bits per component, 
> samples
> - * per pixel and order of subsamples. Numerical values are sorted using 
> generic
> - * numerical sort order (8 thus comes before 10).
> - *
> - * As their value can't change when a new pixel code is inserted in the
> - * enumeration, the pixel codes are explicitly given a numerical value. The 
> next
> - * free values for each category are listed below, update them when inserting
> - * new pixel codes.
> - */
> -enum v4l2_mbus_pixelcode {
> - V4L2_MBUS_FMT_FIXED = 0x0001,
> +#define VIDEO_BUS_TO_V4L2_MBUS(x)V4L2_MBUS_FMT_ ## x = VIDEO_BUS_FMT_ ## 
> x
>  
> - /* RGB - next is 0x100e */
> - V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE = 0x1001,
> - V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE = 0x1002,
> - V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE = 0x1003,
> - V4L2_MBUS_FMT_RGB555_2X8_PADHI

Re: [PATCH v2 1/5] video: move mediabus format definition to a more standard place

2014-11-03 Thread Boris Brezillon
Hi Laurent,

On Wed, 01 Oct 2014 00:00:50 +0300
Laurent Pinchart  wrote:

> Hi Boris,
> 
> On Tuesday 30 September 2014 11:44:23 Boris Brezillon wrote:
> > On Tue, 30 Sep 2014 10:39:53 +0200 Thierry Reding wrote:
> > > On Tue, Sep 30, 2014 at 09:37:57AM +0200, Boris Brezillon wrote:
> > >> On Mon, 29 Sep 2014 23:41:09 +0300 Laurent Pinchart wrote:
> > >
> > > [...]
> > > 
> > >>> Incidentally, patch 2/5 in this series is missing a documentation
> > >>> update ;-)
> > >>
> > >> Yep, regarding this patch, I wonder if it's really necessary to add
> > >> new formats to the v4l2_mbus_pixelcode enum.
> > >> If we want to move to this new common definition (across the video
> > >> related subsytems), we should deprecate the old enum
> > >> v4l2_mbus_pixelcode, and this start by not adding new formats, don't
> > >> you think ?
> > > 
> > > I agree in general, but I think it could prove problematic in practice.
> > > If somebody wants to use one of the new codes but is using the V4L2 enum
> > > they have a problem.
> > > 
> > > That said, given that there is now a unified enum people will hopefully
> > > start converting drivers to it instead.
> > 
> > I'm more worried about user-space lib/programs as this header is part
> > of the uapi...
> > 
> > But let's be optimistic here and keep porting new formats to
> > v4l2_mbus_pixelcode enum ;-).
> 
> I think we should try to keep the two in sync, until we can remove the 
> v4l2_mbus_pixelcode enum (I know, I'm being utopian here).
> 
> However, I really want all pixel codes to be properly documented, regardless 
> of whether we add them to v4l2_mbus_pixelcode or not.
> 
> > Anyway, I still don't know where to put the documentation. Dropping a
> > new video format doc without any context (I mean subdev-formats.xml is
> > included in media documentation, but there's no generic video doc yet)
> > is a bit weird...
> 
> Now that's a good question. We could start a generic video docbook 
> documentation. As I expect more infrastructure to be shared between V4L2 and 
> DRM (and, who knows, FBDEV...) over time, I think that would be a good move. 
> However docbook doesn't seem to be in the DRM developers' good books, so this 
> might be frown upon. We could also use a plain text, kerneldoc-like format 
> for 
> the common documentation, but the formats would then disappear from the V4L2 
> documentation, which isn't a very good idea. For that reason I would favour 
> docbook.
> 
> I've CC'ed Hans Verkuil who might want to share his opinion on the matter.
> 

I started to write a video-formats.xml file (actually I copied the
subdev-formats.xml file and renamed v4l2-mbus into video-bus :-)), but
these files cannot be used without the proper video_api.tmpl file, and
I don't feel like I'm the one that should start writing this
documentation (or at least I'd need some help).

Anyway, even if you think I should write this doc, can we get this
series mainlined first so that my HLCDC driver can make it into 3.19 ?

Best Regards,

Boris

-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 1/5] video: move mediabus format definition to a more standard place

2014-09-30 Thread Laurent Pinchart
Hi Boris,

On Tuesday 30 September 2014 11:44:23 Boris Brezillon wrote:
> On Tue, 30 Sep 2014 10:39:53 +0200 Thierry Reding wrote:
> > On Tue, Sep 30, 2014 at 09:37:57AM +0200, Boris Brezillon wrote:
> >> On Mon, 29 Sep 2014 23:41:09 +0300 Laurent Pinchart wrote:
> >
> > [...]
> > 
> >>> Incidentally, patch 2/5 in this series is missing a documentation
> >>> update ;-)
> >>
> >> Yep, regarding this patch, I wonder if it's really necessary to add
> >> new formats to the v4l2_mbus_pixelcode enum.
> >> If we want to move to this new common definition (across the video
> >> related subsytems), we should deprecate the old enum
> >> v4l2_mbus_pixelcode, and this start by not adding new formats, don't
> >> you think ?
> > 
> > I agree in general, but I think it could prove problematic in practice.
> > If somebody wants to use one of the new codes but is using the V4L2 enum
> > they have a problem.
> > 
> > That said, given that there is now a unified enum people will hopefully
> > start converting drivers to it instead.
> 
> I'm more worried about user-space lib/programs as this header is part
> of the uapi...
> 
> But let's be optimistic here and keep porting new formats to
> v4l2_mbus_pixelcode enum ;-).

I think we should try to keep the two in sync, until we can remove the 
v4l2_mbus_pixelcode enum (I know, I'm being utopian here).

However, I really want all pixel codes to be properly documented, regardless 
of whether we add them to v4l2_mbus_pixelcode or not.

> Anyway, I still don't know where to put the documentation. Dropping a
> new video format doc without any context (I mean subdev-formats.xml is
> included in media documentation, but there's no generic video doc yet)
> is a bit weird...

Now that's a good question. We could start a generic video docbook 
documentation. As I expect more infrastructure to be shared between V4L2 and 
DRM (and, who knows, FBDEV...) over time, I think that would be a good move. 
However docbook doesn't seem to be in the DRM developers' good books, so this 
might be frown upon. We could also use a plain text, kerneldoc-like format for 
the common documentation, but the formats would then disappear from the V4L2 
documentation, which isn't a very good idea. For that reason I would favour 
docbook.

I've CC'ed Hans Verkuil who might want to share his opinion on the matter.

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 1/5] video: move mediabus format definition to a more standard place

2014-09-30 Thread Boris Brezillon
On Tue, 30 Sep 2014 10:39:53 +0200
Thierry Reding  wrote:

> On Tue, Sep 30, 2014 at 09:37:57AM +0200, Boris Brezillon wrote:
> > On Mon, 29 Sep 2014 23:41:09 +0300
> > Laurent Pinchart  wrote:
> [...]
> > > Incidentally, patch 2/5 in this series is missing a documentation update 
> > > ;-)
> > 
> > Yep, regarding this patch, I wonder if it's really necessary to add
> > new formats to the v4l2_mbus_pixelcode enum.
> > If we want to move to this new common definition (across the video
> > related subsytems), we should deprecate the old enum
> > v4l2_mbus_pixelcode, and this start by not adding new formats, don't
> > you think ?
> 
> I agree in general, but I think it could prove problematic in practice.
> If somebody wants to use one of the new codes but is using the V4L2 enum
> they have a problem.
> 
> That said, given that there is now a unified enum people will hopefully
> start converting drivers to it instead.

I'm more worried about user-space lib/programs as this header is part
of the uapi...

But let's be optimistic here and keep porting new formats to
v4l2_mbus_pixelcode enum ;-).

Anyway, I still don't know where to put the documentation. Dropping a
new video format doc without any context (I mean subdev-formats.xml is
included in media documentation, but there's no generic video doc yet)
is a bit weird...

-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 1/5] video: move mediabus format definition to a more standard place

2014-09-30 Thread Thierry Reding
On Tue, Sep 30, 2014 at 09:37:57AM +0200, Boris Brezillon wrote:
> On Mon, 29 Sep 2014 23:41:09 +0300
> Laurent Pinchart  wrote:
[...]
> > Incidentally, patch 2/5 in this series is missing a documentation update ;-)
> 
> Yep, regarding this patch, I wonder if it's really necessary to add
> new formats to the v4l2_mbus_pixelcode enum.
> If we want to move to this new common definition (across the video
> related subsytems), we should deprecate the old enum
> v4l2_mbus_pixelcode, and this start by not adding new formats, don't
> you think ?

I agree in general, but I think it could prove problematic in practice.
If somebody wants to use one of the new codes but is using the V4L2 enum
they have a problem.

That said, given that there is now a unified enum people will hopefully
start converting drivers to it instead.

Thierry


pgpmw9YXy5vWF.pgp
Description: PGP signature


Re: [PATCH v2 1/5] video: move mediabus format definition to a more standard place

2014-09-30 Thread Boris Brezillon
On Mon, 29 Sep 2014 23:41:09 +0300
Laurent Pinchart  wrote:

> Hi Boris,
> 
> Thank you for the patch.
> 
> On Monday 29 September 2014 16:02:39 Boris Brezillon wrote:
> > Rename mediabus formats and move the enum into a separate header file so
> > that it can be used by DRM/KMS subsystem without any reference to the V4L2
> > subsystem.
> > 
> > Old V4L2_MBUS_FMT_ definitions are now macros that points to VIDEO_BUS_FMT_
> > definitions.
> > 
> > Signed-off-by: Boris BREZILLON 
> > Acked-by: Guennadi Liakhovetski 
> > ---
> >  include/uapi/linux/Kbuild |   1 +
> >  include/uapi/linux/v4l2-mediabus.h| 183 +--
> >  include/uapi/linux/video-bus-format.h | 127 +++
> >  3 files changed, 207 insertions(+), 104 deletions(-)
> >  create mode 100644 include/uapi/linux/video-bus-format.h
> 
> One of the self-inflicted rules in V4L2 is to properly document every new 
> media bus format when adding it to the kernel. The documentation is located 
> in 
> Documentation/DocBook/media/v4l/subdev-formats.xml. If we move the formats to 
> a centralized header (which I believe is a good idea), we should also update 
> the documentation, and possibly its location. I really want to avoid getting 
> undocumented formats merged, and this will happen if we don't make the rule 
> clear and/or don't make the documentation easily accessible.

Any idea where this new documentation should go
(Documentation/DocBook/video/video-bus-formats.xml) ?

> 
> Incidentally, patch 2/5 in this series is missing a documentation update ;-)

Yep, regarding this patch, I wonder if it's really necessary to add
new formats to the v4l2_mbus_pixelcode enum.
If we want to move to this new common definition (across the video
related subsytems), we should deprecate the old enum
v4l2_mbus_pixelcode, and this start by not adding new formats, don't
you think ?

Best Regards,

Boris

-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 1/5] video: move mediabus format definition to a more standard place

2014-09-29 Thread Laurent Pinchart
Hi Boris,

Thank you for the patch.

On Monday 29 September 2014 16:02:39 Boris Brezillon wrote:
> Rename mediabus formats and move the enum into a separate header file so
> that it can be used by DRM/KMS subsystem without any reference to the V4L2
> subsystem.
> 
> Old V4L2_MBUS_FMT_ definitions are now macros that points to VIDEO_BUS_FMT_
> definitions.
> 
> Signed-off-by: Boris BREZILLON 
> Acked-by: Guennadi Liakhovetski 
> ---
>  include/uapi/linux/Kbuild |   1 +
>  include/uapi/linux/v4l2-mediabus.h| 183 +--
>  include/uapi/linux/video-bus-format.h | 127 +++
>  3 files changed, 207 insertions(+), 104 deletions(-)
>  create mode 100644 include/uapi/linux/video-bus-format.h

One of the self-inflicted rules in V4L2 is to properly document every new 
media bus format when adding it to the kernel. The documentation is located in 
Documentation/DocBook/media/v4l/subdev-formats.xml. If we move the formats to 
a centralized header (which I believe is a good idea), we should also update 
the documentation, and possibly its location. I really want to avoid getting 
undocumented formats merged, and this will happen if we don't make the rule 
clear and/or don't make the documentation easily accessible.

Incidentally, patch 2/5 in this series is missing a documentation update ;-)

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 1/5] video: move mediabus format definition to a more standard place

2014-09-29 Thread Thierry Reding
On Mon, Sep 29, 2014 at 04:02:39PM +0200, Boris Brezillon wrote:
> Rename mediabus formats and move the enum into a separate header file so
> that it can be used by DRM/KMS subsystem without any reference to the V4L2
> subsystem.
> 
> Old V4L2_MBUS_FMT_ definitions are now macros that points to VIDEO_BUS_FMT_
> definitions.
> 
> Signed-off-by: Boris BREZILLON 
> Acked-by: Guennadi Liakhovetski 
> ---
>  include/uapi/linux/Kbuild |   1 +
>  include/uapi/linux/v4l2-mediabus.h| 183 
> +++---
>  include/uapi/linux/video-bus-format.h | 127 +++
>  3 files changed, 207 insertions(+), 104 deletions(-)
>  create mode 100644 include/uapi/linux/video-bus-format.h

Hi Mauro,

Do you have any objections to me merging patches 1 and 2 through the
drm/panel tree given the dependency of the later patches in the series
on these new constants? If you want I can provide a stable branch once
v3.18-rc1 is out for you to pull into you tree to resolve possible
conflicts.

Thierry


pgpISpv9SIITm.pgp
Description: PGP signature


Re: [PATCH v2 1/5] video: move mediabus format definition to a more standard place

2014-09-29 Thread Boris BREZILLON
On Mon, 29 Sep 2014 16:02:39 +0200
Boris Brezillon  wrote:

> Rename mediabus formats and move the enum into a separate header file so
> that it can be used by DRM/KMS subsystem without any reference to the V4L2
> subsystem.
> 
> Old V4L2_MBUS_FMT_ definitions are now macros that points to VIDEO_BUS_FMT_
> definitions.

I forgot to change the commit message: v4l2_mbus_pixelcode is now an
enum that takes its values from the VIDEO_BUS_FMT_ definitions (as
suggested by Guennadi).


> 
> Signed-off-by: Boris BREZILLON 
> Acked-by: Guennadi Liakhovetski 
> ---
>  include/uapi/linux/Kbuild |   1 +
>  include/uapi/linux/v4l2-mediabus.h| 183 
> +++---
>  include/uapi/linux/video-bus-format.h | 127 +++
>  3 files changed, 207 insertions(+), 104 deletions(-)
>  create mode 100644 include/uapi/linux/video-bus-format.h
> 
> diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
> index be88166..8712730 100644
> --- a/include/uapi/linux/Kbuild
> +++ b/include/uapi/linux/Kbuild
> @@ -410,6 +410,7 @@ header-y += veth.h
>  header-y += vfio.h
>  header-y += vhost.h
>  header-y += videodev2.h
> +header-y += video-bus-format.h
>  header-y += virtio_9p.h
>  header-y += virtio_balloon.h
>  header-y += virtio_blk.h
> diff --git a/include/uapi/linux/v4l2-mediabus.h 
> b/include/uapi/linux/v4l2-mediabus.h
> index 1445e85..7b0a06c 100644
> --- a/include/uapi/linux/v4l2-mediabus.h
> +++ b/include/uapi/linux/v4l2-mediabus.h
> @@ -13,118 +13,93 @@
>  
>  #include 
>  #include 
> +#include 
>  
> -/*
> - * These pixel codes uniquely identify data formats on the media bus. Mostly
> - * they correspond to similarly named V4L2_PIX_FMT_* formats, format 0 is
> - * reserved, V4L2_MBUS_FMT_FIXED shall be used by host-client pairs, where 
> the
> - * data format is fixed. Additionally, "2X8" means that one pixel is 
> transferred
> - * in two 8-bit samples, "BE" or "LE" specify in which order those samples 
> are
> - * transferred over the bus: "LE" means that the least significant bits are
> - * transferred first, "BE" means that the most significant bits are 
> transferred
> - * first, and "PADHI" and "PADLO" define which bits - low or high, in the
> - * incomplete high byte, are filled with padding bits.
> - *
> - * The pixel codes are grouped by type, bus_width, bits per component, 
> samples
> - * per pixel and order of subsamples. Numerical values are sorted using 
> generic
> - * numerical sort order (8 thus comes before 10).
> - *
> - * As their value can't change when a new pixel code is inserted in the
> - * enumeration, the pixel codes are explicitly given a numerical value. The 
> next
> - * free values for each category are listed below, update them when inserting
> - * new pixel codes.
> - */
> -enum v4l2_mbus_pixelcode {
> - V4L2_MBUS_FMT_FIXED = 0x0001,
> +#define VIDEO_BUS_TO_V4L2_MBUS(x)V4L2_MBUS_FMT_ ## x = VIDEO_BUS_FMT_ ## 
> x
>  
> - /* RGB - next is 0x100e */
> - V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE = 0x1001,
> - V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE = 0x1002,
> - V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE = 0x1003,
> - V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE = 0x1004,
> - V4L2_MBUS_FMT_BGR565_2X8_BE = 0x1005,
> - V4L2_MBUS_FMT_BGR565_2X8_LE = 0x1006,
> - V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007,
> - V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008,
> - V4L2_MBUS_FMT_RGB666_1X18 = 0x1009,
> - V4L2_MBUS_FMT_RGB888_1X24 = 0x100a,
> - V4L2_MBUS_FMT_RGB888_2X12_BE = 0x100b,
> - V4L2_MBUS_FMT_RGB888_2X12_LE = 0x100c,
> - V4L2_MBUS_FMT_ARGB_1X32 = 0x100d,
> +enum v4l2_mbus_pixelcode {
> + VIDEO_BUS_TO_V4L2_MBUS(FIXED),
>  
> - /* YUV (including grey) - next is 0x2024 */
> - V4L2_MBUS_FMT_Y8_1X8 = 0x2001,
> - V4L2_MBUS_FMT_UV8_1X8 = 0x2015,
> - V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002,
> - V4L2_MBUS_FMT_VYUY8_1_5X8 = 0x2003,
> - V4L2_MBUS_FMT_YUYV8_1_5X8 = 0x2004,
> - V4L2_MBUS_FMT_YVYU8_1_5X8 = 0x2005,
> - V4L2_MBUS_FMT_UYVY8_2X8 = 0x2006,
> - V4L2_MBUS_FMT_VYUY8_2X8 = 0x2007,
> - V4L2_MBUS_FMT_YUYV8_2X8 = 0x2008,
> - V4L2_MBUS_FMT_YVYU8_2X8 = 0x2009,
> - V4L2_MBUS_FMT_Y10_1X10 = 0x200a,
> - V4L2_MBUS_FMT_UYVY10_2X10 = 0x2018,
> - V4L2_MBUS_FMT_VYUY10_2X10 = 0x2019,
> - V4L2_MBUS_FMT_YUYV10_2X10 = 0x200b,
> - V4L2_MBUS_FMT_YVYU10_2X10 = 0x200c,
> - V4L2_MBUS_FMT_Y12_1X12 = 0x2013,
> - V4L2_MBUS_FMT_UYVY8_1X16 = 0x200f,
> - V4L2_MBUS_FMT_VYUY8_1X16 = 0x2010,
> - V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011,
> - V4L2_MBUS_FMT_YVYU8_1X16 = 0x2012,
> - V4L2_MBUS_FMT_YDYUYDYV8_1X16 = 0x2014,
> - V4L2_MBUS_FMT_UYVY10_1X20 = 0x201a,
> - V4L2_MBUS_FMT_VYUY10_1X20 = 0x201b,
> - V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d,
> - V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e,
> - V4L2_MBUS_FMT_YUV10_1X30 = 0x2016,
> - V4L2_MBUS_FMT_AYUV8_1X32 = 0x2017,
> - V4L2_MBUS_FMT_UYVY12_2X12 = 0x201c,
> - V4L2_MBUS_FMT_VYUY12_2X12 = 0x201d,
> - V4L2_MBU

[PATCH v2 1/5] video: move mediabus format definition to a more standard place

2014-09-29 Thread Boris Brezillon
Rename mediabus formats and move the enum into a separate header file so
that it can be used by DRM/KMS subsystem without any reference to the V4L2
subsystem.

Old V4L2_MBUS_FMT_ definitions are now macros that points to VIDEO_BUS_FMT_
definitions.

Signed-off-by: Boris BREZILLON 
Acked-by: Guennadi Liakhovetski 
---
 include/uapi/linux/Kbuild |   1 +
 include/uapi/linux/v4l2-mediabus.h| 183 +++---
 include/uapi/linux/video-bus-format.h | 127 +++
 3 files changed, 207 insertions(+), 104 deletions(-)
 create mode 100644 include/uapi/linux/video-bus-format.h

diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
index be88166..8712730 100644
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
@@ -410,6 +410,7 @@ header-y += veth.h
 header-y += vfio.h
 header-y += vhost.h
 header-y += videodev2.h
+header-y += video-bus-format.h
 header-y += virtio_9p.h
 header-y += virtio_balloon.h
 header-y += virtio_blk.h
diff --git a/include/uapi/linux/v4l2-mediabus.h 
b/include/uapi/linux/v4l2-mediabus.h
index 1445e85..7b0a06c 100644
--- a/include/uapi/linux/v4l2-mediabus.h
+++ b/include/uapi/linux/v4l2-mediabus.h
@@ -13,118 +13,93 @@
 
 #include 
 #include 
+#include 
 
-/*
- * These pixel codes uniquely identify data formats on the media bus. Mostly
- * they correspond to similarly named V4L2_PIX_FMT_* formats, format 0 is
- * reserved, V4L2_MBUS_FMT_FIXED shall be used by host-client pairs, where the
- * data format is fixed. Additionally, "2X8" means that one pixel is 
transferred
- * in two 8-bit samples, "BE" or "LE" specify in which order those samples are
- * transferred over the bus: "LE" means that the least significant bits are
- * transferred first, "BE" means that the most significant bits are transferred
- * first, and "PADHI" and "PADLO" define which bits - low or high, in the
- * incomplete high byte, are filled with padding bits.
- *
- * The pixel codes are grouped by type, bus_width, bits per component, samples
- * per pixel and order of subsamples. Numerical values are sorted using generic
- * numerical sort order (8 thus comes before 10).
- *
- * As their value can't change when a new pixel code is inserted in the
- * enumeration, the pixel codes are explicitly given a numerical value. The 
next
- * free values for each category are listed below, update them when inserting
- * new pixel codes.
- */
-enum v4l2_mbus_pixelcode {
-   V4L2_MBUS_FMT_FIXED = 0x0001,
+#define VIDEO_BUS_TO_V4L2_MBUS(x)  V4L2_MBUS_FMT_ ## x = VIDEO_BUS_FMT_ ## 
x
 
-   /* RGB - next is 0x100e */
-   V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE = 0x1001,
-   V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE = 0x1002,
-   V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE = 0x1003,
-   V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE = 0x1004,
-   V4L2_MBUS_FMT_BGR565_2X8_BE = 0x1005,
-   V4L2_MBUS_FMT_BGR565_2X8_LE = 0x1006,
-   V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007,
-   V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008,
-   V4L2_MBUS_FMT_RGB666_1X18 = 0x1009,
-   V4L2_MBUS_FMT_RGB888_1X24 = 0x100a,
-   V4L2_MBUS_FMT_RGB888_2X12_BE = 0x100b,
-   V4L2_MBUS_FMT_RGB888_2X12_LE = 0x100c,
-   V4L2_MBUS_FMT_ARGB_1X32 = 0x100d,
+enum v4l2_mbus_pixelcode {
+   VIDEO_BUS_TO_V4L2_MBUS(FIXED),
 
-   /* YUV (including grey) - next is 0x2024 */
-   V4L2_MBUS_FMT_Y8_1X8 = 0x2001,
-   V4L2_MBUS_FMT_UV8_1X8 = 0x2015,
-   V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002,
-   V4L2_MBUS_FMT_VYUY8_1_5X8 = 0x2003,
-   V4L2_MBUS_FMT_YUYV8_1_5X8 = 0x2004,
-   V4L2_MBUS_FMT_YVYU8_1_5X8 = 0x2005,
-   V4L2_MBUS_FMT_UYVY8_2X8 = 0x2006,
-   V4L2_MBUS_FMT_VYUY8_2X8 = 0x2007,
-   V4L2_MBUS_FMT_YUYV8_2X8 = 0x2008,
-   V4L2_MBUS_FMT_YVYU8_2X8 = 0x2009,
-   V4L2_MBUS_FMT_Y10_1X10 = 0x200a,
-   V4L2_MBUS_FMT_UYVY10_2X10 = 0x2018,
-   V4L2_MBUS_FMT_VYUY10_2X10 = 0x2019,
-   V4L2_MBUS_FMT_YUYV10_2X10 = 0x200b,
-   V4L2_MBUS_FMT_YVYU10_2X10 = 0x200c,
-   V4L2_MBUS_FMT_Y12_1X12 = 0x2013,
-   V4L2_MBUS_FMT_UYVY8_1X16 = 0x200f,
-   V4L2_MBUS_FMT_VYUY8_1X16 = 0x2010,
-   V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011,
-   V4L2_MBUS_FMT_YVYU8_1X16 = 0x2012,
-   V4L2_MBUS_FMT_YDYUYDYV8_1X16 = 0x2014,
-   V4L2_MBUS_FMT_UYVY10_1X20 = 0x201a,
-   V4L2_MBUS_FMT_VYUY10_1X20 = 0x201b,
-   V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d,
-   V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e,
-   V4L2_MBUS_FMT_YUV10_1X30 = 0x2016,
-   V4L2_MBUS_FMT_AYUV8_1X32 = 0x2017,
-   V4L2_MBUS_FMT_UYVY12_2X12 = 0x201c,
-   V4L2_MBUS_FMT_VYUY12_2X12 = 0x201d,
-   V4L2_MBUS_FMT_YUYV12_2X12 = 0x201e,
-   V4L2_MBUS_FMT_YVYU12_2X12 = 0x201f,
-   V4L2_MBUS_FMT_UYVY12_1X24 = 0x2020,
-   V4L2_MBUS_FMT_VYUY12_1X24 = 0x2021,
-   V4L2_MBUS_FMT_YUYV12_1X24 = 0x2022,
-   V4L2_MBUS_FMT_YVYU12_1X24 = 0x2023,
+   VIDEO_BUS_TO_V4L2_MBUS(RGB444_2X8_PADHI_BE),
+   VIDEO_BUS_TO_V4L2_MBUS(RGB444_2X8_PADHI_LE),
+   VIDEO_BUS_T