xref: /rk3399_rockchip-uboot/include/drm_modes.h (revision ffa55e18238b8457fb51fce46a63ef28dfbc33ce)
1b9e63a96SMark Yao /*
2b9e63a96SMark Yao  * (C) Copyright 2008-2016 Fuzhou Rockchip Electronics Co., Ltd
3b9e63a96SMark Yao  *
4b9e63a96SMark Yao  * SPDX-License-Identifier:	GPL-2.0+
5b9e63a96SMark Yao  */
6b9e63a96SMark Yao 
7b9e63a96SMark Yao #ifndef _DRM_MODES_H
8b9e63a96SMark Yao #define _DRM_MODES_H
9b9e63a96SMark Yao 
10ccd843b9SSandy Huang #define DRM_DISPLAY_INFO_LEN	32
11ccd843b9SSandy Huang #define DRM_CONNECTOR_NAME_LEN	32
12ccd843b9SSandy Huang #define DRM_DISPLAY_MODE_LEN	32
13ccd843b9SSandy Huang #define DRM_PROP_NAME_LEN	32
14ccd843b9SSandy Huang 
15ccd843b9SSandy Huang #define DRM_MODE_TYPE_BUILTIN	(1<<0)
16ccd843b9SSandy Huang #define DRM_MODE_TYPE_CLOCK_C	((1<<1) | DRM_MODE_TYPE_BUILTIN)
17ccd843b9SSandy Huang #define DRM_MODE_TYPE_CRTC_C	((1<<2) | DRM_MODE_TYPE_BUILTIN)
18ccd843b9SSandy Huang #define DRM_MODE_TYPE_PREFERRED	(1<<3)
19ccd843b9SSandy Huang #define DRM_MODE_TYPE_DEFAULT	(1<<4)
20ccd843b9SSandy Huang #define DRM_MODE_TYPE_USERDEF	(1<<5)
21ccd843b9SSandy Huang #define DRM_MODE_TYPE_DRIVER	(1<<6)
2221016d27SAlgea Cao 
23b9e63a96SMark Yao /* Video mode flags */
24b9e63a96SMark Yao /* bit compatible with the xorg definitions. */
25b9e63a96SMark Yao #define DRM_MODE_FLAG_PHSYNC			(1 << 0)
26b9e63a96SMark Yao #define DRM_MODE_FLAG_NHSYNC			(1 << 1)
27b9e63a96SMark Yao #define DRM_MODE_FLAG_PVSYNC			(1 << 2)
28b9e63a96SMark Yao #define DRM_MODE_FLAG_NVSYNC			(1 << 3)
29b9e63a96SMark Yao #define DRM_MODE_FLAG_INTERLACE			(1 << 4)
30b9e63a96SMark Yao #define DRM_MODE_FLAG_DBLSCAN			(1 << 5)
31b9e63a96SMark Yao #define DRM_MODE_FLAG_CSYNC			(1 << 6)
32b9e63a96SMark Yao #define DRM_MODE_FLAG_PCSYNC			(1 << 7)
33b9e63a96SMark Yao #define DRM_MODE_FLAG_NCSYNC			(1 << 8)
34b9e63a96SMark Yao #define DRM_MODE_FLAG_HSKEW			(1 << 9) /* hskew provided */
35b9e63a96SMark Yao #define DRM_MODE_FLAG_BCAST			(1 << 10)
36b9e63a96SMark Yao #define DRM_MODE_FLAG_PIXMUX			(1 << 11)
37b9e63a96SMark Yao #define DRM_MODE_FLAG_DBLCLK			(1 << 12)
38b9e63a96SMark Yao #define DRM_MODE_FLAG_CLKDIV2			(1 << 13)
398e2bab3fSAlgea Cao #define DRM_MODE_FLAG_PPIXDATA                  BIT(31)
40b9e63a96SMark Yao 
41*ffa55e18SShixiang Zheng /* Panel Mirror control */
42*ffa55e18SShixiang Zheng #define DRM_MODE_FLAG_XMIRROR			(1<<28)
43*ffa55e18SShixiang Zheng #define DRM_MODE_FLAG_YMIRROR			(1<<29)
44*ffa55e18SShixiang Zheng #define DRM_MODE_FLAG_XYMIRROR			(DRM_MODE_FLAG_XMIRROR | DRM_MODE_FLAG_YMIRROR)
45*ffa55e18SShixiang Zheng 
46b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_Unknown	0
47b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_VGA		1
48b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_DVII		2
49b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_DVID		3
50b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_DVIA		4
51b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_Composite	5
52b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_SVIDEO	6
53b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_LVDS		7
54b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_Component	8
55b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_9PinDIN	9
56b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_DisplayPort	10
57b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_HDMIA	11
58b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_HDMIB	12
59b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_TV		13
60b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_eDP		14
61b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_VIRTUAL      15
62b9e63a96SMark Yao #define DRM_MODE_CONNECTOR_DSI		16
63b9e63a96SMark Yao 
64b9e63a96SMark Yao #define DRM_EDID_PT_HSYNC_POSITIVE (1 << 1)
65b9e63a96SMark Yao #define DRM_EDID_PT_VSYNC_POSITIVE (1 << 2)
66b9e63a96SMark Yao #define DRM_EDID_PT_SEPARATE_SYNC  (3 << 3)
67b9e63a96SMark Yao #define DRM_EDID_PT_STEREO         (1 << 5)
68b9e63a96SMark Yao #define DRM_EDID_PT_INTERLACED     (1 << 7)
69b9e63a96SMark Yao 
7079feefb1SSandy Huang /* see also http://vektor.theorem.ca/graphics/ycbcr/ */
7179feefb1SSandy Huang enum v4l2_colorspace {
7279feefb1SSandy Huang 	/*
7379feefb1SSandy Huang 	 * Default colorspace, i.e. let the driver figure it out.
7479feefb1SSandy Huang 	 * Can only be used with video capture.
7579feefb1SSandy Huang 	 */
7679feefb1SSandy Huang 	V4L2_COLORSPACE_DEFAULT       = 0,
7779feefb1SSandy Huang 
7879feefb1SSandy Huang 	/* SMPTE 170M: used for broadcast NTSC/PAL SDTV */
7979feefb1SSandy Huang 	V4L2_COLORSPACE_SMPTE170M     = 1,
8079feefb1SSandy Huang 
8179feefb1SSandy Huang 	/* Obsolete pre-1998 SMPTE 240M HDTV standard, superseded by Rec 709 */
8279feefb1SSandy Huang 	V4L2_COLORSPACE_SMPTE240M     = 2,
8379feefb1SSandy Huang 
8479feefb1SSandy Huang 	/* Rec.709: used for HDTV */
8579feefb1SSandy Huang 	V4L2_COLORSPACE_REC709        = 3,
8679feefb1SSandy Huang 
8779feefb1SSandy Huang 	/*
8879feefb1SSandy Huang 	 * Deprecated, do not use. No driver will ever return this. This was
8979feefb1SSandy Huang 	 * based on a misunderstanding of the bt878 datasheet.
9079feefb1SSandy Huang 	 */
9179feefb1SSandy Huang 	V4L2_COLORSPACE_BT878         = 4,
9279feefb1SSandy Huang 
9379feefb1SSandy Huang 	/*
9479feefb1SSandy Huang 	 * NTSC 1953 colorspace. This only makes sense when dealing with
9579feefb1SSandy Huang 	 * really, really old NTSC recordings. Superseded by SMPTE 170M.
9679feefb1SSandy Huang 	 */
9779feefb1SSandy Huang 	V4L2_COLORSPACE_470_SYSTEM_M  = 5,
9879feefb1SSandy Huang 
9979feefb1SSandy Huang 	/*
10079feefb1SSandy Huang 	 * EBU Tech 3213 PAL/SECAM colorspace. This only makes sense when
10179feefb1SSandy Huang 	 * dealing with really old PAL/SECAM recordings. Superseded by
10279feefb1SSandy Huang 	 * SMPTE 170M.
10379feefb1SSandy Huang 	 */
10479feefb1SSandy Huang 	V4L2_COLORSPACE_470_SYSTEM_BG = 6,
10579feefb1SSandy Huang 
10679feefb1SSandy Huang 	/*
10779feefb1SSandy Huang 	 * Effectively shorthand for V4L2_COLORSPACE_SRGB, V4L2_YCBCR_ENC_601
10879feefb1SSandy Huang 	 * and V4L2_QUANTIZATION_FULL_RANGE. To be used for (Motion-)JPEG.
10979feefb1SSandy Huang 	 */
11079feefb1SSandy Huang 	V4L2_COLORSPACE_JPEG          = 7,
11179feefb1SSandy Huang 
11279feefb1SSandy Huang 	/* For RGB colorspaces such as produces by most webcams. */
11379feefb1SSandy Huang 	V4L2_COLORSPACE_SRGB          = 8,
11479feefb1SSandy Huang 
11579feefb1SSandy Huang 	/* AdobeRGB colorspace */
11679feefb1SSandy Huang 	V4L2_COLORSPACE_ADOBERGB      = 9,
11779feefb1SSandy Huang 
11879feefb1SSandy Huang 	/* BT.2020 colorspace, used for UHDTV. */
11979feefb1SSandy Huang 	V4L2_COLORSPACE_BT2020        = 10,
12079feefb1SSandy Huang 
12179feefb1SSandy Huang 	/* Raw colorspace: for RAW unprocessed images */
12279feefb1SSandy Huang 	V4L2_COLORSPACE_RAW           = 11,
12379feefb1SSandy Huang 
12479feefb1SSandy Huang 	/* DCI-P3 colorspace, used by cinema projectors */
12579feefb1SSandy Huang 	V4L2_COLORSPACE_DCI_P3        = 12,
12679feefb1SSandy Huang };
12779feefb1SSandy Huang 
128ccd843b9SSandy Huang #define CRTC_INTERLACE_HALVE_V	(1 << 0) /* halve V values for interlacing */
129ccd843b9SSandy Huang #define CRTC_STEREO_DOUBLE	(1 << 1) /* adjust timings for stereo modes */
130ccd843b9SSandy Huang #define CRTC_NO_DBLSCAN		(1 << 2) /* don't adjust doublescan */
131ccd843b9SSandy Huang #define CRTC_NO_VSCAN		(1 << 3) /* don't adjust doublescan */
1328e2bab3fSAlgea Cao #define CRTC_STEREO_DOUBLE_ONLY	(CRTC_STEREO_DOUBLE | CRTC_NO_DBLSCAN | \
1338e2bab3fSAlgea Cao 				 CRTC_NO_VSCAN)
134ccd843b9SSandy Huang 
135ccd843b9SSandy Huang #define DRM_MODE_FLAG_3D_MAX	DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF
136ccd843b9SSandy Huang 
137b9e63a96SMark Yao struct drm_display_mode {
138b9e63a96SMark Yao 	/* Proposed mode values */
139b9e63a96SMark Yao 	int clock;		/* in kHz */
140b9e63a96SMark Yao 	int hdisplay;
141b9e63a96SMark Yao 	int hsync_start;
142b9e63a96SMark Yao 	int hsync_end;
143b9e63a96SMark Yao 	int htotal;
144b9e63a96SMark Yao 	int vdisplay;
145b9e63a96SMark Yao 	int vsync_start;
146b9e63a96SMark Yao 	int vsync_end;
147b9e63a96SMark Yao 	int vtotal;
148b9e63a96SMark Yao 	int vrefresh;
149b9e63a96SMark Yao 	int vscan;
150b9e63a96SMark Yao 	unsigned int flags;
15121016d27SAlgea Cao 	int picture_aspect_ratio;
152ccd843b9SSandy Huang 	int hskew;
153ccd843b9SSandy Huang 	unsigned int type;
154ccd843b9SSandy Huang 	/* Actual mode we give to hw */
155ccd843b9SSandy Huang 	int crtc_clock;         /* in KHz */
156ccd843b9SSandy Huang 	int crtc_hdisplay;
157ccd843b9SSandy Huang 	int crtc_hblank_start;
158ccd843b9SSandy Huang 	int crtc_hblank_end;
159ccd843b9SSandy Huang 	int crtc_hsync_start;
160ccd843b9SSandy Huang 	int crtc_hsync_end;
161ccd843b9SSandy Huang 	int crtc_htotal;
162ccd843b9SSandy Huang 	int crtc_hskew;
163ccd843b9SSandy Huang 	int crtc_vdisplay;
164ccd843b9SSandy Huang 	int crtc_vblank_start;
165ccd843b9SSandy Huang 	int crtc_vblank_end;
166ccd843b9SSandy Huang 	int crtc_vsync_start;
167ccd843b9SSandy Huang 	int crtc_vsync_end;
168ccd843b9SSandy Huang 	int crtc_vtotal;
1698e2bab3fSAlgea Cao 	bool invalid;
170b9e63a96SMark Yao };
171b9e63a96SMark Yao 
172b9e63a96SMark Yao #endif
173