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