Пример #1
0
/**
*
* This function disables the DisplayPort Transmitter Subsystem sub-cores.
*
* @param	InstancePtr is a pointer to the XDpTxSs core instance.
*
* @return	None.
*
* @note		None.
*
******************************************************************************/
void XDpTxSs_Stop(XDpTxSs *InstancePtr)
{
	u8 Index;

	/* Verify argument. */
	Xil_AssertVoid(InstancePtr != NULL);

	if (InstancePtr->DpPtr) {
		/* disable main link */
		XDp_TxDisableMainLink(InstancePtr->DpPtr);
	}

#if (XPAR_XDUALSPLITTER_NUM_INSTANCES > 0)
	if (InstancePtr->DsPtr) {
		/* Disable Dual Splitter */
		XDualSplitter_Disable(InstancePtr->DsPtr);
	}
#endif

	for (Index = 0; Index < InstancePtr->Config.NumMstStreams; Index++) {
		if (InstancePtr->VtcPtr[Index]) {
			/* Disable all the VTC sub-cores */
			XVtc_Disable(InstancePtr->VtcPtr[Index]);
		}
	}
}
Пример #2
0
/**
*
* vgen_config
* - configures the generator to generate missing syncs
*
* @param	pVtc is a pointer to an initialized VTC instance
*           ResolutionId identified a video resolution
*           vVerbose = 0 no verbose, 1 minimal verbose, 2 most verbose
*
* @return	0 if all tests pass, 1 otherwise.
*
* @note		None.
*
******************************************************************************/
int vgen_config(XVtc *pVtc, int ResolutionId, int bVerbose)
{
	vres_timing_t VideoTiming;
	int HFrontPorch;
	int HSyncWidth;
	int HSyncPol;
	int HBackPorch;
	int VFrontPorch;
	int VSyncWidth;
	int VSyncPol;
	int VBackPorch;
	int LineWidth;
	int FrameHeight;

	XVtc_Signal Signal;		/* VTC Signal configuration */
	XVtc_Polarity Polarity;		/* Polarity configuration */
	XVtc_SourceSelect SourceSelect;	/* Source Selection configuration */


	/* Get Video Resolution timing */
    if ( bVerbose )
    {
		xil_printf( "\tVideo Resolution = %s\n\r", vres_get_name(ResolutionId) );
	}
	vres_get_timing(ResolutionId, &VideoTiming);
	HFrontPorch = VideoTiming.HFrontPorch;
	HSyncWidth  = VideoTiming.HSyncWidth;
	HSyncPol    = VideoTiming.HSyncPolarity;
	HBackPorch  = VideoTiming.HBackPorch;
	VFrontPorch = VideoTiming.VFrontPorch;
	VSyncWidth  = VideoTiming.VSyncWidth;
	VSyncPol    = VideoTiming.VSyncPolarity;
	VBackPorch  = VideoTiming.VBackPorch;
	LineWidth   = VideoTiming.HActiveVideo;
	FrameHeight = VideoTiming.VActiveVideo;
	
	/* Disable/Reset VTC */
	XVtc_Disable(pVtc, XVTC_EN_GENERATOR);
	XVtc_Reset(pVtc);	

    /* Set up Polarity of all outputs */
	memset((void *)&Polarity, 0, sizeof(Polarity));
	Polarity.ActiveChromaPol = 1;
	Polarity.ActiveVideoPol = 1;
	Polarity.FieldIdPol = 0;
	Polarity.VBlankPol = 1;
	Polarity.VSyncPol = VSyncPol;
	Polarity.HBlankPol = 1;
	Polarity.HSyncPol = HSyncPol;

	/* Set up Generator */
	memset((void *)&Signal, 0, sizeof(XVtc_Signal));
	Signal.OriginMode = 1; //Set Frame Origin to Start of Active Video
	Signal.HTotal = HFrontPorch + HSyncWidth + HBackPorch + LineWidth;
	Signal.HActiveStart     = 0;
	Signal.HFrontPorchStart = LineWidth;
	Signal.HSyncStart       = LineWidth + HFrontPorch;
	Signal.HBackPorchStart  = LineWidth + HFrontPorch + HSyncWidth;
	Signal.V0Total = FrameHeight + VFrontPorch + VSyncWidth + VBackPorch;
	Signal.V0ChromaStart     = 0;
	Signal.V0ActiveStart     = 0;
	Signal.V0FrontPorchStart = FrameHeight;
	Signal.V0SyncStart       = FrameHeight + VFrontPorch;
	Signal.V0BackPorchStart  = FrameHeight + VFrontPorch + VSyncWidth;

	/* Set up source select */
	memset((void *)&SourceSelect, 0, sizeof(SourceSelect));
	SourceSelect.VBlankPolSrc = 1;
	SourceSelect.VSyncPolSrc = 1;
	SourceSelect.HBlankPolSrc = 1;
	SourceSelect.HSyncPolSrc = 1;
	SourceSelect.ActiveVideoPolSrc = 1;
	SourceSelect.ActiveChromaPolSrc= 1;
	SourceSelect.VChromaSrc = 1;
	SourceSelect.VActiveSrc = 1;
	SourceSelect.VBackPorchSrc = 1;
	SourceSelect.VSyncSrc = 1;
	SourceSelect.VFrontPorchSrc = 1;
	SourceSelect.VTotalSrc = 1;
	SourceSelect.HActiveSrc = 1;
	SourceSelect.HBackPorchSrc = 1;
	SourceSelect.HSyncSrc = 1;
	SourceSelect.HFrontPorchSrc = 1;
	SourceSelect.HTotalSrc = 1;

	if ( bVerbose == 2 )
	{
		xil_printf("\tVTC Generator Configuration\n\r" );
		xil_printf("\t\tHorizontal Timing:\n\r" );
		xil_printf("\t\t\tHActiveStart = %d\r\n", Signal.HActiveStart);
		xil_printf("\t\t\tHFrontPorchStart %d\r\n", Signal.HFrontPorchStart);
		xil_printf("\t\t\tHSyncStart %d\r\n", Signal.HSyncStart);
		xil_printf("\t\t\tHBackPorchStart %d\r\n", Signal.HBackPorchStart);
		xil_printf("\t\t\tHTotal = %d\r\n", Signal.HTotal);
		xil_printf("\t\tVertical Timing:\n\r" );
		xil_printf("\t\t\tV0ActiveStart %d\r\n", Signal.V0ActiveStart);
		xil_printf("\t\t\tV0FrontPorchStart %d\r\n", Signal.V0FrontPorchStart);
		xil_printf("\t\t\tV0SyncStart %d\r\n", Signal.V0SyncStart);
		xil_printf("\t\t\tV0BackPorchStart %d\r\n", Signal.V0BackPorchStart);
		xil_printf("\t\t\tV0Total %d\r\n", Signal.V0Total);
	}

	/* Write configuration to hardware */
	XVtc_SetPolarity(pVtc, &Polarity);
	XVtc_SetGenerator(pVtc, &Signal);
	XVtc_SetSource(pVtc, &SourceSelect);

	/* Enable the generator module */
	XVtc_DisableSync(pVtc);
	//XVtc_SetFSync(pVtc, 0, Signal.V0SyncStart, 1);
	XVtc_Enable(pVtc, XVTC_EN_GENERATOR);

	XVtc_RegUpdate(pVtc);

	/* Return success */

	return 0;
}