diff --git a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
index e1c4f8b4c0b3..5f1602fe5494 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
@@ -130,9 +130,9 @@ colorspace V4L2_COLORSPACE_SRGB.
b1
b0
-
- V4L2_PIX_FMT_RGB444
- 'R444'
+
+ V4L2_PIX_FMT_ARGB444
+ 'AR12'
g3
g2
@@ -152,9 +152,31 @@ colorspace V4L2_COLORSPACE_SRGB.
r1
r0
-
- V4L2_PIX_FMT_RGB555
- 'RGBO'
+
+ V4L2_PIX_FMT_XRGB444
+ 'XR12'
+
+ g3
+ g2
+ g1
+ g0
+ b3
+ b2
+ b1
+ b0
+
+ -
+ -
+ -
+ -
+ r3
+ r2
+ r1
+ r0
+
+
+ V4L2_PIX_FMT_ARGB555
+ 'AR15'
g2
g1
@@ -174,6 +196,28 @@ colorspace V4L2_COLORSPACE_SRGB.
g4
g3
+
+ V4L2_PIX_FMT_XRGB555
+ 'XR15'
+
+ g2
+ g1
+ g0
+ b4
+ b3
+ b2
+ b1
+ b0
+
+ -
+ r4
+ r3
+ r2
+ r1
+ r0
+ g4
+ g3
+
V4L2_PIX_FMT_RGB565
'RGBP'
@@ -341,6 +385,424 @@ colorspace V4L2_COLORSPACE_SRGB.
b1
b0
+
+ V4L2_PIX_FMT_ABGR32
+ 'AR24'
+
+ b7
+ b6
+ b5
+ b4
+ b3
+ b2
+ b1
+ b0
+
+ g7
+ g6
+ g5
+ g4
+ g3
+ g2
+ g1
+ g0
+
+ r7
+ r6
+ r5
+ r4
+ r3
+ r2
+ r1
+ r0
+
+ a7
+ a6
+ a5
+ a4
+ a3
+ a2
+ a1
+ a0
+
+
+ V4L2_PIX_FMT_XBGR32
+ 'XR24'
+
+ b7
+ b6
+ b5
+ b4
+ b3
+ b2
+ b1
+ b0
+
+ g7
+ g6
+ g5
+ g4
+ g3
+ g2
+ g1
+ g0
+
+ r7
+ r6
+ r5
+ r4
+ r3
+ r2
+ r1
+ r0
+
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+
+
+ V4L2_PIX_FMT_ARGB32
+ 'AX24'
+
+ a7
+ a6
+ a5
+ a4
+ a3
+ a2
+ a1
+ a0
+
+ r7
+ r6
+ r5
+ r4
+ r3
+ r2
+ r1
+ r0
+
+ g7
+ g6
+ g5
+ g4
+ g3
+ g2
+ g1
+ g0
+
+ b7
+ b6
+ b5
+ b4
+ b3
+ b2
+ b1
+ b0
+
+
+ V4L2_PIX_FMT_XRGB32
+ 'BX24'
+
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+
+ r7
+ r6
+ r5
+ r4
+ r3
+ r2
+ r1
+ r0
+
+ g7
+ g6
+ g5
+ g4
+ g3
+ g2
+ g1
+ g0
+
+ b7
+ b6
+ b5
+ b4
+ b3
+ b2
+ b1
+ b0
+
+
+
+
+
+ Bit 7 is the most significant bit.
+
+ The usage and value of the alpha bits (a) in the ARGB and ABGR formats
+ (collectively referred to as alpha formats) depend on the device type and
+ hardware operation. Capture devices
+ (including capture queues of mem-to-mem devices) fill the alpha component in
+ memory. When the device outputs an alpha channel the alpha component will
+ have a meaningful value. Otherwise, when the device doesn't output an alpha
+ channel but can set the alpha bit to a user-configurable value, the V4L2_CID_ALPHA_COMPONENT
+ control is used to specify that alpha value, and the alpha component
+ of all pixels will be set to the value specified by that control. Otherwise
+ a corresponding format without an alpha component (XRGB or XBGR) must be
+ used instead of an alpha format.
+
+ Output devices (including output queues
+ of mem-to-mem devices and video output overlay
+ devices) read the alpha component from memory. When the device processes the
+ alpha channel the alpha component must be filled with meaningful values by
+ applications. Otherwise a corresponding format without an alpha component
+ (XRGB or XBGR) must be used instead of an alpha format.
+
+ The XRGB and XBGR formats contain undefined bits (-). Applications,
+ devices and drivers must ignore those bits, for both capture and output
+ devices.
+
+
+ V4L2_PIX_FMT_BGR24 4 × 4 pixel
+image
+
+
+ Byte Order.
+ Each cell is one byte.
+
+
+
+
+
+ start + 0:
+ B00
+ G00
+ R00
+ B01
+ G01
+ R01
+ B02
+ G02
+ R02
+ B03
+ G03
+ R03
+
+
+ start + 12:
+ B10
+ G10
+ R10
+ B11
+ G11
+ R11
+ B12
+ G12
+ R12
+ B13
+ G13
+ R13
+
+
+ start + 24:
+ B20
+ G20
+ R20
+ B21
+ G21
+ R21
+ B22
+ G22
+ R22
+ B23
+ G23
+ R23
+
+
+ start + 36:
+ B30
+ G30
+ R30
+ B31
+ G31
+ R31
+ B32
+ G32
+ R32
+ B33
+ G33
+ R33
+
+
+
+
+
+
+
+
+ Formats defined in are
+ deprecated and must not be used by new drivers. They are documented here for
+ reference. The meaning of their alpha bits (a) is ill-defined and
+ interpreted as in either the corresponding ARGB or XRGB format, depending on
+ the driver.
+
+
- Bit 7 is the most significant bit. The value of the a = alpha
-bits is undefined when reading from the driver, ignored when writing
-to the driver, except when alpha blending has been negotiated for a
-Video Overlay or
-Video Output Overlay or when the alpha component has been configured
-for a Video Capture by means of V4L2_CID_ALPHA_COMPONENT
- control.
-
-
- V4L2_PIX_FMT_BGR24 4 × 4 pixel
-image
-
-
- Byte Order.
- Each cell is one byte.
-
-
-
-
-
- start + 0:
- B00
- G00
- R00
- B01
- G01
- R01
- B02
- G02
- R02
- B03
- G03
- R03
-
-
- start + 12:
- B10
- G10
- R10
- B11
- G11
- R11
- B12
- G12
- R12
- B13
- G13
- R13
-
-
- start + 24:
- B20
- G20
- R20
- B21
- G21
- R21
- B22
- G22
- R22
- B23
- G23
- R23
-
-
- start + 36:
- B30
- G30
- R30
- B31
- G31
- R31
- B32
- G32
- R32
- B33
- G33
- R33
-
-
-
-
-
-
-
-
A test utility to determine which RGB formats a driver
actually supports is available from the LinuxTV v4l-dvb repository.
See &v4l-dvb; for access instructions.
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 1477abebd35b..a498d8b58679 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -294,7 +294,11 @@ struct v4l2_pix_format {
/* 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_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */
+#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */
#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
+#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */
+#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-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 */
@@ -302,7 +306,11 @@ struct v4l2_pix_format {
#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_ABGR32 v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */
+#define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */
#define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */
+#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */
+#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */
/* Grey formats */
#define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */