blob: 70aa5959440f69cb95b2dd617ba43ba8af1f8be0 [file] [log] [blame]
Frank Vibrans2b4c8312011-02-14 18:30:54 +00001/* $NoKeywords:$ */
2/**
3 * @file
4 *
5 * Service procedure to initialize Integrated Info Table
6 *
7 *
8 *
9 * @xrefitem bom "File Content Label" "Release Content"
10 * @e project: AGESA
11 * @e sub-project: GNB
12 * @e \$Revision: 38950 $ @e \$Date: 2010-10-03 23:49:09 -0700 (Sun, 03 Oct 2010) $
13 *
14 */
15/*
16 *****************************************************************************
17 *
18 * Copyright (c) 2011, Advanced Micro Devices, Inc.
19 * All rights reserved.
Edward O'Callaghan1542a6f2014-07-06 19:24:06 +100020 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000021 * Redistribution and use in source and binary forms, with or without
22 * modification, are permitted provided that the following conditions are met:
23 * * Redistributions of source code must retain the above copyright
24 * notice, this list of conditions and the following disclaimer.
25 * * Redistributions in binary form must reproduce the above copyright
26 * notice, this list of conditions and the following disclaimer in the
27 * documentation and/or other materials provided with the distribution.
Edward O'Callaghan1542a6f2014-07-06 19:24:06 +100028 * * Neither the name of Advanced Micro Devices, Inc. nor the names of
29 * its contributors may be used to endorse or promote products derived
Frank Vibrans2b4c8312011-02-14 18:30:54 +000030 * from this software without specific prior written permission.
Edward O'Callaghan1542a6f2014-07-06 19:24:06 +100031 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000032 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
33 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
35 * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
36 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
37 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
38 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
39 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
40 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
41 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Edward O'Callaghan1542a6f2014-07-06 19:24:06 +100042 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000043 * ***************************************************************************
44 *
45 */
46
47
48/*----------------------------------------------------------------------------------------
49 * M O D U L E S U S E D
50 *----------------------------------------------------------------------------------------
51 */
52#include "AGESA.h"
53#include "Ids.h"
54#include "amdlib.h"
55#include "Gnb.h"
56#include "GnbPcie.h"
57#include "GnbGfx.h"
58#include GNB_MODULE_DEFINITIONS (GnbCommonLib)
59#include GNB_MODULE_DEFINITIONS (GnbPcieInitLibV1)
60#include GNB_MODULE_DEFINITIONS (GnbPcieConfig)
61#include "GnbGfxFamServices.h"
efdesign9884cbce22011-08-04 12:09:17 -060062#include "GfxEnumConnectors.h"
Frank Vibrans2b4c8312011-02-14 18:30:54 +000063#include "GnbRegistersON.h"
64#include "Filecode.h"
65#define FILECODE PROC_GNB_MODULES_GNBGFXINITLIBV1_GFXENUMCONNECTORS_FILECODE
66/*----------------------------------------------------------------------------------------
67 * D E F I N I T I O N S A N D M A C R O S
68 *----------------------------------------------------------------------------------------
69 */
70
71
72
73/*----------------------------------------------------------------------------------------
74 * T Y P E D E F S A N D S T R U C T U R E S
75 *----------------------------------------------------------------------------------------
76 */
77
78
79typedef struct {
80 PCIE_CONNECTOR_TYPE ConnectorType;
81 UINT8 DisplayDeviceEnum;
82 UINT16 ConnectorEnum;
83 UINT16 EncoderEnum;
84 UINT8 ConnectorIndex;
85} EXT_CONNECTOR_INFO;
86
87typedef struct {
88 UINT8 DisplayDeviceEnum;
89 UINT8 DeviceIndex;
90 UINT16 DeviceTag;
91 UINT16 DeviceAcpiEnum;
92} EXT_DISPLAY_DEVICE_INFO;
93
94typedef struct {
95 AGESA_STATUS Status;
96 UINT8 DisplayDeviceEnum;
97 UINT8 RequestedPriorityIndex;
98 UINT8 CurrentPriorityIndex;
99 PCIe_ENGINE_CONFIG *Engine;
100} CONNECTOR_ENUM_INFO;
101
102
103/*----------------------------------------------------------------------------------------
104 * P R O T O T Y P E S O F L O C A L F U N C T I O N S
105 *----------------------------------------------------------------------------------------
106 */
107
efdesign9884cbce22011-08-04 12:09:17 -0600108EXT_CONNECTOR_INFO*
109GfxIntegratedExtConnectorInfo (
110 IN UINT8 ConnectorType
111 );
112
113EXT_DISPLAY_DEVICE_INFO*
114GfxIntegratedExtDisplayDeviceInfo (
115 IN UINT8 DisplayDeviceEnum,
116 IN UINT8 DisplayDeviceIndex
117 );
118
Frank Vibrans2b4c8312011-02-14 18:30:54 +0000119AGESA_STATUS
120GfxIntegratedEnumConnectorsForDevice (
121 IN UINT8 DisplayDeviceEnum,
122 OUT EXT_DISPLAY_PATH *DisplayPathList,
123 IN OUT PCIe_PLATFORM_CONFIG *Pcie,
124 IN GFX_PLATFORM_CONFIG *Gfx
125 );
126
127VOID
128GfxIntegratedDebugDumpDisplayPath (
129 IN EXT_DISPLAY_PATH *DisplayPath,
130 IN GFX_PLATFORM_CONFIG *Gfx
131 );
132
133
134
135EXT_CONNECTOR_INFO ConnectorInfoTable[] = {
136 {
137 ConnectorTypeDP,
138 DEVICE_DFP,
139 CONNECTOR_DISPLAYPORT_ENUM,
140 ENCODER_NOT_PRESENT,
141 0,
142 },
143 {
144 ConnectorTypeEDP,
145 DEVICE_LCD,
146 CONNECTOR_eDP_ENUM,
147 ENCODER_NOT_PRESENT,
148 1
149 },
150 {
151 ConnectorTypeSingleLinkDVI,
152 DEVICE_DFP,
153 CONNECTOR_SINGLE_LINK_DVI_D_ENUM,
154 ENCODER_NOT_PRESENT,
155 2
156 },
157 {
158 ConnectorTypeDualLinkDVI,
159 DEVICE_DFP,
160 CONNECTOR_DUAL_LINK_DVI_D_ENUM,
161 ENCODER_NOT_PRESENT,
162 3
163 },
164 {
165 ConnectorTypeHDMI,
166 DEVICE_DFP,
167 CONNECTOR_HDMI_TYPE_A_ENUM,
168 ENCODER_NOT_PRESENT,
169 4
170 },
171 {
172 ConnectorTypeTravisDpToVga,
173 DEVICE_CRT,
174 CONNECTOR_VGA_ENUM,
175 ENCODER_TRAVIS_ENUM_ID1,
176 5
177 },
178 {
179 ConnectorTypeTravisDpToLvds,
180 DEVICE_LCD,
181 CONNECTOR_LVDS_ENUM,
182 ENCODER_TRAVIS_ENUM_ID2,
183 6
184 },
185 {
186 ConnectorTypeNutmegDpToVga,
187 DEVICE_CRT,
188 CONNECTOR_VGA_ENUM,
189 ENCODER_ALMOND_ENUM_ID1,
190 5
191 },
192 {
193 ConnectorTypeSingleLinkDviI,
194 DEVICE_DFP,
195 CONNECTOR_SINGLE_LINK_DVI_I_ENUM,
196 ENCODER_NOT_PRESENT,
197 5
198 },
199 {
200 ConnectorTypeCrt,
201 DEVICE_CRT,
202 CONNECTOR_VGA_ENUM,
203 ENCODER_NOT_PRESENT,
204 5
205 },
206 {
207 ConnectorTypeLvds,
208 DEVICE_LCD,
209 CONNECTOR_LVDS_ENUM,
210 ENCODER_NOT_PRESENT,
211 6
212 },
213 {
214 ConnectorTypeAutoDetect,
215 DEVICE_LCD,
216 CONNECTOR_LVDS_eDP_ENUM,
217 ENCODER_TRAVIS_ENUM_ID2,
218 7
219 }
220};
221
222UINT8 ConnectorNumerArray[] = {
223// DP eDP SDVI-D DDVI-D HDMI VGA LVDS Auto (eDP, LVDS, Travis LVDS)
224 6, 1, 6, 6, 6, 1, 1, 2
225};
226/*----------------------------------------------------------------------------------------*/
227/**
228 * Enumerate all display connectors for specific display device type.
229 *
230 *
231 *
232 * @param[in] ConnectorType Connector type (see PCIe_DDI_DATA::ConnectorType).
233 * @retval Pointer to EXT_CONNECTOR_INFO
234 * @retval NULL if connector type unknown.
235 */
236EXT_CONNECTOR_INFO*
237GfxIntegratedExtConnectorInfo (
238 IN UINT8 ConnectorType
239 )
240{
241 UINTN Index;
242 for (Index = 0; Index < (sizeof (ConnectorInfoTable) / sizeof (EXT_CONNECTOR_INFO)); Index++) {
243 if (ConnectorInfoTable[Index].ConnectorType == ConnectorType) {
244 return &ConnectorInfoTable[Index];
245 }
246 }
247 return NULL;
248}
249
250EXT_DISPLAY_DEVICE_INFO DisplayDeviceInfoTable[] = {
251 {
252 DEVICE_CRT,
253 1,
254 ATOM_DEVICE_CRT1_SUPPORT,
255 0x100,
256 },
257 {
258 DEVICE_LCD,
259 1,
260 ATOM_DEVICE_LCD1_SUPPORT,
261 0x110,
262 },
263 {
264 DEVICE_DFP,
265 1,
266 ATOM_DEVICE_DFP1_SUPPORT,
267 0x210,
268 },
269 {
270 DEVICE_DFP,
271 2,
272 ATOM_DEVICE_DFP2_SUPPORT,
273 0x220,
274 },
275 {
276 DEVICE_DFP,
277 3,
278 ATOM_DEVICE_DFP3_SUPPORT,
279 0x230,
280 },
281 {
282 DEVICE_DFP,
283 4,
284 ATOM_DEVICE_DFP4_SUPPORT,
285 0x240,
286 },
287 {
288 DEVICE_DFP,
289 5,
290 ATOM_DEVICE_DFP5_SUPPORT,
291 0x250,
292 },
293 {
294 DEVICE_DFP,
295 6,
296 ATOM_DEVICE_DFP6_SUPPORT,
297 0x260,
298 }
299};
300/*----------------------------------------------------------------------------------------*/
301/**
302 * Enumerate all display connectors for specific display device type.
303 *
304 *
305 *
306 * @param[in] DisplayDeviceEnum Display device enum
307 * @param[in] DisplayDeviceIndex Display device index
308 * @retval Pointer to EXT_DISPLAY_DEVICE_INFO
309 * @retval NULL if can not get display device info
310 */
311EXT_DISPLAY_DEVICE_INFO*
312GfxIntegratedExtDisplayDeviceInfo (
313 IN UINT8 DisplayDeviceEnum,
314 IN UINT8 DisplayDeviceIndex
315 )
316{
317 UINT8 Index;
318 UINT8 LastIndex;
319 LastIndex = 0xff;
320 for (Index = 0; Index < (sizeof (DisplayDeviceInfoTable) / sizeof (EXT_DISPLAY_DEVICE_INFO)); Index++) {
321 if (DisplayDeviceInfoTable[Index].DisplayDeviceEnum == DisplayDeviceEnum) {
322 LastIndex = Index;
323 if (DisplayDeviceInfoTable[Index].DeviceIndex == DisplayDeviceIndex) {
324 return &DisplayDeviceInfoTable[Index];
325 }
326 }
327 }
328 if (DisplayDeviceEnum == DEVICE_LCD && LastIndex != 0xff) {
329 return &DisplayDeviceInfoTable[LastIndex];
330 }
331 return NULL;
332}
333
334/*----------------------------------------------------------------------------------------*/
335/**
336 * Enumerate all display connectors
337 *
338 *
339 *
340 * @param[out] DisplayPathList Display path list
341 * @param[in,out] Pcie PCIe platform configuration info
342 * @param[in] Gfx Gfx configuration info
343 */
344AGESA_STATUS
345GfxIntegratedEnumerateAllConnectors (
346 OUT EXT_DISPLAY_PATH *DisplayPathList,
347 IN OUT PCIe_PLATFORM_CONFIG *Pcie,
348 IN GFX_PLATFORM_CONFIG *Gfx
349 )
350{
351 AGESA_STATUS AgesaStatus;
352 AGESA_STATUS Status;
353 AgesaStatus = AGESA_SUCCESS;
354 IDS_HDT_CONSOLE (GNB_TRACE, "GfxIntegratedEnumerateAllConnectors Enter\n");
355 Status = GfxIntegratedEnumConnectorsForDevice (
356 DEVICE_DFP,
357 DisplayPathList,
358 Pcie,
359 Gfx
360 );
361 AGESA_STATUS_UPDATE (Status, AgesaStatus);
362
363 Status = GfxIntegratedEnumConnectorsForDevice (
364 DEVICE_CRT,
365 DisplayPathList,
366 Pcie,
367 Gfx
368 );
369 AGESA_STATUS_UPDATE (Status, AgesaStatus);
370
371 Status = GfxIntegratedEnumConnectorsForDevice (
372 DEVICE_LCD,
373 DisplayPathList,
374 Pcie,
375 Gfx
376 );
377 AGESA_STATUS_UPDATE (Status, AgesaStatus);
378 IDS_HDT_CONSOLE (GNB_TRACE, "GfxIntegratedEnumerateAllConnectors Exit [0x%x]\n", Status);
379 return AgesaStatus;
380}
381
382/*----------------------------------------------------------------------------------------*/
383/**
384 * Enumerate all display connectors for specific display device type.
385 *
386 *
387 *
388 * @param[in] Engine Engine configuration info
389 * @param[in,out] Buffer Buffer pointer
390 * @param[in] Pcie PCIe configuration info
391 */
392VOID
393STATIC
394GfxIntegratedDdiInterfaceCallback (
395 IN PCIe_ENGINE_CONFIG *Engine,
396 IN OUT VOID *Buffer,
397 IN PCIe_PLATFORM_CONFIG *Pcie
398 )
399{
400 CONNECTOR_ENUM_INFO *ConnectorEnumInfo;
401 EXT_CONNECTOR_INFO *ExtConnectorInfo;
402 ConnectorEnumInfo = (CONNECTOR_ENUM_INFO*) Buffer;
403 ExtConnectorInfo = GfxIntegratedExtConnectorInfo (Engine->Type.Ddi.DdiData.ConnectorType);
404 if (ExtConnectorInfo == NULL) {
405 AGESA_STATUS_UPDATE (AGESA_ERROR, ConnectorEnumInfo->Status);
406 PcieConfigDisableEngine (Engine);
407 return;
408 }
409 if (ExtConnectorInfo->DisplayDeviceEnum != ConnectorEnumInfo->DisplayDeviceEnum) {
410 //Not device type we are looking for
411 return;
412 }
413 if (Engine->Type.Ddi.DisplayPriorityIndex >= ConnectorEnumInfo->RequestedPriorityIndex &&
414 Engine->Type.Ddi.DisplayPriorityIndex < ConnectorEnumInfo->CurrentPriorityIndex) {
415 ConnectorEnumInfo->CurrentPriorityIndex = Engine->Type.Ddi.DisplayPriorityIndex;
416 ConnectorEnumInfo->Engine = Engine;
417 }
418}
419
420/*----------------------------------------------------------------------------------------*/
421/**
422 * Enumerate all display connectors for specific display device type.
423 *
424 *
425 *
426 * @param[in] DisplayDeviceEnum Display device list
427 * @param[out] DisplayPathList Display path list
428 * @param[in,out] Pcie PCIe configuration info
429 * @param[in] Gfx Gfx configuration info
430 */
431AGESA_STATUS
432GfxIntegratedEnumConnectorsForDevice (
433 IN UINT8 DisplayDeviceEnum,
434 OUT EXT_DISPLAY_PATH *DisplayPathList,
435 IN OUT PCIe_PLATFORM_CONFIG *Pcie,
436 IN GFX_PLATFORM_CONFIG *Gfx
437 )
438{
439 UINT8 DisplayDeviceIndex;
440 CONNECTOR_ENUM_INFO ConnectorEnumInfo;
441 EXT_CONNECTOR_INFO *ExtConnectorInfo;
442 EXT_DISPLAY_DEVICE_INFO *ExtDisplayDeviceInfo;
443 AGESA_STATUS Status;
444 UINT8 ConnectorIdArray[sizeof (ConnectorNumerArray)];
445 ConnectorEnumInfo.Status = AGESA_SUCCESS;
446 DisplayDeviceIndex = 1;
447 ConnectorEnumInfo.RequestedPriorityIndex = 0;
448 ConnectorEnumInfo.DisplayDeviceEnum = DisplayDeviceEnum;
449 LibAmdMemFill (ConnectorIdArray, 0x00, sizeof (ConnectorIdArray), GnbLibGetHeader (Gfx));
450 do {
451 ConnectorEnumInfo.Engine = NULL;
452 ConnectorEnumInfo.CurrentPriorityIndex = 0xff;
453 PcieConfigRunProcForAllEngines (
454 DESCRIPTOR_ALLOCATED | DESCRIPTOR_VIRTUAL | DESCRIPTOR_DDI_ENGINE,
455 GfxIntegratedDdiInterfaceCallback,
456 &ConnectorEnumInfo,
457 Pcie
458 );
459 if (ConnectorEnumInfo.Engine == NULL) {
460 break; // No more connector support this
461 }
462 ConnectorEnumInfo.RequestedPriorityIndex = ConnectorEnumInfo.CurrentPriorityIndex + 1;
463 ExtConnectorInfo = GfxIntegratedExtConnectorInfo (ConnectorEnumInfo.Engine->Type.Ddi.DdiData.ConnectorType);
464 ASSERT (ExtConnectorInfo != NULL);
465 ASSERT (ExtConnectorInfo->ConnectorIndex < sizeof (ConnectorIdArray));
466 if (ConnectorIdArray[ExtConnectorInfo->ConnectorIndex] >= ConnectorNumerArray[ExtConnectorInfo->ConnectorIndex]) {
467 //Run out of supported connectors
468 AGESA_STATUS_UPDATE (AGESA_ERROR, ConnectorEnumInfo.Status);
469 PcieConfigDisableEngine (ConnectorEnumInfo.Engine);
470 continue;
471 }
472 ConnectorEnumInfo.Engine->Type.Ddi.ConnectorId = ConnectorIdArray[ExtConnectorInfo->ConnectorIndex] + 1;
473 ExtDisplayDeviceInfo = GfxIntegratedExtDisplayDeviceInfo (DisplayDeviceEnum, DisplayDeviceIndex);
474 if (ExtDisplayDeviceInfo == NULL) {
475 //Run out of supported display device types
476 AGESA_STATUS_UPDATE (AGESA_ERROR, ConnectorEnumInfo.Status);
477 Status = AGESA_ERROR;
478 PcieConfigDisableEngine (ConnectorEnumInfo.Engine);
479 }
480
481 if ((Gfx->Gnb3dStereoPinIndex != 0) && (ConnectorEnumInfo.Engine->Type.Ddi.DdiData.HdpIndex == (Gfx->Gnb3dStereoPinIndex - 1))) {
482 AGESA_STATUS_UPDATE (AGESA_ERROR, ConnectorEnumInfo.Status);
483 Status = AGESA_ERROR;
484 PcieConfigDisableEngine (ConnectorEnumInfo.Engine);
485 }
486
487 ConnectorEnumInfo.Engine->Type.Ddi.DisplayDeviceId = DisplayDeviceIndex;
488
489 Status = GfxFmMapEngineToDisplayPath (ConnectorEnumInfo.Engine, DisplayPathList, Gfx);
490 AGESA_STATUS_UPDATE (Status, ConnectorEnumInfo.Status);
491 if (Status != AGESA_SUCCESS) {
492 continue;
493 }
494 ConnectorIdArray[ExtConnectorInfo->ConnectorIndex]++;
495 DisplayDeviceIndex++;
496 } while (ConnectorEnumInfo.Engine != NULL);
497 return ConnectorEnumInfo.Status;
498}
499
500/*----------------------------------------------------------------------------------------*/
501/**
502 * Initialize display path for given engine
503 *
504 *
505 *
506 * @param[in] Engine Engine configuration info
507 * @param[out] DisplayPath Display path list
508 * @param[out] SecondaryDisplayPath Secondary display path list
509 * @param[in] Gfx Gfx configuration info
510 */
511
512VOID
513GfxIntegratedCopyDisplayInfo (
514 IN PCIe_ENGINE_CONFIG *Engine,
515 OUT EXT_DISPLAY_PATH *DisplayPath,
516 OUT EXT_DISPLAY_PATH *SecondaryDisplayPath,
517 IN GFX_PLATFORM_CONFIG *Gfx
518 )
519{
520 EXT_CONNECTOR_INFO *ExtConnectorInfo;
521 EXT_DISPLAY_DEVICE_INFO *ExtDisplayDeviceInfo;
522 ExtConnectorInfo = GfxIntegratedExtConnectorInfo (Engine->Type.Ddi.DdiData.ConnectorType);
523 ExtDisplayDeviceInfo = GfxIntegratedExtDisplayDeviceInfo (ExtConnectorInfo->DisplayDeviceEnum, Engine->Type.Ddi.DisplayDeviceId);
524 DisplayPath->usDeviceConnector = ExtConnectorInfo->ConnectorEnum | (Engine->Type.Ddi.ConnectorId << 8);
525 DisplayPath->usDeviceTag = ExtDisplayDeviceInfo->DeviceTag;
526 DisplayPath->usDeviceACPIEnum = ExtDisplayDeviceInfo->DeviceAcpiEnum;
527 DisplayPath->ucExtAUXDDCLutIndex = Engine->Type.Ddi.DdiData.AuxIndex;
528 DisplayPath->ucExtHPDPINLutIndex = Engine->Type.Ddi.DdiData.HdpIndex;
529 DisplayPath->usExtEncoderObjId = ExtConnectorInfo->EncoderEnum;
530 if (Engine->Type.Ddi.DdiData.Mapping[0].ChannelMappingValue == 0) {
531 DisplayPath->ChannelMapping.ucChannelMapping = (Engine->EngineData.StartLane < Engine->EngineData.EndLane) ? 0xE4 : 0x1B;
532 } else {
533 DisplayPath->ChannelMapping.ucChannelMapping = Engine->Type.Ddi.DdiData.Mapping[0].ChannelMappingValue;
534 }
535 GNB_DEBUG_CODE (
536 GfxIntegratedDebugDumpDisplayPath (DisplayPath, Gfx);
537 );
538 if (Engine->Type.Ddi.DdiData.ConnectorType == ConnectorTypeDualLinkDVI) {
539 ASSERT (SecondaryDisplayPath != NULL);
540 GNB_DEBUG_CODE (
541 GfxIntegratedDebugDumpDisplayPath (DisplayPath, Gfx);
542 );
543 SecondaryDisplayPath->usDeviceConnector = DisplayPath->usDeviceConnector;
544 if (Engine->Type.Ddi.DdiData.Mapping[1].ChannelMappingValue == 0) {
545 DisplayPath->ChannelMapping.ucChannelMapping = (Engine->EngineData.StartLane < Engine->EngineData.EndLane) ? 0xE4 : 0x1B;
546 } else {
547 DisplayPath->ChannelMapping.ucChannelMapping = Engine->Type.Ddi.DdiData.Mapping[1].ChannelMappingValue;
548 }
549 }
550}
551
552
553
554/*----------------------------------------------------------------------------------------*/
555/**
556 * Dump display path settings
557 *
558 *
559 *
560 * @param[in] DisplayPath Display path
561 * @param[in] Gfx Gfx configuration
562 */
563
564VOID
565GfxIntegratedDebugDumpDisplayPath (
566 IN EXT_DISPLAY_PATH *DisplayPath,
567 IN GFX_PLATFORM_CONFIG *Gfx
568 )
569{
570 IDS_HDT_CONSOLE (GFX_MISC, " usDeviceConnector = 0x%x\n",
571 DisplayPath->usDeviceConnector
572 );
573 IDS_HDT_CONSOLE (GFX_MISC, " usDeviceTag = 0x%x\n",
574 DisplayPath->usDeviceTag
575 );
576 IDS_HDT_CONSOLE (GFX_MISC, " usDeviceACPIEnum = 0x%x\n",
577 DisplayPath->usDeviceACPIEnum
578 );
579 IDS_HDT_CONSOLE (GFX_MISC, " usExtEncoderObjId = 0x%x\n",
580 DisplayPath->usExtEncoderObjId
581 );
582 IDS_HDT_CONSOLE (GFX_MISC, " ucChannelMapping = 0x%x\n",
583 DisplayPath->ChannelMapping.ucChannelMapping
584 );
585
586}