dp14txss
Vitis Drivers API Documentation
xdptxss_kcu105_dp14.c File Reference

Overview

MODIFICATION HISTORY:

Ver Who Date Changes


1.0 KI 12/09/17 Initial release. 1.1 ND 2/14/19 mcdp related function call now need dprxss instance address instead of base address as first parameter 1.2 ND 09/02/20 Added support for New Av patgen. Added support for CRC for format 422 for pixel width engine and PPC changes. 1.3 ND 12/26/20 Updated code for YUV422 related pt colorshift issue. Added support for retraining on color format change. 1.4 ND 04/03/21 Moved all global variables declaration from .h to .c files due to gcc compiler compilation error. 1.5 KU 06/17/21 Added support for VCU118 1.6 ND 02/01/22 Corrected XDP_RX_AUDIO_INFO_DATA to XDP_RX_AUDIO_EXT_DATA in DpRxSs_ExtPacketHandler() 1.7 ND 07/21/22 Updated the LMK03318 address. 1.8 ND 08/26/22 Address updation for DDR_MEMORY macro. Added DELAY macro to increase delay in IDT_8T49N24x_SetClock() if encountering iic race condition.

Functions

int DpPt_SetupIntrSystem ()
 This function is sets up Interrupt system and start it. More...
 
void hpd_con ()
 This function is called when a Hot-Plug-Detect (HPD) event is received by the DisplayPort TX Subsystem core. More...
 
void DpPt_HpdEventHandler (void *InstancePtr)
 This function takes care HPD event. More...
 
void hpd_pulse_con ()
 This function is called when a Hot-Plug-Detect (HPD) pulse is received by the DisplayPort TX Subsystem core. More...
 
void DpPt_HpdPulseHandler (void *InstancePtr)
 This function takes care HPD pulse interrupt. More...
 
void DpPt_LinkrateChgHandler (void *InstancePtr)
 This function sets link line rate. More...
 
void DpPt_CustomWaitUs (void *InstancePtr, u32 MicroSeconds)
 This function is called when DisplayPort TX Subsystem core requires delay or sleep. More...
 
void reconfig_clkwiz (u32 clk_reg0, u32 clk_reg1, u32 clk_reg2)
 sets the default drp values into the mmcm this ensures that mmcm is back to original state More...
 
void reset_clkwiz ()
 This function will reset Tx side MMCM. More...
 
void clk_wiz_locked ()
 This function will check MMCM lock status This MMCM output will be used for Tx side video CLK. More...
 
void start_tx (u8 line_rate, u8 lane_count, XVidC_VideoMode res_table, u8 bpc, u8 pat, u8 pat_update)
 This is for Tx only mode This function will start outputing internal video patern image Setup GT, DP, patern and generator. More...
 
int VideoFMC_Init (void)
 This function will detect video resolution/frequency change Many GPUs won't re-train when only video res/freq change. More...
 
void video_change_detect (u32 *count_track, u32 *rxMsamisc0_track, u32 *bpc_track, u32 *recv_clk_freq_track, float *recv_frame_clk_track, u32 *recv_frame_clk_int_track, int *track_count)
 This function will detect video resolution/frequency change Many GPUs won't re-train when only video res/freq change. More...
 
void detect_rx_video_and_startTx (int *track_count1)
 This function detects incoming video and find out video parameters Based on the parameters, set up Tx and VDMA, then start Tx output. More...
 
void switch_to_Tx_only (int *track_switch, u8 *pwr_dwn_x)
 This function will be used when no incoming video at pass-through mode If no video, switching to internal patern generator. More...
 
void sink_power_cycle (u32 power_down_time)
 This function will send power down and power up command over AUX. More...
 
void update_edid ()
 This function will update and overwrite EDID color depth 10BPC will be changed to 8BPC due to design limitation. More...
 
void resetIp ()
 This function toggles HW reset line for all IP's. More...
 
void DpRxSs_InfoPacketHandler (void *InstancePtr)
 This function is the callback function for Info Packet Handling. More...
 
void DpRxSs_ExtPacketHandler (void *InstancePtr)
 This function is the callback function for Generic Packet Handling of 32-Bytes payload. More...
 
