On Wed, Aug 24, 2016 at 12:40:17PM +0200, Philipp Zabel wrote:
> V4L2 pixel formats are supposed to describe video frames in memory. To
> describe the pixel format on the hardware bus between display interface
> and encoders, use media bus formats, which are more expressive.
> 
> This allows to get rid of the custom GBR24 and LVDS666 fourccs.
> 
> Signed-off-by: Philipp Zabel <[email protected]>

Applied, thanks

Sascha

> ---
>  drivers/video/imx-ipu-v3/imx-hdmi.c   |   3 +-
>  drivers/video/imx-ipu-v3/imx-ipu-v3.h |   4 +-
>  drivers/video/imx-ipu-v3/imx-ldb.c    |   7 +-
>  drivers/video/imx-ipu-v3/ipu-dc.c     |  19 +++--
>  drivers/video/imx-ipu-v3/ipu-prv.h    |   2 -
>  drivers/video/imx-ipu-v3/ipufb.c      |  21 +++--
>  include/video/fourcc.h                | 151 
> ----------------------------------
>  include/video/media-bus-format.h      | 137 ++++++++++++++++++++++++++++++
>  8 files changed, 165 insertions(+), 179 deletions(-)
>  create mode 100644 include/video/media-bus-format.h
> 
> diff --git a/drivers/video/imx-ipu-v3/imx-hdmi.c 
> b/drivers/video/imx-ipu-v3/imx-hdmi.c
> index 8b251a5..17b6e4c 100644
> --- a/drivers/video/imx-ipu-v3/imx-hdmi.c
> +++ b/drivers/video/imx-ipu-v3/imx-hdmi.c
> @@ -22,6 +22,7 @@
>  #include <asm-generic/div64.h>
>  #include <linux/clk.h>
>  #include <i2c/i2c.h>
> +#include <video/media-bus-format.h>
>  #include <video/vpl.h>
>  #include <mach/imx6-regs.h>
>  #include <mach/imx53-regs.h>
> @@ -1261,7 +1262,7 @@ static int dw_hdmi_ioctl(struct vpl *vpl, unsigned int 
> port,
>               mode = data;
>  
>               mode->di_clkflags = IPU_DI_CLKMODE_EXT | IPU_DI_CLKMODE_SYNC;
> -             mode->interface_pix_fmt = V4L2_PIX_FMT_RGB24;
> +             mode->bus_format = MEDIA_BUS_FMT_RGB888_1X24;
>  
>               return 0;
>       }
> diff --git a/drivers/video/imx-ipu-v3/imx-ipu-v3.h 
> b/drivers/video/imx-ipu-v3/imx-ipu-v3.h
> index fbfec22..cdfff69 100644
> --- a/drivers/video/imx-ipu-v3/imx-ipu-v3.h
> +++ b/drivers/video/imx-ipu-v3/imx-ipu-v3.h
> @@ -116,7 +116,7 @@ struct ipu_di;
>  struct ipu_dc *ipu_dc_get(struct ipu_soc *ipu, int channel);
>  void ipu_dc_put(struct ipu_dc *dc);
>  int ipu_dc_init_sync(struct ipu_dc *dc, struct ipu_di *di, bool interlaced,
> -             u32 pixel_fmt, u32 width);
> +             u32 bus_format, u32 width);
>  void ipu_dc_enable_channel(struct ipu_dc *dc);
>  void ipu_dc_disable_channel(struct ipu_dc *dc);
>  
> @@ -323,7 +323,7 @@ struct ipu_client_platformdata {
>  
>  struct ipu_di_mode {
>       u32 di_clkflags;
> -     u32 interface_pix_fmt;
> +     u32 bus_format;
>  };
>  
>  #define IMX_IPU_VPL_DI_MODE  0x12660001
> diff --git a/drivers/video/imx-ipu-v3/imx-ldb.c 
> b/drivers/video/imx-ipu-v3/imx-ldb.c
> index 17ae894..14a86a4 100644
> --- a/drivers/video/imx-ipu-v3/imx-ldb.c
> +++ b/drivers/video/imx-ipu-v3/imx-ldb.c
> @@ -26,6 +26,7 @@
>  #include <malloc.h>
>  #include <errno.h>
>  #include <init.h>
> +#include <video/media-bus-format.h>
>  #include <video/vpl.h>
>  #include <mfd/imx6q-iomuxc-gpr.h>
>  #include <linux/clk.h>
> @@ -75,7 +76,7 @@ struct imx_ldb_data {
>  
>  struct imx_ldb {
>       struct device_d *dev;
> -     u32 interface_pix_fmt;
> +     u32 bus_format;
>       int mode_valid;
>       struct imx_ldb_channel channel[2];
>       u32 ldb_ctrl;
> @@ -273,8 +274,8 @@ static int imx_ldb_ioctl(struct vpl *vpl, unsigned int 
> port,
>               mode = data;
>  
>               mode->di_clkflags = IPU_DI_CLKMODE_EXT | IPU_DI_CLKMODE_SYNC;
> -             mode->interface_pix_fmt = (imx_ldb_ch->datawidth == 24) ?
> -                     V4L2_PIX_FMT_RGB24 : V4L2_PIX_FMT_BGR666;
> +             mode->bus_format = (imx_ldb_ch->datawidth == 24) ?
> +                     MEDIA_BUS_FMT_RGB888_1X24 : MEDIA_BUS_FMT_RGB666_1X18;
>  
>               return 0;
>       case VPL_GET_VIDEOMODES:
> diff --git a/drivers/video/imx-ipu-v3/ipu-dc.c 
> b/drivers/video/imx-ipu-v3/ipu-dc.c
> index 2deb2ae..7b343e8 100644
> --- a/drivers/video/imx-ipu-v3/ipu-dc.c
> +++ b/drivers/video/imx-ipu-v3/ipu-dc.c
> @@ -17,6 +17,7 @@
>  #include <linux/err.h>
>  #include <linux/clk.h>
>  #include <malloc.h>
> +#include <video/media-bus-format.h>
>  
>  #include "imx-ipu-v3.h"
>  #include "ipu-prv.h"
> @@ -138,18 +139,18 @@ static void dc_write_tmpl(struct ipu_dc *dc, int word, 
> u32 opcode, u32 operand,
>       ipuwritel("dc", reg2, priv->dc_tmpl_reg + word * 8 + 4);
>  }
>  
> -static int ipu_pixfmt_to_map(u32 fmt)
> +static int ipu_bus_format_to_map(u32 bus_format)
>  {
> -     switch (fmt) {
> -     case V4L2_PIX_FMT_RGB24:
> +     switch (bus_format) {
> +     case MEDIA_BUS_FMT_RGB888_1X24:
>               return IPU_DC_MAP_RGB24;
> -     case V4L2_PIX_FMT_RGB565:
> +     case MEDIA_BUS_FMT_RGB565_1X16:
>               return IPU_DC_MAP_RGB565;
> -     case IPU_PIX_FMT_GBR24:
> +     case MEDIA_BUS_FMT_GBR888_1X24:
>               return IPU_DC_MAP_GBR24;
> -     case V4L2_PIX_FMT_BGR666:
> +     case MEDIA_BUS_FMT_RGB666_1X18:
>               return IPU_DC_MAP_BGR666;
> -     case V4L2_PIX_FMT_BGR24:
> +     case MEDIA_BUS_FMT_BGR888_1X24:
>               return IPU_DC_MAP_BGR24;
>       default:
>               return -EINVAL;
> @@ -157,7 +158,7 @@ static int ipu_pixfmt_to_map(u32 fmt)
>  }
>  
>  int ipu_dc_init_sync(struct ipu_dc *dc, struct ipu_di *di, bool interlaced,
> -             u32 pixel_fmt, u32 width)
> +             u32 bus_format, u32 width)
>  {
>       struct ipu_dc_priv *priv = dc->priv;
>       u32 reg = 0;
> @@ -165,7 +166,7 @@ int ipu_dc_init_sync(struct ipu_dc *dc, struct ipu_di 
> *di, bool interlaced,
>  
>       dc->di = ipu_di_get_num(di);
>  
> -     map = ipu_pixfmt_to_map(pixel_fmt);
> +     map = ipu_bus_format_to_map(bus_format);
>       if (map < 0) {
>               dev_dbg(priv->dev, "IPU_DISP: No MAP\n");
>               return map;
> diff --git a/drivers/video/imx-ipu-v3/ipu-prv.h 
> b/drivers/video/imx-ipu-v3/ipu-prv.h
> index 44d7802..4d1c069 100644
> --- a/drivers/video/imx-ipu-v3/ipu-prv.h
> +++ b/drivers/video/imx-ipu-v3/ipu-prv.h
> @@ -19,8 +19,6 @@ struct ipu_soc;
>  
>  #include "imx-ipu-v3.h"
>  
> -#define IPU_PIX_FMT_GBR24    v4l2_fourcc('G', 'B', 'R', '3')
> -
>  #define IPUV3_CHANNEL_CSI0                    0
>  #define IPUV3_CHANNEL_CSI1                    1
>  #define IPUV3_CHANNEL_CSI2                    2
> diff --git a/drivers/video/imx-ipu-v3/ipufb.c 
> b/drivers/video/imx-ipu-v3/ipufb.c
> index 67fec11..cfafa22 100644
> --- a/drivers/video/imx-ipu-v3/ipufb.c
> +++ b/drivers/video/imx-ipu-v3/ipufb.c
> @@ -23,6 +23,7 @@
>  #include <linux/clk.h>
>  #include <linux/err.h>
>  #include <asm-generic/div64.h>
> +#include <video/media-bus-format.h>
>  
>  #include "imx-ipu-v3.h"
>  #include "ipuv3-plane.h"
> @@ -56,7 +57,7 @@ struct ipufb_info {
>       void                    (*enable)(int enable);
>  
>       unsigned int            di_clkflags;
> -     u32                     interface_pix_fmt;
> +     u32                     bus_format;
>       struct ipu_dc           *dc;
>       struct ipu_di           *di;
>  
> @@ -108,7 +109,7 @@ int ipu_crtc_mode_set(struct ipufb_info *fbi,
>       int ret;
>       struct ipu_di_signal_cfg sig_cfg = {};
>       struct ipu_di_mode di_mode = {};
> -     u32 interface_pix_fmt;
> +     u32 bus_format;
>  
>       dev_info(fbi->dev, "%s: mode->xres: %d\n", __func__,
>                       mode->xres);
> @@ -116,8 +117,7 @@ int ipu_crtc_mode_set(struct ipufb_info *fbi,
>                       mode->yres);
>  
>       vpl_ioctl(&fbi->vpl, 2 + fbi->dino, IMX_IPU_VPL_DI_MODE, &di_mode);
> -     interface_pix_fmt = di_mode.interface_pix_fmt ?
> -             di_mode.interface_pix_fmt : fbi->interface_pix_fmt;
> +     bus_format = di_mode.bus_format ?: fbi->bus_format;
>  
>       if (mode->sync & FB_SYNC_HOR_HIGH_ACT)
>               sig_cfg.Hsync_pol = 1;
> @@ -148,8 +148,8 @@ int ipu_crtc_mode_set(struct ipufb_info *fbi,
>       sig_cfg.hsync_pin = 2;
>       sig_cfg.vsync_pin = 3;
>  
> -     ret = ipu_dc_init_sync(fbi->dc, fbi->di, sig_cfg.interlaced,
> -                     interface_pix_fmt, mode->xres);
> +     ret = ipu_dc_init_sync(fbi->dc, fbi->di, sig_cfg.interlaced, bus_format,
> +                     mode->xres);
>       if (ret) {
>               dev_err(fbi->dev,
>                               "initializing display controller failed with 
> %d\n",
> @@ -318,14 +318,13 @@ static int ipufb_probe(struct device_d *dev)
>               ret = of_property_read_string(node, "interface-pix-fmt", &fmt);
>               if (!ret) {
>                       if (!strcmp(fmt, "rgb24"))
> -                             fbi->interface_pix_fmt = V4L2_PIX_FMT_RGB24;
> +                             fbi->bus_format = MEDIA_BUS_FMT_RGB888_1X24;
>                       else if (!strcmp(fmt, "rgb565"))
> -                             fbi->interface_pix_fmt = V4L2_PIX_FMT_RGB565;
> +                             fbi->bus_format = MEDIA_BUS_FMT_RGB565_1X16;
>                       else if (!strcmp(fmt, "bgr666"))
> -                             fbi->interface_pix_fmt = V4L2_PIX_FMT_BGR666;
> +                             fbi->bus_format = MEDIA_BUS_FMT_RGB666_1X18;
>                       else if (!strcmp(fmt, "lvds666"))
> -                             fbi->interface_pix_fmt =
> -                                     v4l2_fourcc('L', 'V', 'D', '6');
> +                             fbi->bus_format = 
> MEDIA_BUS_FMT_RGB666_1X24_CPADHI;
>               }
>  
>               ret = vpl_ioctl(&fbi->vpl, 2 + fbi->dino, VPL_GET_VIDEOMODES, 
> &info->modes);
> diff --git a/include/video/fourcc.h b/include/video/fourcc.h
> index 322142c..211aabb 100644
> --- a/include/video/fourcc.h
> +++ b/include/video/fourcc.h
> @@ -1,157 +1,6 @@
>  #ifndef __VIDEO_FOURCC_H
>  #define __VIDEO_FOURCC_H
>  
> -/*  Four-character-code (FOURCC) */
> -#define v4l2_fourcc(a, b, c, d)\
> -     ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 
> 24))
> -
> -/*      Pixel format         FOURCC                          depth  
> Description  */
> -
> -/* RGB formats */
> -#define V4L2_PIX_FMT_RGB332  v4l2_fourcc('R', 'G', 'B', '1') /*  8  
> RGB-3-3-2     */
> -#define V4L2_PIX_FMT_RGB444  v4l2_fourcc('R', '4', '4', '4') /* 16  xxxxrrrr 
> ggggbbbb */
> -#define V4L2_PIX_FMT_RGB555  v4l2_fourcc('R', 'G', 'B', 'O') /* 16  
> RGB-5-5-5     */
> -#define V4L2_PIX_FMT_RGB565  v4l2_fourcc('R', 'G', 'B', 'P') /* 16  
> RGB-5-6-5     */
> -#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16  
> RGB-5-5-5 BE  */
> -#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16  
> RGB-5-6-5 BE  */
> -#define V4L2_PIX_FMT_BGR666  v4l2_fourcc('B', 'G', 'R', 'H') /* 18  
> BGR-6-6-6          */
> -#define V4L2_PIX_FMT_BGR24   v4l2_fourcc('B', 'G', 'R', '3') /* 24  
> BGR-8-8-8     */
> -#define V4L2_PIX_FMT_RGB24   v4l2_fourcc('R', 'G', 'B', '3') /* 24  
> RGB-8-8-8     */
> -#define V4L2_PIX_FMT_BGR32   v4l2_fourcc('B', 'G', 'R', '4') /* 32  
> BGR-8-8-8-8   */
> -#define V4L2_PIX_FMT_RGB32   v4l2_fourcc('R', 'G', 'B', '4') /* 32  
> RGB-8-8-8-8   */
> -
> -/* Grey formats */
> -#define V4L2_PIX_FMT_GREY    v4l2_fourcc('G', 'R', 'E', 'Y') /*  8  
> Greyscale     */
> -#define V4L2_PIX_FMT_Y4      v4l2_fourcc('Y', '0', '4', ' ') /*  4  
> Greyscale     */
> -#define V4L2_PIX_FMT_Y6      v4l2_fourcc('Y', '0', '6', ' ') /*  6  
> Greyscale     */
> -#define V4L2_PIX_FMT_Y10     v4l2_fourcc('Y', '1', '0', ' ') /* 10  
> Greyscale     */
> -#define V4L2_PIX_FMT_Y12     v4l2_fourcc('Y', '1', '2', ' ') /* 12  
> Greyscale     */
> -#define V4L2_PIX_FMT_Y16     v4l2_fourcc('Y', '1', '6', ' ') /* 16  
> Greyscale     */
> -
> -/* Grey bit-packed formats */
> -#define V4L2_PIX_FMT_Y10BPACK    v4l2_fourcc('Y', '1', '0', 'B') /* 10  
> Greyscale bit-packed */
> -
> -/* Palette formats */
> -#define V4L2_PIX_FMT_PAL8    v4l2_fourcc('P', 'A', 'L', '8') /*  8  8-bit 
> palette */
> -
> -/* Chrominance formats */
> -#define V4L2_PIX_FMT_UV8     v4l2_fourcc('U', 'V', '8', ' ') /*  8  UV 4:4 */
> -
> -/* Luminance+Chrominance formats */
> -#define V4L2_PIX_FMT_YVU410  v4l2_fourcc('Y', 'V', 'U', '9') /*  9  YVU 
> 4:1:0     */
> -#define V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y', 'V', '1', '2') /* 12  YVU 
> 4:2:0     */
> -#define V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16  YUV 
> 4:2:2     */
> -#define V4L2_PIX_FMT_YYUV    v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16  YUV 
> 4:2:2     */
> -#define V4L2_PIX_FMT_YVYU    v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 
> */
> -#define V4L2_PIX_FMT_UYVY    v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16  YUV 
> 4:2:2     */
> -#define V4L2_PIX_FMT_VYUY    v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16  YUV 
> 4:2:2     */
> -#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16  YVU422 
> planar */
> -#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 16  YVU411 
> planar */
> -#define V4L2_PIX_FMT_Y41P    v4l2_fourcc('Y', '4', '1', 'P') /* 12  YUV 
> 4:1:1     */
> -#define V4L2_PIX_FMT_YUV444  v4l2_fourcc('Y', '4', '4', '4') /* 16  xxxxyyyy 
> uuuuvvvv */
> -#define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O') /* 16  
> YUV-5-5-5     */
> -#define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y', 'U', 'V', 'P') /* 16  
> YUV-5-6-5     */
> -#define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  
> YUV-8-8-8-8   */
> -#define V4L2_PIX_FMT_YUV410  v4l2_fourcc('Y', 'U', 'V', '9') /*  9  YUV 
> 4:1:0     */
> -#define V4L2_PIX_FMT_YUV420  v4l2_fourcc('Y', 'U', '1', '2') /* 12  YUV 
> 4:2:0     */
> -#define V4L2_PIX_FMT_HI240   v4l2_fourcc('H', 'I', '2', '4') /*  8  8-bit 
> color   */
> -#define V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2') /*  8  YUV 
> 4:2:0 16x16 macroblocks */
> -#define V4L2_PIX_FMT_M420    v4l2_fourcc('M', '4', '2', '0') /* 12  YUV 
> 4:2:0 2 lines y, 1 line uv interleaved */
> -
> -/* two planes -- one Y, one Cr + Cb interleaved  */
> -#define V4L2_PIX_FMT_NV12    v4l2_fourcc('N', 'V', '1', '2') /* 12  Y/CbCr 
> 4:2:0  */
> -#define V4L2_PIX_FMT_NV21    v4l2_fourcc('N', 'V', '2', '1') /* 12  Y/CrCb 
> 4:2:0  */
> -#define V4L2_PIX_FMT_NV16    v4l2_fourcc('N', 'V', '1', '6') /* 16  Y/CbCr 
> 4:2:2  */
> -#define V4L2_PIX_FMT_NV61    v4l2_fourcc('N', 'V', '6', '1') /* 16  Y/CrCb 
> 4:2:2  */
> -#define V4L2_PIX_FMT_NV24    v4l2_fourcc('N', 'V', '2', '4') /* 24  Y/CbCr 
> 4:4:4  */
> -#define V4L2_PIX_FMT_NV42    v4l2_fourcc('N', 'V', '4', '2') /* 24  Y/CrCb 
> 4:4:4  */
> -
> -/* two non contiguous planes - one Y, one Cr + Cb interleaved  */
> -#define V4L2_PIX_FMT_NV12M   v4l2_fourcc('N', 'M', '1', '2') /* 12  Y/CbCr 
> 4:2:0  */
> -#define V4L2_PIX_FMT_NV21M   v4l2_fourcc('N', 'M', '2', '1') /* 21  Y/CrCb 
> 4:2:0  */
> -#define V4L2_PIX_FMT_NV16M   v4l2_fourcc('N', 'M', '1', '6') /* 16  Y/CbCr 
> 4:2:2  */
> -#define V4L2_PIX_FMT_NV61M   v4l2_fourcc('N', 'M', '6', '1') /* 16  Y/CrCb 
> 4:2:2  */
> -#define V4L2_PIX_FMT_NV12MT  v4l2_fourcc('T', 'M', '1', '2') /* 12  Y/CbCr 
> 4:2:0 64x32 macroblocks */
> -#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12  
> Y/CbCr 4:2:0 16x16 macroblocks */
> -
> -/* three non contiguous planes - Y, Cb, Cr */
> -#define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12  YUV420 
> planar */
> -#define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12  YVU420 
> planar */
> -
> -/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
> -#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B', 'A', '8', '1') /*  8  BGBG.. 
> GRGR.. */
> -#define V4L2_PIX_FMT_SGBRG8  v4l2_fourcc('G', 'B', 'R', 'G') /*  8  GBGB.. 
> RGRG.. */
> -#define V4L2_PIX_FMT_SGRBG8  v4l2_fourcc('G', 'R', 'B', 'G') /*  8  GRGR.. 
> BGBG.. */
> -#define V4L2_PIX_FMT_SRGGB8  v4l2_fourcc('R', 'G', 'G', 'B') /*  8  RGRG.. 
> GBGB.. */
> -#define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0') /* 10  BGBG.. 
> GRGR.. */
> -#define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10  GBGB.. 
> RGRG.. */
> -#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10  GRGR.. 
> BGBG.. */
> -#define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10  RGRG.. 
> GBGB.. */
> -#define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12  BGBG.. 
> GRGR.. */
> -#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12  GBGB.. 
> RGRG.. */
> -#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12  GRGR.. 
> BGBG.. */
> -#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12  RGRG.. 
> GBGB.. */
> -     /* 10bit raw bayer a-law compressed to 8 bits */
> -#define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8')
> -#define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8')
> -#define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8')
> -#define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8')
> -     /* 10bit raw bayer DPCM compressed to 8 bits */
> -#define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8')
> -#define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8')
> -#define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
> -#define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8')
> -     /*
> -      * 10bit raw bayer, expanded to 16 bits
> -      * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb...
> -      */
> -#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16  BGBG.. 
> GRGR.. */
> -
> -/* compressed formats */
> -#define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG 
>   */
> -#define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG   
>   */
> -#define V4L2_PIX_FMT_DV       v4l2_fourcc('d', 'v', 's', 'd') /* 1394        
>   */
> -#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 
> Multiplexed */
> -#define V4L2_PIX_FMT_H264     v4l2_fourcc('H', '2', '6', '4') /* H264 with 
> start codes */
> -#define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 
> without start codes */
> -#define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */
> -#define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263        
>   */
> -#define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES   
>   */
> -#define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES   
>   */
> -#define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 
> 2 ES */
> -#define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid        
>    */
> -#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 
> 421M Annex G compliant stream */
> -#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 
> 421M Annex L compliant stream */
> -#define V4L2_PIX_FMT_VP8      v4l2_fourcc('V', 'P', '8', '0') /* VP8 */
> -
> -/*  Vendor-specific formats   */
> -#define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
> -#define V4L2_PIX_FMT_WNVA     v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw 
> compress */
> -#define V4L2_PIX_FMT_SN9C10X  v4l2_fourcc('S', '9', '1', '0') /* SN9C10x 
> compression */
> -#define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x 
> YUV 4:2:0 */
> -#define V4L2_PIX_FMT_PWC1     v4l2_fourcc('P', 'W', 'C', '1') /* pwc older 
> webcam */
> -#define V4L2_PIX_FMT_PWC2     v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer 
> webcam */
> -#define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 
> compression */
> -#define V4L2_PIX_FMT_SPCA501  v4l2_fourcc('S', '5', '0', '1') /* YUYV per 
> line */
> -#define V4L2_PIX_FMT_SPCA505  v4l2_fourcc('S', '5', '0', '5') /* YYUV per 
> line */
> -#define V4L2_PIX_FMT_SPCA508  v4l2_fourcc('S', '5', '0', '8') /* YUVY per 
> line */
> -#define V4L2_PIX_FMT_SPCA561  v4l2_fourcc('S', '5', '6', '1') /* compressed 
> GBRG bayer */
> -#define V4L2_PIX_FMT_PAC207   v4l2_fourcc('P', '2', '0', '7') /* compressed 
> BGGR bayer */
> -#define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed 
> BGGR bayer */
> -#define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0') /* compressed 
> RGGB bayer */
> -#define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X') /* compressed 
> GBRG bayer */
> -#define V4L2_PIX_FMT_SQ905C   v4l2_fourcc('9', '0', '5', 'C') /* compressed 
> RGGB bayer */
> -#define V4L2_PIX_FMT_PJPG     v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx 
> JPEG */
> -#define V4L2_PIX_FMT_OV511    v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG 
> */
> -#define V4L2_PIX_FMT_OV518    v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG 
> */
> -#define V4L2_PIX_FMT_STV0680  v4l2_fourcc('S', '6', '8', '0') /* stv0680 
> bayer */
> -#define V4L2_PIX_FMT_TM6000   v4l2_fourcc('T', 'M', '6', '0') /* 
> tm5600/tm60x0 */
> -#define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line 
> of Y then 1 line of VYUY */
> -#define V4L2_PIX_FMT_KONICA420  v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 
> planar in blocks of 256 pixels */
> -#define V4L2_PIX_FMT_JPGL    v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */
> -#define V4L2_PIX_FMT_SE401      v4l2_fourcc('S', '4', '0', '1') /* se401 
> janggu compressed rgb */
> -#define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 
> interleaved UYVY/JPEG */
> -
>  #define fourcc_code(a, b, c, d) ((__u32)(a) | ((__u32)(b) << 8) | \
>                                ((__u32)(c) << 16) | ((__u32)(d) << 24))
>  
> diff --git a/include/video/media-bus-format.h 
> b/include/video/media-bus-format.h
> new file mode 100644
> index 0000000..190d491
> --- /dev/null
> +++ b/include/video/media-bus-format.h
> @@ -0,0 +1,137 @@
> +/*
> + * Media Bus API header
> + *
> + * Copyright (C) 2009, Guennadi Liakhovetski <[email protected]>
> + *
> + * 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.
> + */
> +
> +#ifndef __LINUX_MEDIA_BUS_FORMAT_H
> +#define __LINUX_MEDIA_BUS_FORMAT_H
> +
> +/*
> + * These bus formats uniquely identify data formats on the data bus. Format 0
> + * is reserved, MEDIA_BUS_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 bus formats 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 bus format is inserted in the
> + * enumeration, the bus formats are explicitly given a numerical value. The 
> next
> + * free values for each category are listed below, update them when inserting
> + * new pixel codes.
> + */
> +
> +#define MEDIA_BUS_FMT_FIXED                  0x0001
> +
> +/* RGB - next is     0x1018 */
> +#define MEDIA_BUS_FMT_RGB444_1X12            0x1016
> +#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE    0x1001
> +#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE    0x1002
> +#define MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE    0x1003
> +#define MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE    0x1004
> +#define MEDIA_BUS_FMT_RGB565_1X16            0x1017
> +#define MEDIA_BUS_FMT_BGR565_2X8_BE          0x1005
> +#define MEDIA_BUS_FMT_BGR565_2X8_LE          0x1006
> +#define MEDIA_BUS_FMT_RGB565_2X8_BE          0x1007
> +#define MEDIA_BUS_FMT_RGB565_2X8_LE          0x1008
> +#define MEDIA_BUS_FMT_RGB666_1X18            0x1009
> +#define MEDIA_BUS_FMT_RBG888_1X24            0x100e
> +#define MEDIA_BUS_FMT_RGB666_1X24_CPADHI     0x1015
> +#define MEDIA_BUS_FMT_RGB666_1X7X3_SPWG              0x1010
> +#define MEDIA_BUS_FMT_BGR888_1X24            0x1013
> +#define MEDIA_BUS_FMT_GBR888_1X24            0x1014
> +#define MEDIA_BUS_FMT_RGB888_1X24            0x100a
> +#define MEDIA_BUS_FMT_RGB888_2X12_BE         0x100b
> +#define MEDIA_BUS_FMT_RGB888_2X12_LE         0x100c
> +#define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG              0x1011
> +#define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA     0x1012
> +#define MEDIA_BUS_FMT_ARGB8888_1X32          0x100d
> +#define MEDIA_BUS_FMT_RGB888_1X32_PADHI              0x100f
> +
> +/* YUV (including grey) - next is    0x2026 */
> +#define MEDIA_BUS_FMT_Y8_1X8                 0x2001
> +#define MEDIA_BUS_FMT_UV8_1X8                        0x2015
> +#define MEDIA_BUS_FMT_UYVY8_1_5X8            0x2002
> +#define MEDIA_BUS_FMT_VYUY8_1_5X8            0x2003
> +#define MEDIA_BUS_FMT_YUYV8_1_5X8            0x2004
> +#define MEDIA_BUS_FMT_YVYU8_1_5X8            0x2005
> +#define MEDIA_BUS_FMT_UYVY8_2X8                      0x2006
> +#define MEDIA_BUS_FMT_VYUY8_2X8                      0x2007
> +#define MEDIA_BUS_FMT_YUYV8_2X8                      0x2008
> +#define MEDIA_BUS_FMT_YVYU8_2X8                      0x2009
> +#define MEDIA_BUS_FMT_Y10_1X10                       0x200a
> +#define MEDIA_BUS_FMT_UYVY10_2X10            0x2018
> +#define MEDIA_BUS_FMT_VYUY10_2X10            0x2019
> +#define MEDIA_BUS_FMT_YUYV10_2X10            0x200b
> +#define MEDIA_BUS_FMT_YVYU10_2X10            0x200c
> +#define MEDIA_BUS_FMT_Y12_1X12                       0x2013
> +#define MEDIA_BUS_FMT_UYVY12_2X12            0x201c
> +#define MEDIA_BUS_FMT_VYUY12_2X12            0x201d
> +#define MEDIA_BUS_FMT_YUYV12_2X12            0x201e
> +#define MEDIA_BUS_FMT_YVYU12_2X12            0x201f
> +#define MEDIA_BUS_FMT_UYVY8_1X16             0x200f
> +#define MEDIA_BUS_FMT_VYUY8_1X16             0x2010
> +#define MEDIA_BUS_FMT_YUYV8_1X16             0x2011
> +#define MEDIA_BUS_FMT_YVYU8_1X16             0x2012
> +#define MEDIA_BUS_FMT_YDYUYDYV8_1X16         0x2014
> +#define MEDIA_BUS_FMT_UYVY10_1X20            0x201a
> +#define MEDIA_BUS_FMT_VYUY10_1X20            0x201b
> +#define MEDIA_BUS_FMT_YUYV10_1X20            0x200d
> +#define MEDIA_BUS_FMT_YVYU10_1X20            0x200e
> +#define MEDIA_BUS_FMT_VUY8_1X24                      0x2024
> +#define MEDIA_BUS_FMT_YUV8_1X24                      0x2025
> +#define MEDIA_BUS_FMT_UYVY12_1X24            0x2020
> +#define MEDIA_BUS_FMT_VYUY12_1X24            0x2021
> +#define MEDIA_BUS_FMT_YUYV12_1X24            0x2022
> +#define MEDIA_BUS_FMT_YVYU12_1X24            0x2023
> +#define MEDIA_BUS_FMT_YUV10_1X30             0x2016
> +#define MEDIA_BUS_FMT_AYUV8_1X32             0x2017
> +
> +/* Bayer - next is   0x3019 */
> +#define MEDIA_BUS_FMT_SBGGR8_1X8             0x3001
> +#define MEDIA_BUS_FMT_SGBRG8_1X8             0x3013
> +#define MEDIA_BUS_FMT_SGRBG8_1X8             0x3002
> +#define MEDIA_BUS_FMT_SRGGB8_1X8             0x3014
> +#define MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8              0x3015
> +#define MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8              0x3016
> +#define MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8              0x3017
> +#define MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8              0x3018
> +#define MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8              0x300b
> +#define MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8              0x300c
> +#define MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8              0x3009
> +#define MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8              0x300d
> +#define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE   0x3003
> +#define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE   0x3004
> +#define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE   0x3005
> +#define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE   0x3006
> +#define MEDIA_BUS_FMT_SBGGR10_1X10           0x3007
> +#define MEDIA_BUS_FMT_SGBRG10_1X10           0x300e
> +#define MEDIA_BUS_FMT_SGRBG10_1X10           0x300a
> +#define MEDIA_BUS_FMT_SRGGB10_1X10           0x300f
> +#define MEDIA_BUS_FMT_SBGGR12_1X12           0x3008
> +#define MEDIA_BUS_FMT_SGBRG12_1X12           0x3010
> +#define MEDIA_BUS_FMT_SGRBG12_1X12           0x3011
> +#define MEDIA_BUS_FMT_SRGGB12_1X12           0x3012
> +
> +/* JPEG compressed formats - next is 0x4002 */
> +#define MEDIA_BUS_FMT_JPEG_1X8                       0x4001
> +
> +/* Vendor specific formats - next is 0x5002 */
> +
> +/* S5C73M3 sensor specific interleaved UYVY and JPEG */
> +#define MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8              0x5001
> +
> +/* HSV - next is     0x6002 */
> +#define MEDIA_BUS_FMT_AHSV8888_1X32          0x6001
> +
> +#endif /* __LINUX_MEDIA_BUS_FORMAT_H */
> -- 
> 2.8.1
> 
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to