xref: /openbsd-src/sys/dev/pci/drm/amd/include/displayobject.h (revision fb4d85023675bc7da402da96b2bb84fd12905dbf)
1*fb4d8502Sjsg /****************************************************************************\
2*fb4d8502Sjsg *
3*fb4d8502Sjsg *  Module Name    displayobjectsoc15.h
4*fb4d8502Sjsg *  Project
5*fb4d8502Sjsg *  Device
6*fb4d8502Sjsg *
7*fb4d8502Sjsg *  Description    Contains the common definitions for display objects for SoC15 products.
8*fb4d8502Sjsg *
9*fb4d8502Sjsg *  Copyright 2014 Advanced Micro Devices, Inc.
10*fb4d8502Sjsg *
11*fb4d8502Sjsg * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
12*fb4d8502Sjsg * and associated documentation files (the "Software"), to deal in the Software without restriction,
13*fb4d8502Sjsg * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
14*fb4d8502Sjsg * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
15*fb4d8502Sjsg * subject to the following conditions:
16*fb4d8502Sjsg *
17*fb4d8502Sjsg * The above copyright notice and this permission notice shall be included in all copies or substantial
18*fb4d8502Sjsg * portions of the Software.
19*fb4d8502Sjsg *
20*fb4d8502Sjsg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21*fb4d8502Sjsg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22*fb4d8502Sjsg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
23*fb4d8502Sjsg * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
24*fb4d8502Sjsg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25*fb4d8502Sjsg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26*fb4d8502Sjsg * OTHER DEALINGS IN THE SOFTWARE.
27*fb4d8502Sjsg *
28*fb4d8502Sjsg \****************************************************************************/
29*fb4d8502Sjsg #ifndef _DISPLAY_OBJECT_SOC15_H_
30*fb4d8502Sjsg #define _DISPLAY_OBJECT_SOC15_H_
31*fb4d8502Sjsg 
32*fb4d8502Sjsg #if defined(_X86_)
33*fb4d8502Sjsg #pragma pack(1)
34*fb4d8502Sjsg #endif
35*fb4d8502Sjsg 
36*fb4d8502Sjsg 
37*fb4d8502Sjsg /****************************************************
38*fb4d8502Sjsg * Display Object Type Definition
39*fb4d8502Sjsg *****************************************************/
40*fb4d8502Sjsg enum display_object_type{
41*fb4d8502Sjsg DISPLAY_OBJECT_TYPE_NONE						=0x00,
42*fb4d8502Sjsg DISPLAY_OBJECT_TYPE_GPU							=0x01,
43*fb4d8502Sjsg DISPLAY_OBJECT_TYPE_ENCODER						=0x02,
44*fb4d8502Sjsg DISPLAY_OBJECT_TYPE_CONNECTOR					=0x03
45*fb4d8502Sjsg };
46*fb4d8502Sjsg 
47*fb4d8502Sjsg /****************************************************
48*fb4d8502Sjsg * Encorder Object Type Definition
49*fb4d8502Sjsg *****************************************************/
50*fb4d8502Sjsg enum encoder_object_type{
51*fb4d8502Sjsg ENCODER_OBJECT_ID_NONE							 =0x00,
52*fb4d8502Sjsg ENCODER_OBJECT_ID_INTERNAL_UNIPHY				 =0x01,
53*fb4d8502Sjsg ENCODER_OBJECT_ID_INTERNAL_UNIPHY1				 =0x02,
54*fb4d8502Sjsg ENCODER_OBJECT_ID_INTERNAL_UNIPHY2				 =0x03,
55*fb4d8502Sjsg };
56*fb4d8502Sjsg 
57*fb4d8502Sjsg 
58*fb4d8502Sjsg /****************************************************
59*fb4d8502Sjsg * Connector Object ID Definition
60*fb4d8502Sjsg *****************************************************/
61*fb4d8502Sjsg 
62*fb4d8502Sjsg enum connector_object_type{
63*fb4d8502Sjsg CONNECTOR_OBJECT_ID_NONE						  =0x00,
64*fb4d8502Sjsg CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D			  =0x01,
65*fb4d8502Sjsg CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D				  =0x02,
66*fb4d8502Sjsg CONNECTOR_OBJECT_ID_HDMI_TYPE_A					  =0x03,
67*fb4d8502Sjsg CONNECTOR_OBJECT_ID_LVDS						  =0x04,
68*fb4d8502Sjsg CONNECTOR_OBJECT_ID_DISPLAYPORT					  =0x05,
69*fb4d8502Sjsg CONNECTOR_OBJECT_ID_eDP							  =0x06,
70*fb4d8502Sjsg CONNECTOR_OBJECT_ID_OPM							  =0x07
71*fb4d8502Sjsg };
72*fb4d8502Sjsg 
73*fb4d8502Sjsg 
74*fb4d8502Sjsg /****************************************************
75*fb4d8502Sjsg * Protection Object ID Definition
76*fb4d8502Sjsg *****************************************************/
77*fb4d8502Sjsg //No need
78*fb4d8502Sjsg 
79*fb4d8502Sjsg /****************************************************
80*fb4d8502Sjsg *  Object ENUM ID Definition
81*fb4d8502Sjsg *****************************************************/
82*fb4d8502Sjsg 
83*fb4d8502Sjsg enum object_enum_id{
84*fb4d8502Sjsg OBJECT_ENUM_ID1									  =0x01,
85*fb4d8502Sjsg OBJECT_ENUM_ID2									  =0x02,
86*fb4d8502Sjsg OBJECT_ENUM_ID3									  =0x03,
87*fb4d8502Sjsg OBJECT_ENUM_ID4									  =0x04,
88*fb4d8502Sjsg OBJECT_ENUM_ID5									  =0x05,
89*fb4d8502Sjsg OBJECT_ENUM_ID6									  =0x06
90*fb4d8502Sjsg };
91*fb4d8502Sjsg 
92*fb4d8502Sjsg /****************************************************
93*fb4d8502Sjsg *Object ID Bit definition
94*fb4d8502Sjsg *****************************************************/
95*fb4d8502Sjsg enum object_id_bit{
96*fb4d8502Sjsg OBJECT_ID_MASK									  =0x00FF,
97*fb4d8502Sjsg ENUM_ID_MASK									  =0x0F00,
98*fb4d8502Sjsg OBJECT_TYPE_MASK								  =0xF000,
99*fb4d8502Sjsg OBJECT_ID_SHIFT									  =0x00,
100*fb4d8502Sjsg ENUM_ID_SHIFT									  =0x08,
101*fb4d8502Sjsg OBJECT_TYPE_SHIFT								  =0x0C
102*fb4d8502Sjsg };
103*fb4d8502Sjsg 
104*fb4d8502Sjsg 
105*fb4d8502Sjsg /****************************************************
106*fb4d8502Sjsg * GPU Object definition - Shared with BIOS
107*fb4d8502Sjsg *****************************************************/
108*fb4d8502Sjsg enum gpu_objet_def{
109*fb4d8502Sjsg GPU_ENUM_ID1                            =( DISPLAY_OBJECT_TYPE_GPU << OBJECT_TYPE_SHIFT | OBJECT_ENUM_ID1 << ENUM_ID_SHIFT)
110*fb4d8502Sjsg };
111*fb4d8502Sjsg 
112*fb4d8502Sjsg /****************************************************
113*fb4d8502Sjsg * Encoder Object definition - Shared with BIOS
114*fb4d8502Sjsg *****************************************************/
115*fb4d8502Sjsg 
116*fb4d8502Sjsg enum encoder_objet_def{
117*fb4d8502Sjsg ENCODER_INTERNAL_UNIPHY_ENUM_ID1         =( DISPLAY_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
118*fb4d8502Sjsg                                                  OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
119*fb4d8502Sjsg                                                  ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT),
120*fb4d8502Sjsg 
121*fb4d8502Sjsg ENCODER_INTERNAL_UNIPHY_ENUM_ID2         =( DISPLAY_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
122*fb4d8502Sjsg                                                  OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
123*fb4d8502Sjsg                                                  ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT),
124*fb4d8502Sjsg 
125*fb4d8502Sjsg ENCODER_INTERNAL_UNIPHY1_ENUM_ID1        =( DISPLAY_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
126*fb4d8502Sjsg                                                  OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
127*fb4d8502Sjsg                                                  ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT),
128*fb4d8502Sjsg 
129*fb4d8502Sjsg ENCODER_INTERNAL_UNIPHY1_ENUM_ID2        =( DISPLAY_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
130*fb4d8502Sjsg                                                  OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
131*fb4d8502Sjsg                                                  ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT),
132*fb4d8502Sjsg 
133*fb4d8502Sjsg ENCODER_INTERNAL_UNIPHY2_ENUM_ID1        =( DISPLAY_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
134*fb4d8502Sjsg                                                  OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
135*fb4d8502Sjsg                                                  ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT),
136*fb4d8502Sjsg 
137*fb4d8502Sjsg ENCODER_INTERNAL_UNIPHY2_ENUM_ID2        =( DISPLAY_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
138*fb4d8502Sjsg                                                  OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
139*fb4d8502Sjsg                                                  ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
140*fb4d8502Sjsg };
141*fb4d8502Sjsg 
142*fb4d8502Sjsg 
143*fb4d8502Sjsg /****************************************************
144*fb4d8502Sjsg * Connector Object definition - Shared with BIOS
145*fb4d8502Sjsg *****************************************************/
146*fb4d8502Sjsg 
147*fb4d8502Sjsg 
148*fb4d8502Sjsg enum connector_objet_def{
149*fb4d8502Sjsg CONNECTOR_LVDS_ENUM_ID1							=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
150*fb4d8502Sjsg                                                  OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
151*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_LVDS << OBJECT_ID_SHIFT),
152*fb4d8502Sjsg 
153*fb4d8502Sjsg 
154*fb4d8502Sjsg CONNECTOR_eDP_ENUM_ID1							=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
155*fb4d8502Sjsg                                                  OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
156*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_eDP << OBJECT_ID_SHIFT),
157*fb4d8502Sjsg 
158*fb4d8502Sjsg CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID1			=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
159*fb4d8502Sjsg                                                  OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
160*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT),
161*fb4d8502Sjsg 
162*fb4d8502Sjsg CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID2			=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
163*fb4d8502Sjsg                                                  OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
164*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT),
165*fb4d8502Sjsg 
166*fb4d8502Sjsg 
167*fb4d8502Sjsg CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID1				=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
168*fb4d8502Sjsg                                                  OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
169*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT),
170*fb4d8502Sjsg 
171*fb4d8502Sjsg CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID2				=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
172*fb4d8502Sjsg                                                  OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
173*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT),
174*fb4d8502Sjsg 
175*fb4d8502Sjsg CONNECTOR_HDMI_TYPE_A_ENUM_ID1					=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
176*fb4d8502Sjsg                                                  OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
177*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT),
178*fb4d8502Sjsg 
179*fb4d8502Sjsg CONNECTOR_HDMI_TYPE_A_ENUM_ID2					=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
180*fb4d8502Sjsg                                                  OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
181*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT),
182*fb4d8502Sjsg 
183*fb4d8502Sjsg CONNECTOR_DISPLAYPORT_ENUM_ID1					=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
184*fb4d8502Sjsg                                                  OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
185*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT),
186*fb4d8502Sjsg 
187*fb4d8502Sjsg CONNECTOR_DISPLAYPORT_ENUM_ID2					=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
188*fb4d8502Sjsg                                                  OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
189*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT),
190*fb4d8502Sjsg 
191*fb4d8502Sjsg CONNECTOR_DISPLAYPORT_ENUM_ID3					=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
192*fb4d8502Sjsg                                                  OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
193*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT),
194*fb4d8502Sjsg 
195*fb4d8502Sjsg CONNECTOR_DISPLAYPORT_ENUM_ID4					=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
196*fb4d8502Sjsg                                                  OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\
197*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT),
198*fb4d8502Sjsg 
199*fb4d8502Sjsg CONNECTOR_OPM_ENUM_ID1							=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
200*fb4d8502Sjsg                                                  OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
201*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_OPM << OBJECT_ID_SHIFT),          //Mapping to MXM_DP_A
202*fb4d8502Sjsg 
203*fb4d8502Sjsg CONNECTOR_OPM_ENUM_ID2							=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
204*fb4d8502Sjsg                                                  OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
205*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_OPM << OBJECT_ID_SHIFT),          //Mapping to MXM_DP_B
206*fb4d8502Sjsg 
207*fb4d8502Sjsg CONNECTOR_OPM_ENUM_ID3							=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
208*fb4d8502Sjsg                                                  OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
209*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_OPM << OBJECT_ID_SHIFT),          //Mapping to MXM_DP_C
210*fb4d8502Sjsg 
211*fb4d8502Sjsg CONNECTOR_OPM_ENUM_ID4							=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
212*fb4d8502Sjsg                                                  OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\
213*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_OPM << OBJECT_ID_SHIFT),          //Mapping to MXM_DP_D
214*fb4d8502Sjsg 
215*fb4d8502Sjsg CONNECTOR_OPM_ENUM_ID5							=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
216*fb4d8502Sjsg                                                  OBJECT_ENUM_ID5 << ENUM_ID_SHIFT |\
217*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_OPM << OBJECT_ID_SHIFT),          //Mapping to MXM_LVDS_TXxx
218*fb4d8502Sjsg 
219*fb4d8502Sjsg 
220*fb4d8502Sjsg CONNECTOR_OPM_ENUM_ID6							=( DISPLAY_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
221*fb4d8502Sjsg                                                  OBJECT_ENUM_ID6 << ENUM_ID_SHIFT |\
222*fb4d8502Sjsg                                                  CONNECTOR_OBJECT_ID_OPM << OBJECT_ID_SHIFT)         //Mapping to MXM_LVDS_TXxx
223*fb4d8502Sjsg };
224*fb4d8502Sjsg 
225*fb4d8502Sjsg /****************************************************
226*fb4d8502Sjsg * Router Object ID definition - Shared with BIOS
227*fb4d8502Sjsg *****************************************************/
228*fb4d8502Sjsg //No Need, in future we ever need, we can define a record in atomfirwareSoC15.h associated with an object that has this router
229*fb4d8502Sjsg 
230*fb4d8502Sjsg 
231*fb4d8502Sjsg /****************************************************
232*fb4d8502Sjsg * PROTECTION Object ID definition - Shared with BIOS
233*fb4d8502Sjsg *****************************************************/
234*fb4d8502Sjsg //No need,in future we ever need, all display path are capable of protection now.
235*fb4d8502Sjsg 
236*fb4d8502Sjsg /****************************************************
237*fb4d8502Sjsg * Generic Object ID definition - Shared with BIOS
238*fb4d8502Sjsg *****************************************************/
239*fb4d8502Sjsg //No need, in future we ever need like GLsync, we can define a record in atomfirwareSoC15.h associated with an object.
240*fb4d8502Sjsg 
241*fb4d8502Sjsg 
242*fb4d8502Sjsg #if defined(_X86_)
243*fb4d8502Sjsg #pragma pack()
244*fb4d8502Sjsg #endif
245*fb4d8502Sjsg 
246*fb4d8502Sjsg #endif
247*fb4d8502Sjsg 
248*fb4d8502Sjsg 
249*fb4d8502Sjsg 
250