media-bus-format.h 5.5 KB

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