1352ff8bdSFrançois Tigeot /*
2352ff8bdSFrançois Tigeot  * Copyright © 2014 Red Hat Inc.
3352ff8bdSFrançois Tigeot  *
4352ff8bdSFrançois Tigeot  * Permission is hereby granted, free of charge, to any person obtaining a
5352ff8bdSFrançois Tigeot  * copy of this software and associated documentation files (the "Software"),
6352ff8bdSFrançois Tigeot  * to deal in the Software without restriction, including without limitation
7352ff8bdSFrançois Tigeot  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8352ff8bdSFrançois Tigeot  * and/or sell copies of the Software, and to permit persons to whom the
9352ff8bdSFrançois Tigeot  * Software is furnished to do so, subject to the following conditions:
10352ff8bdSFrançois Tigeot  *
11352ff8bdSFrançois Tigeot  * The above copyright notice and this permission notice shall be included in
12352ff8bdSFrançois Tigeot  * all copies or substantial portions of the Software.
13352ff8bdSFrançois Tigeot  *
14352ff8bdSFrançois Tigeot  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15352ff8bdSFrançois Tigeot  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16352ff8bdSFrançois Tigeot  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17352ff8bdSFrançois Tigeot  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18352ff8bdSFrançois Tigeot  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19352ff8bdSFrançois Tigeot  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20352ff8bdSFrançois Tigeot  * OTHER DEALINGS IN THE SOFTWARE.
21352ff8bdSFrançois Tigeot  */
22352ff8bdSFrançois Tigeot #ifndef DRM_DISPLAYID_H
23352ff8bdSFrançois Tigeot #define DRM_DISPLAYID_H
24352ff8bdSFrançois Tigeot 
25352ff8bdSFrançois Tigeot #define DATA_BLOCK_PRODUCT_ID 0x00
26352ff8bdSFrançois Tigeot #define DATA_BLOCK_DISPLAY_PARAMETERS 0x01
27352ff8bdSFrançois Tigeot #define DATA_BLOCK_COLOR_CHARACTERISTICS 0x02
28352ff8bdSFrançois Tigeot #define DATA_BLOCK_TYPE_1_DETAILED_TIMING 0x03
29352ff8bdSFrançois Tigeot #define DATA_BLOCK_TYPE_2_DETAILED_TIMING 0x04
30352ff8bdSFrançois Tigeot #define DATA_BLOCK_TYPE_3_SHORT_TIMING 0x05
31352ff8bdSFrançois Tigeot #define DATA_BLOCK_TYPE_4_DMT_TIMING 0x06
32352ff8bdSFrançois Tigeot #define DATA_BLOCK_VESA_TIMING 0x07
33352ff8bdSFrançois Tigeot #define DATA_BLOCK_CEA_TIMING 0x08
34352ff8bdSFrançois Tigeot #define DATA_BLOCK_VIDEO_TIMING_RANGE 0x09
35352ff8bdSFrançois Tigeot #define DATA_BLOCK_PRODUCT_SERIAL_NUMBER 0x0a
36352ff8bdSFrançois Tigeot #define DATA_BLOCK_GP_ASCII_STRING 0x0b
37352ff8bdSFrançois Tigeot #define DATA_BLOCK_DISPLAY_DEVICE_DATA 0x0c
38352ff8bdSFrançois Tigeot #define DATA_BLOCK_INTERFACE_POWER_SEQUENCING 0x0d
39352ff8bdSFrançois Tigeot #define DATA_BLOCK_TRANSFER_CHARACTERISTICS 0x0e
40352ff8bdSFrançois Tigeot #define DATA_BLOCK_DISPLAY_INTERFACE 0x0f
41352ff8bdSFrançois Tigeot #define DATA_BLOCK_STEREO_DISPLAY_INTERFACE 0x10
42352ff8bdSFrançois Tigeot #define DATA_BLOCK_TILED_DISPLAY 0x12
43352ff8bdSFrançois Tigeot 
44352ff8bdSFrançois Tigeot #define DATA_BLOCK_VENDOR_SPECIFIC 0x7f
45352ff8bdSFrançois Tigeot 
46352ff8bdSFrançois Tigeot #define PRODUCT_TYPE_EXTENSION 0
47352ff8bdSFrançois Tigeot #define PRODUCT_TYPE_TEST 1
48352ff8bdSFrançois Tigeot #define PRODUCT_TYPE_PANEL 2
49352ff8bdSFrançois Tigeot #define PRODUCT_TYPE_MONITOR 3
50352ff8bdSFrançois Tigeot #define PRODUCT_TYPE_TV 4
51352ff8bdSFrançois Tigeot #define PRODUCT_TYPE_REPEATER 5
52352ff8bdSFrançois Tigeot #define PRODUCT_TYPE_DIRECT_DRIVE 6
53352ff8bdSFrançois Tigeot 
54352ff8bdSFrançois Tigeot struct displayid_hdr {
55352ff8bdSFrançois Tigeot 	u8 rev;
56352ff8bdSFrançois Tigeot 	u8 bytes;
57352ff8bdSFrançois Tigeot 	u8 prod_id;
58352ff8bdSFrançois Tigeot 	u8 ext_count;
59352ff8bdSFrançois Tigeot } __packed;
60352ff8bdSFrançois Tigeot 
61352ff8bdSFrançois Tigeot struct displayid_block {
62352ff8bdSFrançois Tigeot 	u8 tag;
63352ff8bdSFrançois Tigeot 	u8 rev;
64352ff8bdSFrançois Tigeot 	u8 num_bytes;
65352ff8bdSFrançois Tigeot } __packed;
66352ff8bdSFrançois Tigeot 
67352ff8bdSFrançois Tigeot struct displayid_tiled_block {
68352ff8bdSFrançois Tigeot 	struct displayid_block base;
69352ff8bdSFrançois Tigeot 	u8 tile_cap;
70352ff8bdSFrançois Tigeot 	u8 topo[3];
71352ff8bdSFrançois Tigeot 	u8 tile_size[4];
72352ff8bdSFrançois Tigeot 	u8 tile_pixel_bezel[5];
73352ff8bdSFrançois Tigeot 	u8 topology_id[8];
74352ff8bdSFrançois Tigeot } __packed;
75352ff8bdSFrançois Tigeot 
76*8621f407SFrançois Tigeot struct displayid_detailed_timings_1 {
77*8621f407SFrançois Tigeot 	u8 pixel_clock[3];
78*8621f407SFrançois Tigeot 	u8 flags;
79*8621f407SFrançois Tigeot 	u8 hactive[2];
80*8621f407SFrançois Tigeot 	u8 hblank[2];
81*8621f407SFrançois Tigeot 	u8 hsync[2];
82*8621f407SFrançois Tigeot 	u8 hsw[2];
83*8621f407SFrançois Tigeot 	u8 vactive[2];
84*8621f407SFrançois Tigeot 	u8 vblank[2];
85*8621f407SFrançois Tigeot 	u8 vsync[2];
86*8621f407SFrançois Tigeot 	u8 vsw[2];
87*8621f407SFrançois Tigeot } __packed;
88*8621f407SFrançois Tigeot 
89*8621f407SFrançois Tigeot struct displayid_detailed_timing_block {
90*8621f407SFrançois Tigeot 	struct displayid_block base;
91*8621f407SFrançois Tigeot 	struct displayid_detailed_timings_1 timings[0];
92*8621f407SFrançois Tigeot };
93352ff8bdSFrançois Tigeot #endif
94