dptx: Added a function that retrieves the Tiled Display Topology of a sink.

Given a sink, the function will attempt to retrieve the Tiled Display Topology
section data block which is part of the DisplayID structure.

Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
This commit is contained in:
Andrei-Liviu Simion 2014-11-05 20:13:42 -08:00 committed by Suneel Garapati
parent 482e77daf3
commit b91ce402c0
2 changed files with 32 additions and 0 deletions

View file

@ -886,5 +886,7 @@ u32 XDptx_GetRemoteEdidDispIdExt(XDptx *InstancePtr, u8 *Data,
u8 LinkCountTotal, u8 *RelativeAddress);
u32 XDptx_GetDispIdDataBlock(u8 *DisplayIdRaw, u8 SectionTag,
u8 **DataBlockPtr);
u32 XDptx_GetRemoteTiledDisplayDb(XDptx *InstancePtr, u8 *EdidExt,
u8 LinkCountTotal, u8 *RelativeAddress, u8 **DataBlockPtr);
#endif /* XDPTX_H_ */

View file

@ -227,3 +227,33 @@ u32 XDptx_GetDispIdDataBlock(u8 *DisplayIdRaw, u8 SectionTag, u8 **DataBlockPtr)
* block with the specified tag was found. */
return XST_FAILURE;
}
u32 XDptx_GetRemoteTiledDisplayDb(XDptx *InstancePtr, u8 *EdidExt,
u8 LinkCountTotal, u8 *RelativeAddress, u8 **DataBlockPtr)
{
u32 Status;
u8 *EdidExtDispId;
/* Obtain a DisplayID EDID extension block. */
Status = XDptx_GetRemoteEdidDispIdExt(InstancePtr, EdidExt,
LinkCountTotal, RelativeAddress);
if (Status != XST_SUCCESS) {
/* The sink does not possess a DisplayID EDID extension block. */
return Status;
}
/* The first byte of the extension block is the tag. */
EdidExtDispId = &EdidExt[0x01];
/* Obtain the tiled display topology block data from the DisplayId EDID
* extension block. */
Status = XDptx_GetDispIdDataBlock(EdidExtDispId, XDPTX_DISPID_TDT_TAG,
DataBlockPtr);
if (Status != XST_SUCCESS) {
/* The sink does not possess a DisplayID EDID data block with
* the specified tag. */
return Status;
}
return XST_SUCCESS;
}