From 45f4190277ef8e02632d6296912e8fa3cecebc22 Mon Sep 17 00:00:00 2001 From: Andrei-Liviu Simion Date: Thu, 22 Jan 2015 23:02:31 -0800 Subject: [PATCH] dptx: Update to use common video driver. Signed-off-by: Andrei-Liviu Simion --- .../dptx/examples/xdptx_example_common.c | 4 +- .../drivers/dptx/examples/xdptx_mst_example.c | 2 +- XilinxProcessorIPLib/drivers/dptx/src/xdptx.h | 8 ++-- .../drivers/dptx/src/xdptx_spm.c | 46 ++++++++++--------- 4 files changed, 32 insertions(+), 28 deletions(-) diff --git a/XilinxProcessorIPLib/drivers/dptx/examples/xdptx_example_common.c b/XilinxProcessorIPLib/drivers/dptx/examples/xdptx_example_common.c index be710932..d630628d 100644 --- a/XilinxProcessorIPLib/drivers/dptx/examples/xdptx_example_common.c +++ b/XilinxProcessorIPLib/drivers/dptx/examples/xdptx_example_common.c @@ -287,7 +287,7 @@ static void Dptx_StartVideoStream(XDptx *InstancePtr) * * 2) Use a standard video timing mode (see mode_table.h): * XDptx_CfgMsaUseStandardVideoMode(InstancePtr, XDPTX_STREAM_ID0, - XDPTX_VM_640x480_60_P); + XVIDC_VM_640x480_60_P); * * 3) Use a custom configuration for the main stream attributes (MSA): * XDptx_MainStreamAttributes MsaConfigCustom; @@ -317,7 +317,7 @@ static void Dptx_StartVideoStream(XDptx *InstancePtr) } else { XDptx_CfgMsaUseStandardVideoMode(InstancePtr, XDPTX_STREAM_ID0, - XDPTX_VM_640x480_60_P); + XVIDC_VM_640x480_60_P); } /* Disable MST for this example. */ diff --git a/XilinxProcessorIPLib/drivers/dptx/examples/xdptx_mst_example.c b/XilinxProcessorIPLib/drivers/dptx/examples/xdptx_mst_example.c index 18eb2c24..ed654b2c 100644 --- a/XilinxProcessorIPLib/drivers/dptx/examples/xdptx_mst_example.c +++ b/XilinxProcessorIPLib/drivers/dptx/examples/xdptx_mst_example.c @@ -85,7 +85,7 @@ /* The video resolution from the display mode timings (DMT) table to use for * each stream. */ -#define USE_VIDEO_MODE XDPTX_VM_1920x1080_60_P +#define USE_VIDEO_MODE XVIDC_VM_1920x1080_60_P /* The color depth (bits per color component) to use for each stream. */ #define USE_BPC 8 diff --git a/XilinxProcessorIPLib/drivers/dptx/src/xdptx.h b/XilinxProcessorIPLib/drivers/dptx/src/xdptx.h index ec476fb6..a1b4e26a 100644 --- a/XilinxProcessorIPLib/drivers/dptx/src/xdptx.h +++ b/XilinxProcessorIPLib/drivers/dptx/src/xdptx.h @@ -229,7 +229,7 @@ #include "xdptx_hw.h" #include "xil_assert.h" #include "xil_types.h" -#include "xvid.h" +#include "xvidc.h" /****************************** Type Definitions ******************************/ @@ -323,7 +323,9 @@ typedef struct { * video will be displayed. */ typedef struct { - XVid_VideoTimingMode Vtm; /**< The video timing. */ + XVidC_VideoTimingMode Vtm; /**< The video timing. */ + u32 PixelClkHz; /**< The pixel clock of the stream (in + Hz). */ u32 HClkTotal; /**< Horizontal total time (in pixels). */ u32 VClkTotal; /**< Vertical total time (in pixels). */ @@ -664,7 +666,7 @@ void XDptx_SetUserTimerHandler(XDptx *InstancePtr, /* xdptx_spm.c: Stream policy maker functions. */ void XDptx_CfgMsaRecalculate(XDptx *InstancePtr, u8 Stream); void XDptx_CfgMsaUseStandardVideoMode(XDptx *InstancePtr, u8 Stream, - XVid_VideoMode VideoMode); + XVidC_VideoMode VideoMode); void XDptx_CfgMsaUseEdidPreferredTiming(XDptx *InstancePtr, u8 Stream, u8 *Edid); void XDptx_CfgMsaUseCustom(XDptx *InstancePtr, u8 Stream, diff --git a/XilinxProcessorIPLib/drivers/dptx/src/xdptx_spm.c b/XilinxProcessorIPLib/drivers/dptx/src/xdptx_spm.c index 4ea6f48b..c970cbbc 100644 --- a/XilinxProcessorIPLib/drivers/dptx/src/xdptx_spm.c +++ b/XilinxProcessorIPLib/drivers/dptx/src/xdptx_spm.c @@ -144,11 +144,11 @@ void XDptx_CfgMsaRecalculate(XDptx *InstancePtr, u8 Stream) /* Set the user pixel width to handle clocks that exceed the * capabilities of the DisplayPort TX core. */ if (MsaConfig->OverrideUserPixelWidth == 0) { - if ((MsaConfig->Vtm.PixelClkKhz > 300000) && + if ((MsaConfig->PixelClkHz > 300000000) && (LinkConfig->LaneCount == XDPTX_LANE_COUNT_SET_4)) { MsaConfig->UserPixelWidth = 4; } - else if ((MsaConfig->Vtm.PixelClkKhz > 75000) && + else if ((MsaConfig->PixelClkHz > 75000000) && (LinkConfig->LaneCount != XDPTX_LANE_COUNT_SET_1)) { MsaConfig->UserPixelWidth = 2; } @@ -238,7 +238,7 @@ void XDptx_CfgMsaRecalculate(XDptx *InstancePtr, u8 Stream) /* Calculate the average number of bytes per transfer unit. * Note: Both the integer and the fractional part is stored in * AvgBytesPerTU. */ - VideoBw = (MsaConfig->Vtm.PixelClkKhz * BitsPerPixel) / 8; + VideoBw = (MsaConfig->PixelClkHz * BitsPerPixel) / 8000; LinkBw = (LinkConfig->LaneCount * LinkConfig->LinkRate * 27); MsaConfig->AvgBytesPerTU = (VideoBw * MsaConfig->TransferUnitSize) / LinkBw; @@ -276,13 +276,13 @@ void XDptx_CfgMsaRecalculate(XDptx *InstancePtr, u8 Stream) * *******************************************************************************/ void XDptx_CfgMsaUseStandardVideoMode(XDptx *InstancePtr, u8 Stream, - XVid_VideoMode VideoMode) + XVidC_VideoMode VideoMode) { XDptx_MainStreamAttributes *MsaConfig; /* Verify arguments. */ Xil_AssertVoid(InstancePtr != NULL); - Xil_AssertVoid(VideoMode < XVID_VM_NUM_SUPPORT); + Xil_AssertVoid(VideoMode < XVIDC_VM_NUM_SUPPORTED); Xil_AssertVoid((Stream == XDPTX_STREAM_ID1) || (Stream == XDPTX_STREAM_ID2) || (Stream == XDPTX_STREAM_ID3) || (Stream == XDPTX_STREAM_ID4)); @@ -290,28 +290,30 @@ void XDptx_CfgMsaUseStandardVideoMode(XDptx *InstancePtr, u8 Stream, MsaConfig = &InstancePtr->MsaConfig[Stream - 1]; /* Configure the MSA values from the display monitor DMT table. */ - MsaConfig->Vtm.PixelClkKhz = - XVid_VideoTimingModes[VideoMode].PixelClkKhz; MsaConfig->Vtm.Timing.HActive = - XVid_VideoTimingModes[VideoMode].Timing.HActive; + XVidC_VideoTimingModes[VideoMode].Timing.HActive; MsaConfig->Vtm.Timing.VActive = - XVid_VideoTimingModes[VideoMode].Timing.VActive; + XVidC_VideoTimingModes[VideoMode].Timing.VActive; MsaConfig->Vtm.Timing.HSyncPolarity = - XVid_VideoTimingModes[VideoMode].Timing.HSyncPolarity; + XVidC_VideoTimingModes[VideoMode].Timing.HSyncPolarity; MsaConfig->Vtm.Timing.VSyncPolarity = - XVid_VideoTimingModes[VideoMode].Timing.VSyncPolarity; + XVidC_VideoTimingModes[VideoMode].Timing.VSyncPolarity; MsaConfig->Vtm.Timing.HFrontPorch = - XVid_VideoTimingModes[VideoMode].Timing.HFrontPorch; + XVidC_VideoTimingModes[VideoMode].Timing.HFrontPorch; MsaConfig->Vtm.Timing.HSyncWidth = - XVid_VideoTimingModes[VideoMode].Timing.HSyncWidth; + XVidC_VideoTimingModes[VideoMode].Timing.HSyncWidth; MsaConfig->Vtm.Timing.HBackPorch = - XVid_VideoTimingModes[VideoMode].Timing.HBackPorch; + XVidC_VideoTimingModes[VideoMode].Timing.HBackPorch; MsaConfig->Vtm.Timing.F0PVFrontPorch = - XVid_VideoTimingModes[VideoMode].Timing.F0PVFrontPorch; + XVidC_VideoTimingModes[VideoMode].Timing.F0PVFrontPorch; MsaConfig->Vtm.Timing.F0PVSyncWidth = - XVid_VideoTimingModes[VideoMode].Timing.F0PVSyncWidth; + XVidC_VideoTimingModes[VideoMode].Timing.F0PVSyncWidth; MsaConfig->Vtm.Timing.F0PVBackPorch = - XVid_VideoTimingModes[VideoMode].Timing.F0PVBackPorch; + XVidC_VideoTimingModes[VideoMode].Timing.F0PVBackPorch; + + /* Calculate the pixel clock frequency. */ + MsaConfig->PixelClkHz = + XVidC_GetPixelClockHzByVmId(MsaConfig->Vtm.VmId); /* Calculate the rest of the MSA values. */ XDptx_CfgMsaRecalculate(InstancePtr, Stream); @@ -376,8 +378,8 @@ void XDptx_CfgMsaUseEdidPreferredTiming(XDptx *InstancePtr, u8 Stream, u8 *Edid) XDPTX_EDID_DTD_XRES_XBLANK_U4_XRES_SHIFT) << 8) | Ptm[XDPTX_EDID_DTD_VRES_LSB]; - MsaConfig->Vtm.PixelClkKhz = ((Ptm[XDPTX_EDID_DTD_PIXEL_CLK_KHZ_MSB] << - 8) | Ptm[XDPTX_EDID_DTD_PIXEL_CLK_KHZ_LSB]) * 10; + MsaConfig->PixelClkHz = ((Ptm[XDPTX_EDID_DTD_PIXEL_CLK_KHZ_MSB] << + 8) | Ptm[XDPTX_EDID_DTD_PIXEL_CLK_KHZ_LSB]) * 10000; MsaConfig->Vtm.Timing.HFrontPorch = (((Ptm[XDPTX_EDID_DTD_XFPORCH_XSPW_U2] & @@ -469,7 +471,7 @@ void XDptx_CfgMsaUseCustom(XDptx *InstancePtr, u8 Stream, MsaConfigCustom->Vtm.Timing.HActive; MsaConfig->Vtm.Timing.VActive = MsaConfigCustom->Vtm.Timing.VActive; - MsaConfig->Vtm.PixelClkKhz = MsaConfigCustom->Vtm.PixelClkKhz; + MsaConfig->PixelClkHz = MsaConfigCustom->PixelClkHz; MsaConfig->Vtm.Timing.HSyncPolarity = MsaConfigCustom->Vtm.Timing.HSyncPolarity; MsaConfig->Vtm.Timing.VSyncPolarity = @@ -738,7 +740,7 @@ void XDptx_SetMsaValues(XDptx *InstancePtr, u8 Stream) XDptx_WriteReg(Config->BaseAddr, XDPTX_MAIN_STREAM_MISC1 + StreamOffset[Stream - 1], MsaConfig->Misc1); XDptx_WriteReg(Config->BaseAddr, XDPTX_M_VID + - StreamOffset[Stream - 1], MsaConfig->Vtm.PixelClkKhz); + StreamOffset[Stream - 1], MsaConfig->PixelClkHz / 1000); XDptx_WriteReg(Config->BaseAddr, XDPTX_N_VID + StreamOffset[Stream - 1], MsaConfig->NVid); XDptx_WriteReg(Config->BaseAddr, XDPTX_USER_PIXEL_WIDTH + @@ -795,7 +797,7 @@ static void XDptx_CalculateTs(XDptx *InstancePtr, u8 Stream, u8 BitsPerPixel) u32 TsInt; u32 TsFrac; - PeakPixelBw = ((double)MsaConfig->Vtm.PixelClkKhz / 1000) * + PeakPixelBw = ((double)MsaConfig->PixelClkHz) * ((double)BitsPerPixel / 8); LinkBw = (LinkConfig->LaneCount * LinkConfig->LinkRate * 27);