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