From 69fe13cc3e55c91bc799661b233e1d98764bc73c Mon Sep 17 00:00:00 2001 From: Andrei-Liviu Simion Date: Wed, 5 Nov 2014 21:11:02 -0800 Subject: [PATCH] dptx: Added macros related to tile ordering. These macros parse tile location, total horizontal and vertical tiles, and tile order from the Tiled Display Topology section data block. Signed-off-by: Andrei-Liviu Simion --- .../drivers/dptx/src/xdptx_edid.c | 6 ++-- .../drivers/dptx/src/xdptx_hw.h | 31 +++++++++++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/XilinxProcessorIPLib/drivers/dptx/src/xdptx_edid.c b/XilinxProcessorIPLib/drivers/dptx/src/xdptx_edid.c index 7babe7d5..a8a77baf 100644 --- a/XilinxProcessorIPLib/drivers/dptx/src/xdptx_edid.c +++ b/XilinxProcessorIPLib/drivers/dptx/src/xdptx_edid.c @@ -50,8 +50,9 @@ *******************************************************************************/ /******************************* Include Files ********************************/ -#include "xstatus.h" + #include "xdptx.h" +#include "xstatus.h" /**************************** Function Definitions ****************************/ @@ -169,7 +170,8 @@ u32 XDptx_GetRemoteEdidDispIdExt(XDptx *InstancePtr, u8 *Data, u8 ExtIndex; /* Get the base EDID block. */ - Status = XDptx_GetRemoteEdid(InstancePtr, LinkCountTotal, RelativeAddress, Data); + Status = XDptx_GetRemoteEdid(InstancePtr, LinkCountTotal, + RelativeAddress, Data); if (Status != XST_SUCCESS) { return Status; } diff --git a/XilinxProcessorIPLib/drivers/dptx/src/xdptx_hw.h b/XilinxProcessorIPLib/drivers/dptx/src/xdptx_hw.h index 47c98d9e..c9d0d4a5 100644 --- a/XilinxProcessorIPLib/drivers/dptx/src/xdptx_hw.h +++ b/XilinxProcessorIPLib/drivers/dptx/src/xdptx_hw.h @@ -1292,14 +1292,41 @@ #define XDptx_WriteReg(BaseAddress, RegOffset, Data) \ XDptx_Out32((BaseAddress) + (RegOffset), (Data)) - - #define XDptx_GetExtBlockCount(E) (E[XDPTX_EDID_EXT_BLOCK_COUNT]) #define XDptx_IsEdidExtBlockDispId(B) \ (B[XDPTX_EDID_EXT_BLOCK_TAG] == XDPTX_EDID_EXT_BLOCK_TAG_DISPID) #define XDptx_GetDispIdSize(D) (D[XDPTX_DISPID_SIZE]) + #define XDptx_GetDispIdDbSecTag(B) (B[XDPTX_DISPID_DB_SEC_TAG]) +#define XDptx_GetDispIdTdtHTotal(B) \ + (((((B[XDPTX_DISPID_TDT_TOP2] & XDPTX_DISPID_TDT_TOP2_HTOT_H_MASK) >> \ + XDPTX_DISPID_TDT_TOP2_HTOT_H_SHIFT) << 4) | \ + ((B[XDPTX_DISPID_TDT_TOP0] & XDPTX_DISPID_TDT_TOP0_HTOT_L_MASK) >> \ + XDPTX_DISPID_TDT_TOP0_HTOT_L_SHIFT)) + 1) + +#define XDptx_GetDispIdTdtVTotal(B) \ + (((((B[XDPTX_DISPID_TDT_TOP2] & XDPTX_DISPID_TDT_TOP2_VTOT_H_MASK) >> \ + XDPTX_DISPID_TDT_TOP2_VTOT_H_SHIFT) << 4) | \ + (B[XDPTX_DISPID_TDT_TOP0] & XDPTX_DISPID_TDT_TOP0_VTOT_L_MASK)) + 1) + +#define XDptx_GetDispIdTdtHLoc(B) \ + ((((B[XDPTX_DISPID_TDT_TOP2] & XDPTX_DISPID_TDT_TOP2_HLOC_H_MASK) >> \ + XDPTX_DISPID_TDT_TOP2_HLOC_H_SHIFT) << 4) | \ + ((B[XDPTX_DISPID_TDT_TOP1] & XDPTX_DISPID_TDT_TOP1_HLOC_L_MASK) >> \ + XDPTX_DISPID_TDT_TOP1_HLOC_L_SHIFT)) + +#define XDptx_GetDispIdTdtVLoc(B) \ + (((B[XDPTX_DISPID_TDT_TOP2] & XDPTX_DISPID_TDT_TOP2_VLOC_H_MASK) << 4) \ + | (B[XDPTX_DISPID_TDT_TOP1] & XDPTX_DISPID_TDT_TOP1_VLOC_L_MASK)) + +#define XDptx_GetDispIdTdtNumTiles(B) \ + (XDptx_GetDispIdTdtHTotal(B) * XDptx_GetDispIdTdtVTotal(B)) + +#define XDptx_GetDispIdTdtTileOrder(B) \ + ((XDptx_GetDispIdTdtVLoc(B) * XDptx_GetDispIdTdtHTotal(B)) + \ + XDptx_GetDispIdTdtHLoc(B)) + #endif /* XDPTX_HW_H_ */