dp14txss
Vitis Drivers API Documentation
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
dppt.h File Reference

Overview

This file contains functions to configure Video Pattern Generator core.

MODIFICATION HISTORY:
Ver   Who    Date     Changes


1.00 YB 07/01/15 Initial release.

MODIFICATION HISTORY:
Ver   Who    Date     Changes


1.00 KI 07/13/17 Initial release.

#include <stdio.h>
#include <math.h>
#include "xiic.h"
#include "xiic_l.h"
#include "xbasic_types.h"
#include "xil_types.h"
#include "xparameters.h"
#include "xil_cache.h"
#include "xgpio.h"
#include "xuartlite.h"
#include "xuartlite_l.h"
#include "xtmrctr.h"
#include "xintc.h"
#include "xvphy.h"
#include "xvphy_i.h"
#include "xvidc_edid.h"
#include "xvidc.h"
#include "xdptxss.h"
#include "xdprxss.h"
#include "xdp.h"
#include "stdlib.h"
#include "xvid_pat_gen.h"
#include "idt_8t49n24x.h"
#include "ti_lmk03318.h"
#include "videofmc_defs.h"
#include "xdebug.h"
#include "xlib_string.h"
#include "xedid_print_example.h"
#include "xaxivdma.h"
#include "dppt_vdma.h"
#include "dppt_vid_phy_config.h"
#include "xvidframe_crc.h"

Functions

int DpPt_SetupIntrSystem ()
 This function is sets up Interrupt system and start it. More...
 
void DpPt_HpdEventHandler (void *InstancePtr)
 This function takes care HPD event. 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...
 
u8 get_LineRate (void)
 This function returns current line rate. More...
 
void DpRxSs_AccessLaneSetHandler (void *InstancePtr)
 This function is the callback function for Access lane set request. 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...
 
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 DpPt_CustomWaitUs (void *InstancePtr, u32 MicroSeconds)
 This function use h/w timer to count specific Microseconds. 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 hpd_pulse_con ()
 This function is called when a Hot-Plug-Detect (HPD) pulse is received by the DisplayPort TX Subsystem core. 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 outputting internal video pattern image Setup GT, DP, pattern and generator. More...
 
void reset_clkwiz ()
 This function will reset Tx side MMCM. More...
 
void clk_wiz_locked ()
 This function to check MMCM lock status. More...
 
u8 i2c_read_dp141 (u32 I2CBaseAddress, u8 I2CSlaveAddress, u16 RegisterAddress)
 This function reads DP141 VFMC- IIC. 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 I2C_Scan (u32 BaseAddress)
 This function scans VFMC- IIC. 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 pattern generator. More...
 
void sink_power_cycle (u32 power_down_time)
 This function will send power down and power up command over AUX. More...
 
void Vpg_Audio_start (void)
 This function starts audio pattern generator. More...
 
void Vpg_Audio_stop ()
 This function stops audio pattern generator. More...
 
void resetIp ()
 This function toggles HW reset line for all IP's. 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 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...
 

Function Documentation

void clk_wiz_locked ( void  )

This function to check MMCM lock status.

Parameters
None.
Returns
None.
Note
None.

This function to check MMCM lock status.

Returns
None

Referenced by start_tx().

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 use h/w timer to count specific Microseconds.

Parameters
pointerto timer
MicroSecondsto wait
Returns
None.
Note
None.

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.

Referenced by DpTxSs_SetupIntrSystem(), reconfig_clkwiz(), sink_power_cycle(), and start_tx().

void DpPt_HpdEventHandler ( void *  InstancePtr)

This function takes care HPD event.

Returns
None.
Note
None.

References XDpTxSs::DpPtr, sink_power_down(), sink_power_up(), and XDpTxSs_IsConnected().

Referenced by DpTxSs_SetupIntrSystem().

void DpPt_HpdPulseHandler ( void *  InstancePtr)

This function takes care HPD pulse interrupt.

Returns
None.
Note
None.

References XDpTxSs::DpPtr.

Referenced by DpTxSs_SetupIntrSystem().

void DpPt_LinkrateChgHandler ( void *  InstancePtr)

This function sets link line rate.

Parameters
@returnNone.
Note
None.

References get_LineRate(), and set_vphy().

Referenced by DpTxSs_SetupIntrSystem().

int DpPt_SetupIntrSystem ( )

This function is sets up Interrupt system and start it.

Returns
None.

References XDpTxSs::Config, and 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_AccessLaneSetHandler ( void *  InstancePtr)

This function is the callback function for Access lane set request.

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.
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().

u8 i2c_read_dp141 ( u32  I2CBaseAddress,
u8  I2CSlaveAddress,
u16  RegisterAddress 
)

This function reads DP141 VFMC- IIC.

Parameters
None.
Returns
None.
Note
None.
void I2C_Scan ( u32  BaseAddress)

This function scans VFMC- IIC.

Parameters
None.
Returns
None.
Note
None.

Referenced by VideoFMC_Init().

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 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 
)

This is for Tx only mode This function will start outputting internal video pattern image Setup GT, DP, pattern and generator.

Parameters
line_rateLink rate setting for the DisplayPort transmission
lane_countNumber of lanes to use for transmission
res_tableVideo resolution mode from the resolution table
bpcBits per color component (e.g., 8, 10, 12)
patPattern type identifier (unused parameter)
pat_updatePattern update flag to select video pattern
Note
This function configures the DisplayPort TX subsystem with the specified parameters, trains the link, and starts video output with the selected internal pattern generator settings.

References clk_wiz_locked(), DpPt_CustomWaitUs(), XDpTxSs::DpPtr, XDpTxSs_UsrOpt::NumOfStreams, sink_power_cycle(), XDpTxSs::UsrOpt, Vpg_StreamSrcConfigure(), Vpg_VidgenSetUserPattern(), XDpTxSs_UsrOpt::VtcAdjustBs, XDpTxSs::VtcPtr, XDpTxSs_CheckLinkStatus(), XDpTxSs_SetBpc(), XDpTxSs_SetLaneCount(), XDpTxSs_SetLinkRate(), XDpTxSs_SetVidMode(), and XDpTxSs_VtcSetup().

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 pattern 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

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

Parameters
None.
Returns
None.
Note
None.

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

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

Parameters
None.
Returns
None.
Note
None.

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

void Vpg_Audio_start ( void  )

This function starts audio pattern generator.

Returns
None.
Note
None.
void Vpg_Audio_stop ( void  )

This function stops audio pattern generator.

Returns
None.
Note
None.