XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_selftest.c
s32 XScuTimer_SelfTest(XScuTimer *InstancePtr)
{
	u32 Register;
	u32 CtrlOrig;
	u32 LoadOrig;
	s32 Status;

	/*
	 * Assert to ensure the inputs are valid and the instance has been
	 * initialized.
	 */
	Xil_AssertNonvoid(InstancePtr != NULL);
	Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);

	/*
	 * Save the contents of the Control Register and stop the timer.
	 */
	CtrlOrig = XScuTimer_ReadReg(InstancePtr->Config.BaseAddr,
				  XSCUTIMER_CONTROL_OFFSET);
	Register = CtrlOrig & (u32)(~XSCUTIMER_CONTROL_ENABLE_MASK);
	XScuTimer_WriteReg(InstancePtr->Config.BaseAddr,
			XSCUTIMER_CONTROL_OFFSET, Register);

	/*
	 * Save the contents of the Load Register.
	 * Load a new test value in the Load Register, read it back and
	 * compare it with the written value.
	 */
	LoadOrig = XScuTimer_ReadReg((InstancePtr)->Config.BaseAddr,
				  XSCUTIMER_LOAD_OFFSET);
	XScuTimer_LoadTimer(InstancePtr, XSCUTIMER_SELFTEST_VALUE);
	Register = XScuTimer_ReadReg((InstancePtr)->Config.BaseAddr,
				  XSCUTIMER_LOAD_OFFSET);

	/*
	 * Restore the contents of the Load Register and Control Register.
	 */
	XScuTimer_LoadTimer(InstancePtr, LoadOrig);
	XScuTimer_WriteReg(InstancePtr->Config.BaseAddr,
			XSCUTIMER_CONTROL_OFFSET, CtrlOrig);

	/*
	 * Return a Failure if the contents of the Load Register do not
	 * match with the value written to it.
	 */
	if (Register != XSCUTIMER_SELFTEST_VALUE) {
		Status = (s32)XST_FAILURE;
	}
	else {
		Status = (s32)XST_SUCCESS;
	}

	return Status;
}
/****************************************************************************/
/**
*
* Run a self-test on the timer. This test clears the timer enable bit in
* the control register, writes to the timer load register and verifies the
* value read back matches the value written and restores the control register
* and the timer load register.
*
* @param	InstancePtr is a pointer to the XScuTimer instance.
*
* @return
*		- XST_SUCCESS if self-test was successful.
*		- XST_FAILURE if self test was not successful.
*
* @note		None.
*
******************************************************************************/
Run a self-test on the timer. This test clears the timer enable bit in
the control register, writes to the timer load register and verifies the
value read back matches the value written and restores the control register
and the timer load register.
Run a self - test on the timer . This test clears the timer enable bit in the control register writes to the timer load register and verifies the value read back matches the value written and restores the control register and the timer load register .
s32 XScuTimer_SelfTest(XScuTimer *InstancePtr)
{
	u32 Register;
	u32 CtrlOrig;
	u32 LoadOrig;
	s32 Status;
	Xil_AssertNonvoid(InstancePtr != NULL);
	Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
	CtrlOrig = XScuTimer_ReadReg(InstancePtr->Config.BaseAddr,
				  XSCUTIMER_CONTROL_OFFSET);
	Register = CtrlOrig & (u32)(~XSCUTIMER_CONTROL_ENABLE_MASK);
	XScuTimer_WriteReg(InstancePtr->Config.BaseAddr,
			XSCUTIMER_CONTROL_OFFSET, Register);
	LoadOrig = XScuTimer_ReadReg((InstancePtr)->Config.BaseAddr,
				  XSCUTIMER_LOAD_OFFSET);
	XScuTimer_LoadTimer(InstancePtr, XSCUTIMER_SELFTEST_VALUE);
	Register = XScuTimer_ReadReg((InstancePtr)->Config.BaseAddr,
				  XSCUTIMER_LOAD_OFFSET);
	XScuTimer_LoadTimer(InstancePtr, LoadOrig);
	XScuTimer_WriteReg(InstancePtr->Config.BaseAddr,
			XSCUTIMER_CONTROL_OFFSET, CtrlOrig);
	if (Register != XSCUTIMER_SELFTEST_VALUE) {
		Status = (s32)XST_FAILURE;
	}
	else {
		Status = (s32)XST_SUCCESS;
	}
	return Status;
}
s32 XScuTimer_SelfTest ( XScuTimer * InstancePtr ) { u32 Register ; u32 CtrlOrig ; u32 LoadOrig ; s32 Status ; Xil_AssertNonvoid ( InstancePtr != NULL ) ; Xil_AssertNonvoid ( InstancePtr -> IsReady == XIL_COMPONENT_IS_READY ) ; CtrlOrig = XScuTimer_ReadReg ( InstancePtr -> Config . BaseAddr , XSCUTIMER_CONTROL_OFFSET ) ; Register = CtrlOrig & ( u32 ) ( ~ XSCUTIMER_CONTROL_ENABLE_MASK ) ; XScuTimer_WriteReg ( InstancePtr -> Config . BaseAddr , XSCUTIMER_CONTROL_OFFSET , Register ) ; LoadOrig = XScuTimer_ReadReg ( ( InstancePtr ) -> Config . BaseAddr , XSCUTIMER_LOAD_OFFSET ) ; XScuTimer_LoadTimer ( InstancePtr , XSCUTIMER_SELFTEST_VALUE ) ; Register = XScuTimer_ReadReg ( ( InstancePtr ) -> Config . BaseAddr , XSCUTIMER_LOAD_OFFSET ) ; XScuTimer_LoadTimer ( InstancePtr , LoadOrig ) ; XScuTimer_WriteReg ( InstancePtr -> Config . BaseAddr , XSCUTIMER_CONTROL_OFFSET , CtrlOrig ) ; if ( Register != XSCUTIMER_SELFTEST_VALUE ) { Status = ( s32 ) XST_FAILURE ; } else { Status = ( s32 ) XST_SUCCESS ; } return Status ; }
Run a self-test on the timer.
Run a self - test on the timer .
/*
	 * Assert to ensure the inputs are valid and the instance has been
	 * initialized.
	 */ /*
	 * Save the contents of the Control Register and stop the timer.
	 */ /*
	 * Save the contents of the Load Register.
	 * Load a new test value in the Load Register, read it back and
	 * compare it with the written value.
	 */ /*
	 * Restore the contents of the Load Register and Control Register.
	 */ /*
	 * Return a Failure if the contents of the Load Register do not
	 * match with the value written to it.
	 */