From b295c22978b86fc62019d12f4108b68b7e795610 Mon Sep 17 00:00:00 2001
From: Philipp Zabel
Date: Tue, 2 Dec 2014 17:49:04 +0100
Subject: [PATCH] Add LVDS RGB media bus formats
This patch adds three new RGB media bus formats that describe
18-bit or 24-bit samples transferred over an LVDS bus with three
or four differential data pairs, serialized into 7 time slots,
using standard SPWG/PSWG/VESA or JEIDA data ordering.
Signed-off-by: Philipp Zabel
Acked-by: Sakari Ailus
Acked-by: Hans Verkuil
---
.../DocBook/media/v4l/subdev-formats.xml | 255 ++++++++++++++++++
include/uapi/linux/media-bus-format.h | 5 +-
2 files changed, 259 insertions(+), 1 deletion(-)
diff --git a/Documentation/DocBook/media/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml
index 29fe60112f4c..18449b32f240 100644
--- a/Documentation/DocBook/media/v4l/subdev-formats.xml
+++ b/Documentation/DocBook/media/v4l/subdev-formats.xml
@@ -622,6 +622,261 @@ see .
+
+ On LVDS buses, usually each sample is transferred serialized in
+ seven time slots per pixel clock, on three (18-bit) or four (24-bit)
+ differential data pairs at the same time. The remaining bits are used for
+ control signals as defined by SPWG/PSWG/VESA or JEIDA standards.
+ The 24-bit RGB format serialized in seven time slots on four lanes using
+ JEIDA defined bit mapping will be named
+ MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA, for example.
+
+
+
+ LVDS RGB formats
+
+
+
+
+
+
+
+
+
+
+
+
+ Identifier
+ Code
+
+
+ Data organization
+
+
+
+
+ Timeslot
+ Lane
+ 3
+ 2
+ 1
+ 0
+
+
+
+
+ MEDIA_BUS_FMT_RGB666_1X7X3_SPWG
+ 0x1010
+ 0
+
+ -
+ d
+ b1
+ g0
+
+
+
+
+ 1
+
+ -
+ d
+ b0
+ r5
+
+
+
+
+ 2
+
+ -
+ d
+ g5
+ r4
+
+
+
+
+ 3
+
+ -
+ b5
+ g4
+ r3
+
+
+
+
+ 4
+
+ -
+ b4
+ g3
+ r2
+
+
+
+
+ 5
+
+ -
+ b3
+ g2
+ r1
+
+
+
+
+ 6
+
+ -
+ b2
+ g1
+ r0
+
+
+ MEDIA_BUS_FMT_RGB888_1X7X4_SPWG
+ 0x1011
+ 0
+
+ d
+ d
+ b1
+ g0
+
+
+
+
+ 1
+
+ b7
+ d
+ b0
+ r5
+
+
+
+
+ 2
+
+ b6
+ d
+ g5
+ r4
+
+
+
+
+ 3
+
+ g7
+ b5
+ g4
+ r3
+
+
+
+
+ 4
+
+ g6
+ b4
+ g3
+ r2
+
+
+
+
+ 5
+
+ r7
+ b3
+ g2
+ r1
+
+
+
+
+ 6
+
+ r6
+ b2
+ g1
+ r0
+
+
+ MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA
+ 0x1012
+ 0
+
+ d
+ d
+ b3
+ g2
+
+
+
+
+ 1
+
+ b1
+ d
+ b2
+ r7
+
+
+
+
+ 2
+
+ b0
+ d
+ g7
+ r6
+
+
+
+
+ 3
+
+ g1
+ b7
+ g6
+ r5
+
+
+
+
+ 4
+
+ g0
+ b6
+ g5
+ r4
+
+
+
+
+ 5
+
+ r1
+ b5
+ g4
+ r3
+
+
+
+
+ 6
+
+ r0
+ b4
+ g3
+ r2
+
+
+
+
diff --git a/include/uapi/linux/media-bus-format.h b/include/uapi/linux/media-bus-format.h
index 37091c668f65..3fb9cbbb603f 100644
--- a/include/uapi/linux/media-bus-format.h
+++ b/include/uapi/linux/media-bus-format.h
@@ -33,7 +33,7 @@
#define MEDIA_BUS_FMT_FIXED 0x0001
-/* RGB - next is 0x1010 */
+/* RGB - next is 0x1013 */
#define MEDIA_BUS_FMT_RGB444_1X12 0x100e
#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE 0x1001
#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE 0x1002
@@ -45,9 +45,12 @@
#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_RGB666_1X7X3_SPWG 0x1010
#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
/* YUV (including grey) - next is 0x2024 */
--
2.20.1