1*edcf58bcSBoris BREZILLON /* 2*edcf58bcSBoris BREZILLON * Media Bus API header 3*edcf58bcSBoris BREZILLON * 4*edcf58bcSBoris BREZILLON * Copyright (C) 2009, Guennadi Liakhovetski <[email protected]> 5*edcf58bcSBoris BREZILLON * 6*edcf58bcSBoris BREZILLON * This program is free software; you can redistribute it and/or modify 7*edcf58bcSBoris BREZILLON * it under the terms of the GNU General Public License version 2 as 8*edcf58bcSBoris BREZILLON * published by the Free Software Foundation. 9*edcf58bcSBoris BREZILLON */ 10*edcf58bcSBoris BREZILLON 11*edcf58bcSBoris BREZILLON #ifndef __LINUX_MEDIA_BUS_FORMAT_H 12*edcf58bcSBoris BREZILLON #define __LINUX_MEDIA_BUS_FORMAT_H 13*edcf58bcSBoris BREZILLON 14*edcf58bcSBoris BREZILLON /* 15*edcf58bcSBoris BREZILLON * These bus formats uniquely identify data formats on the data bus. Format 0 16*edcf58bcSBoris BREZILLON * is reserved, MEDIA_BUS_FMT_FIXED shall be used by host-client pairs, where 17*edcf58bcSBoris BREZILLON * the data format is fixed. Additionally, "2X8" means that one pixel is 18*edcf58bcSBoris BREZILLON * transferred in two 8-bit samples, "BE" or "LE" specify in which order those 19*edcf58bcSBoris BREZILLON * samples are transferred over the bus: "LE" means that the least significant 20*edcf58bcSBoris BREZILLON * bits are transferred first, "BE" means that the most significant bits are 21*edcf58bcSBoris BREZILLON * transferred first, and "PADHI" and "PADLO" define which bits - low or high, 22*edcf58bcSBoris BREZILLON * in the incomplete high byte, are filled with padding bits. 23*edcf58bcSBoris BREZILLON * 24*edcf58bcSBoris BREZILLON * The bus formats are grouped by type, bus_width, bits per component, samples 25*edcf58bcSBoris BREZILLON * per pixel and order of subsamples. Numerical values are sorted using generic 26*edcf58bcSBoris BREZILLON * numerical sort order (8 thus comes before 10). 27*edcf58bcSBoris BREZILLON * 28*edcf58bcSBoris BREZILLON * As their value can't change when a new bus format is inserted in the 29*edcf58bcSBoris BREZILLON * enumeration, the bus formats are explicitly given a numerical value. The next 30*edcf58bcSBoris BREZILLON * free values for each category are listed below, update them when inserting 31*edcf58bcSBoris BREZILLON * new pixel codes. 32*edcf58bcSBoris BREZILLON */ 33*edcf58bcSBoris BREZILLON 34*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_FIXED 0x0001 35*edcf58bcSBoris BREZILLON 36*edcf58bcSBoris BREZILLON /* RGB - next is 0x100e */ 37*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE 0x1001 38*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE 0x1002 39*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE 0x1003 40*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE 0x1004 41*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_BGR565_2X8_BE 0x1005 42*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_BGR565_2X8_LE 0x1006 43*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_RGB565_2X8_BE 0x1007 44*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_RGB565_2X8_LE 0x1008 45*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_RGB666_1X18 0x1009 46*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_RGB888_1X24 0x100a 47*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_RGB888_2X12_BE 0x100b 48*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_RGB888_2X12_LE 0x100c 49*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d 50*edcf58bcSBoris BREZILLON 51*edcf58bcSBoris BREZILLON /* YUV (including grey) - next is 0x2024 */ 52*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_Y8_1X8 0x2001 53*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_UV8_1X8 0x2015 54*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_UYVY8_1_5X8 0x2002 55*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_VYUY8_1_5X8 0x2003 56*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YUYV8_1_5X8 0x2004 57*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YVYU8_1_5X8 0x2005 58*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_UYVY8_2X8 0x2006 59*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_VYUY8_2X8 0x2007 60*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YUYV8_2X8 0x2008 61*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YVYU8_2X8 0x2009 62*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_Y10_1X10 0x200a 63*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_UYVY10_2X10 0x2018 64*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_VYUY10_2X10 0x2019 65*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YUYV10_2X10 0x200b 66*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YVYU10_2X10 0x200c 67*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_Y12_1X12 0x2013 68*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_UYVY8_1X16 0x200f 69*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_VYUY8_1X16 0x2010 70*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YUYV8_1X16 0x2011 71*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YVYU8_1X16 0x2012 72*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YDYUYDYV8_1X16 0x2014 73*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_UYVY10_1X20 0x201a 74*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_VYUY10_1X20 0x201b 75*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YUYV10_1X20 0x200d 76*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YVYU10_1X20 0x200e 77*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YUV10_1X30 0x2016 78*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_AYUV8_1X32 0x2017 79*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_UYVY12_2X12 0x201c 80*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_VYUY12_2X12 0x201d 81*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YUYV12_2X12 0x201e 82*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YVYU12_2X12 0x201f 83*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_UYVY12_1X24 0x2020 84*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_VYUY12_1X24 0x2021 85*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YUYV12_1X24 0x2022 86*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_YVYU12_1X24 0x2023 87*edcf58bcSBoris BREZILLON 88*edcf58bcSBoris BREZILLON /* Bayer - next is 0x3019 */ 89*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SBGGR8_1X8 0x3001 90*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SGBRG8_1X8 0x3013 91*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SGRBG8_1X8 0x3002 92*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SRGGB8_1X8 0x3014 93*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8 0x3015 94*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8 0x3016 95*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8 0x3017 96*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8 0x3018 97*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8 0x300b 98*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8 0x300c 99*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8 0x3009 100*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8 0x300d 101*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE 0x3003 102*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE 0x3004 103*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE 0x3005 104*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE 0x3006 105*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SBGGR10_1X10 0x3007 106*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SGBRG10_1X10 0x300e 107*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SGRBG10_1X10 0x300a 108*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SRGGB10_1X10 0x300f 109*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SBGGR12_1X12 0x3008 110*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SGBRG12_1X12 0x3010 111*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SGRBG12_1X12 0x3011 112*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_SRGGB12_1X12 0x3012 113*edcf58bcSBoris BREZILLON 114*edcf58bcSBoris BREZILLON /* JPEG compressed formats - next is 0x4002 */ 115*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_JPEG_1X8 0x4001 116*edcf58bcSBoris BREZILLON 117*edcf58bcSBoris BREZILLON /* Vendor specific formats - next is 0x5002 */ 118*edcf58bcSBoris BREZILLON 119*edcf58bcSBoris BREZILLON /* S5C73M3 sensor specific interleaved UYVY and JPEG */ 120*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8 0x5001 121*edcf58bcSBoris BREZILLON 122*edcf58bcSBoris BREZILLON /* HSV - next is 0x6002 */ 123*edcf58bcSBoris BREZILLON #define MEDIA_BUS_FMT_AHSV8888_1X32 0x6001 124*edcf58bcSBoris BREZILLON 125*edcf58bcSBoris BREZILLON #endif /* __LINUX_MEDIA_BUS_FORMAT_H */ 126