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