130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Media Bus API header 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (C) 2009, Guennadi Liakhovetski <g.liakhovetski@gmx.de> 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is free software; you can redistribute it and/or modify 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * it under the terms of the GNU General Public License version 2 as 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * published by the Free Software Foundation. 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __LINUX_V4L2_MEDIABUS_H 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define __LINUX_V4L2_MEDIABUS_H 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/videodev2.h> 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * These pixel codes uniquely identify data formats on the media bus. Mostly 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * they correspond to similarly named V4L2_PIX_FMT_* formats, format 0 is 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * reserved, V4L2_MBUS_FMT_FIXED shall be used by host-client pairs, where the 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * data format is fixed. Additionally, "2X8" means that one pixel is transferred 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * in two 8-bit samples, "BE" or "LE" specify in which order those samples are 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * transferred over the bus: "LE" means that the least significant bits are 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * transferred first, "BE" means that the most significant bits are transferred 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * first, and "PADHI" and "PADLO" define which bits - low or high, in the 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * incomplete high byte, are filled with padding bits. 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * The pixel codes are grouped by type, bus_width, bits per component, samples 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * per pixel and order of subsamples. Numerical values are sorted using generic 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * numerical sort order (8 thus comes before 10). 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * As their value can't change when a new pixel code is inserted in the 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * enumeration, the pixel codes are explicitly given a numerical value. The next 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * free values for each category are listed below, update them when inserting 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * new pixel codes. 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 3730692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum v4l2_mbus_pixelcode { 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_FIXED = 0x0001, 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 40e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl /* RGB - next is 0x100e */ 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE = 0x1001, 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE = 0x1002, 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE = 0x1003, 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE = 0x1004, 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_BGR565_2X8_BE = 0x1005, 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_BGR565_2X8_LE = 0x1006, 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007, 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008, 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_RGB666_1X18 = 0x1009, 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_RGB888_1X24 = 0x100a, 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_RGB888_2X12_BE = 0x100b, 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_RGB888_2X12_LE = 0x100c, 53e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl V4L2_MBUS_FMT_ARGB8888_1X32 = 0x100d, 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 55e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl /* YUV (including grey) - next is 0x2018 */ 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_Y8_1X8 = 0x2001, 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_UV8_1X8 = 0x2015, 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002, 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_VYUY8_1_5X8 = 0x2003, 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YUYV8_1_5X8 = 0x2004, 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YVYU8_1_5X8 = 0x2005, 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_UYVY8_2X8 = 0x2006, 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_VYUY8_2X8 = 0x2007, 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YUYV8_2X8 = 0x2008, 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YVYU8_2X8 = 0x2009, 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_Y10_1X10 = 0x200a, 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YUYV10_2X10 = 0x200b, 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YVYU10_2X10 = 0x200c, 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_Y12_1X12 = 0x2013, 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_UYVY8_1X16 = 0x200f, 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_VYUY8_1X16 = 0x2010, 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011, 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YVYU8_1X16 = 0x2012, 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YDYUYDYV8_1X16 = 0x2014, 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d, 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e, 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_YUV10_1X30 = 0x2016, 78e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl V4L2_MBUS_FMT_AYUV8_1X32 = 0x2017, 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Bayer - next is 0x3019 */ 8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SBGGR8_1X8 = 0x3001, 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SGBRG8_1X8 = 0x3013, 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SGRBG8_1X8 = 0x3002, 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SRGGB8_1X8 = 0x3014, 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SBGGR10_ALAW8_1X8 = 0x3015, 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SGBRG10_ALAW8_1X8 = 0x3016, 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SGRBG10_ALAW8_1X8 = 0x3017, 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SRGGB10_ALAW8_1X8 = 0x3018, 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8 = 0x300b, 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8 = 0x300c, 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8 = 0x3009, 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8 = 0x300d, 9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE = 0x3003, 9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE = 0x3004, 9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE = 0x3005, 9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE = 0x3006, 9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SBGGR10_1X10 = 0x3007, 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SGBRG10_1X10 = 0x300e, 9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SGRBG10_1X10 = 0x300a, 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SRGGB10_1X10 = 0x300f, 10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SBGGR12_1X12 = 0x3008, 10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SGBRG12_1X12 = 0x3010, 10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SGRBG12_1X12 = 0x3011, 10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_SRGGB12_1X12 = 0x3012, 10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* JPEG compressed formats - next is 0x4002 */ 10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_JPEG_1X8 = 0x4001, 10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Vendor specific formats - next is 0x5002 */ 11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* S5C73M3 sensor specific interleaved UYVY and JPEG */ 11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng V4L2_MBUS_FMT_S5C_UYVY_JPEG_1X8 = 0x5001, 113e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl 114e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl /* HSV - next is 0x6002 */ 115e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl V4L2_MBUS_FMT_AHSV8888_1X32 = 0x6001, 11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 11930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct v4l2_mbus_framefmt - frame format on the media bus 12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @width: frame width 12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @height: frame height 12230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @code: data format code (from enum v4l2_mbus_pixelcode) 12330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @field: used interlacing type (from enum v4l2_field) 12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @colorspace: colorspace of the data (from enum v4l2_colorspace) 12530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 12630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct v4l2_mbus_framefmt { 12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 width; 12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 height; 12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 code; 13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 field; 13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 colorspace; 13230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reserved[7]; 13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 136