void Print_InfoPkt ()
 This function is the callback function for Info Packet Handling. More...
 
void Print_ExtPkt ()
 This function is the callback function for Ext Packet Handling. More...
 
void DpRxSs_AccessLinkQualHandler (void *InstancePtr)
 This function is the callback function for Access link qual request. More...
 
void DpRxSs_AccessErrorCounterHandler (void *InstancePtr)
 This function is the callback function for Access prbs error count. More...
 
void DpRxSs_CRCTestEventHandler (void *InstancePtr)
 This function is the callback function for Test CRC Event request. More...
 
u8 get_LineRate (void)
 This function returns current line rate. More...
 

Variables

lane_link_rate_struct lane_link_table []
 

Function Documentation

void clk_wiz_locked ( void  )

This function will check MMCM lock status This MMCM output will be used for Tx side video CLK.

This function to check MMCM lock status.

Returns
None
void detect_rx_video_and_startTx ( int *  track_count1)

This function detects incoming video and find out video parameters Based on the parameters, set up Tx and VDMA, then start Tx output.

Returns
None

References XDpTxSs::DpPtr, Vpg_StreamSrcConfigure(), Vpg_VidgenSetUserPattern(), XDpTxSs_Reset(), and XDpTxSs_Stop().

void DpPt_CustomWaitUs ( void *  InstancePtr,
u32  MicroSeconds 
)

This function is called when DisplayPort TX Subsystem core requires delay or sleep.

This function use h/w timer to count specific Microseconds.

It provides timer with predefined amount of loop iterations.

Parameters
InstancePtris a pointer to the XDp instance.
Returns
None.
Note
Use the XDpTxSs_SetUserTimerHandler driver function to set this function as the handler custom delay/sleep.
void DpPt_HpdEventHandler ( void *  InstancePtr)

This function takes care HPD event.

Returns
None.
Note
None.

References XDpTxSs::DpPtr, sink_power_cycle(), and XDpTxSs_IsConnected().

void DpPt_HpdPulseHandler ( void *  InstancePtr)

This function takes care HPD pulse interrupt.

Returns
None.
Note
None.

References XDpTxSs::DpPtr.

void DpPt_LinkrateChgHandler ( void *  InstancePtr)

This function sets link line rate.

Parameters
@returnNone.
Note
None.

References get_LineRate(), and PHY_Configuration_Tx().

int DpPt_SetupIntrSystem ( )

This function is sets up Interrupt system and start it.

Returns
None.

References XDpTxSs_DpIntrHandler().

void DpRxSs_AccessErrorCounterHandler ( void *  InstancePtr)

This function is the callback function for Access prbs error count.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.
void DpRxSs_AccessLinkQualHandler ( void *  InstancePtr)

This function is the callback function for Access link qual request.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.

References I2C_MCDP6000_ADDR.

void DpRxSs_CRCTestEventHandler ( void *  InstancePtr)

This function is the callback function for Test CRC Event request.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.
void DpRxSs_ExtPacketHandler ( void *  InstancePtr)

This function is the callback function for Generic Packet Handling of 32-Bytes payload.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.
void DpRxSs_InfoPacketHandler ( void *  InstancePtr)

This function is the callback function for Info Packet Handling.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.
u8 get_LineRate ( void  )

This function returns current line rate.

Parameters
None.
Returns
None.
Note
None.

References XDpTxSs::DpPtr.

void hpd_con ( )

This function is called when a Hot-Plug-Detect (HPD) event is received by the DisplayPort TX Subsystem core.

Parameters
InstancePtris a pointer to the XDpTxSs instance.
Returns
None.
Note
Use the XDpTxSs_SetCallback driver function to set this function as the handler for HPD event.

References XDpTxSs::DpPtr, update_edid(), XDpTxSs_SetLaneCount(), and XDpTxSs_SetLinkRate().

void hpd_pulse_con ( )

This function is called when a Hot-Plug-Detect (HPD) pulse is received by the DisplayPort TX Subsystem core.

Parameters
InstancePtris a pointer to the XDpTxSs instance.
Returns
None.
Note
Use the XDpTxSs_SetCallback driver function to set this function as the handler for HPD pulse.

References XDpTxSs::DpPtr, XDpTxSs_SetLaneCount(), and XDpTxSs_SetLinkRate().

void Print_ExtPkt ( )

This function is the callback function for Ext Packet Handling.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.
void Print_InfoPkt ( )

This function is the callback function for Info Packet Handling.

Parameters
InstancePtris a pointer to the XDpRxSs instance.
Returns
None.
Note
None.
void reconfig_clkwiz ( u32  clk_reg0,
u32  clk_reg1,
u32  clk_reg2 
)

sets the default drp values into the mmcm this ensures that mmcm is back to original state

Returns
None

References DpPt_CustomWaitUs().

void reset_clkwiz ( )

This function will reset Tx side MMCM.

Returns
None
void resetIp ( )

This function toggles HW reset line for all IP's.

Returns
None
void sink_power_cycle ( u32  power_down_time)

This function will send power down and power up command over AUX.

Returns
None

References DpPt_CustomWaitUs(), and XDpTxSs::DpPtr.

void start_tx ( u8  line_rate,
u8  lane_count,
XVidC_VideoMode  res_table,
u8  bpc,
u8  pat,
u8  pat_update 
)
void switch_to_Tx_only ( int *  track_switch,
u8 *  pwr_dwn_x 
)

This function will be used when no incoming video at pass-through mode If no video, switching to internal patern generator.

Returns
None

References XDpTxSs::DpPtr, PHY_Configuration_Tx(), sink_power_cycle(), start_tx(), Vpg_StreamSrcConfigure(), Vpg_VidgenSetUserPattern(), XDpTxSs_Reset(), and XDpTxSs_Stop().

void update_edid ( )

This function will update and overwrite EDID color depth 10BPC will be changed to 8BPC due to design limitation.

Returns
None

Referenced by hpd_con().

void video_change_detect ( u32 *  count_track,
u32 *  rxMsamisc0_track,
u32 *  bpc_track,
u32 *  recv_clk_freq_track,
float *  recv_frame_clk_track,
u32 *  recv_frame_clk_int_track,
int *  track_count 
)

This function will detect video resolution/frequency change Many GPUs won't re-train when only video res/freq change.

Application needs to know if it changed and need to detect new parameter. Based on the parameter, re-set and re-start VDAM and Tx

Returns
None

References XDpTxSs::DpPtr, Vpg_VidgenSetUserPattern(), and XDpTxSs_Stop().

int VideoFMC_Init ( void  )

This function will detect video resolution/frequency change Many GPUs won't re-train when only video res/freq change.

Application needs to know if it changed and need to detect new parameter. Based on the parameter, re-set and re-start VDAM and Tx

Returns
None

References I2C_IDT8N49_ADDR, I2C_LMK03318_ADDR, I2C_MUX_ADDR, I2C_Scan(), I2C_VFMCEXP_0_ADDR, I2C_VFMCEXP_1_ADDR, IDT_8T49N24x_Init(), and TI_LMK03318_PowerDown().

Variable Documentation

lane_link_rate_struct lane_link_table[]
Initial value:
=
{
{XDP_RX_OVER_LANE_COUNT_SET_1, XDP_RX_OVER_LINK_BW_SET_162GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_2, XDP_RX_OVER_LINK_BW_SET_162GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_4, XDP_RX_OVER_LINK_BW_SET_162GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_1, XDP_RX_OVER_LINK_BW_SET_270GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_2, XDP_RX_OVER_LINK_BW_SET_270GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_4, XDP_RX_OVER_LINK_BW_SET_270GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_1, XDP_RX_OVER_LINK_BW_SET_540GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_2, XDP_RX_OVER_LINK_BW_SET_540GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_4, XDP_RX_OVER_LINK_BW_SET_540GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_1, XDP_RX_OVER_LINK_BW_SET_810GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_2, XDP_RX_OVER_LINK_BW_SET_810GBPS},
{XDP_RX_OVER_LANE_COUNT_SET_4, XDP_RX_OVER_LINK_BW_SET_810GBPS},
}
MODIFICATION HISTORY:
Ver  Who Date     Changes


1.00 KI 07/13/17 Initial release.