embeddedsw/XilinxProcessorIPLib/drivers/scaler/intgtest/scaler_intg_basic.c

672 lines
20 KiB
C
Raw Normal View History

/******************************************************************************
*
* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
* AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
* SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE,
* OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
* APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
* THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
* AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
* FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY
* WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
* (c) Copyright 2014 Xilinx Inc.
* All rights reserved.
*
******************************************************************************/
/*****************************************************************************/
/**
*
* @file scaler_intg_basic.c
*
* @note
*
* This test works with Zynq702 system.
*
* <pre>
*
* MODIFICATION HISTORY:
*
* Ver Who Date Changes
* ----- ------ -------- ---------------------------------------------
* 7.0 adk 22/08/14 First release.
* </pre>
*
******************************************************************************/
/***************************** Include Files *********************************/
#include "xscaler.h"
#include "xscaler_hw.h"
#include "xparameters.h"
#include "scaler_intgtest.h"
/************************** Constant Definitions *****************************/
/***************** Macros (Inline Functions) Definitions *********************/
/*****************************************************************************/
/**
*
* Compare numbers. If not equal, then output message and increment fail
* counter. The message contains the line number of the failure, the
* name of the variable, and its actual and expected values in hex and
* decimal. If equal, display current test pass number to user.
* An example:
*
* <pre>
* 1 UINT32 result = 5;
* 2 UINT32 expected = 17;
* 3
* 4 CT_CMP_NUM(UINT32, result, expected)
*
* yields the output:
*
* FAIL: 0004: result=5(5h), expected 17(11h)
* </pre>
*
* @param Type is data type to compare (must be an ordinal type such
* as int)
* @param Val_16 is the actual data retrieved from test
* @param Val_32 is the expected value
*
* @note Usage: CT_CMP_NUM(<type>, actual, expected)
*
*****************************************************************************/
#define check_status_update(Type, Val_16, Val_32) \
if((Type)(Val_16) != (Type)(Val_32)){ \
CT_CMP_NUM(Type, XST_FAILURE, XST_SUCCESS); \
} \
else{ \
CT_NotifyNextPass(); \
} \
/**************************** Type Definitions *******************************/
#define round(x) ((x) >= 0 ? (s32)((x) + 0.5) : (s32)((x) - 0.5))
/************************** Function Prototypes ******************************/
/************************** Variable Definitions *****************************/
/************************** Function Definitions *****************************/
/*****************************************************************************/
/**
*
* This function executes the XScaler Self test.
*
* @param TestLoops is the number of times to execute test.
*
* @return Returns the total number of test failures.
*
* @note None.
*
******************************************************************************/
int Scaler_Intg_SelfTest(int TestLoops)
{
u32 Status = (u32)XST_SUCCESS;
double HoriScaleFactor;
double VertScaleFactor;
u32 OldScalerReg;
u32 NewScalerReg;
u32 LumaLeftH;
u32 LumaTopV;
u32 ChromaLeftH;
u32 ChromaTopV;
u32 OutSize;
u32 InLine;
u32 InPixel;
u32 SrcSize;
u32 QuantizedHoriSize;
u32 QuantizedVertSize;
u32 QuantizedInLastPixel;
u32 QuantizedInLastLine;
u32 PhaseRegValue;
u16 VertPhaseNum;
u16 HoriPhaseNum;
u8 ChromaFormat;
u8 ChromaLumaShareCoeff;
u8 HoriVertShareCoeff;
u8 VertSetIndex;
u8 HoriSetIndex;
u32 InLine_1;
u32 InPixel_1;
u32 OutSize_1 ;
u32 SrcSize_1 ;
double HoriScaleFactor_1;
double VertScaleFactor_1;
XScaler ScalerInst;
XScalerStartFraction StartFractionInst;
XScalerCoeffBank CoeffBankPtr;
XScalerAperture AperturePtr;
XScalerAperture AperturePtr_1;
XScaler_Config *Config;
CT_TestReset("Scaler Self Test .. ..");
while (TestLoops--) {
CT_NotifyNextPass();
/* Initialize the XScaler instance. */
Status = Scaler_Initialize(&ScalerInst, (u16)SCALER_0_DEVICE_ID);
if (Status != XST_SUCCESS) {
return Status;
}
/*****************************************************************************/
/* XScaler_GetVersion */
/*Test case 1 */
NewScalerReg = XScaler_GetVersion(&ScalerInst);
if (NewScalerReg != 0x00000000) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
/*Test case 3 */
// XScaler_GetVersion(Null);
/*****************************************************************************/
/* XScaler_Disable */
/*Test case 1 */
XScaler_Disable(&ScalerInst);
if (0x0 == ((XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_CTL_OFFSET)) & ~(XSCL_CTL_SW_EN_MASK))) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
/*
* Negative Test Case
*/
// XScaler_Disable(&ScalerInst);
/*****************************************************************************/
/* XScaler_Enable */
/* check the bit 0 of control register, default is 0*/
/*Test case 1 */
XScaler_Enable(&ScalerInst);
if(0x00000001 == ((XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_CTL_OFFSET)) | (XSCL_CTL_SW_EN_MASK))){
check_status_update(u32, 1, 1);
}
else{
check_status_update(u32, 0, 1);
}
XScaler_Enable(&ScalerInst);
/*****************************************************************************/
/* XScaler_SetPhaseNum */
/* Test case 1*/
VertPhaseNum = 1;
ScalerInst.Config.MaxPhaseNum = 1;
HoriPhaseNum = 1;
ScalerInst.Config.MaxPhaseNum = 1;
XScaler_SetPhaseNum(&ScalerInst, VertPhaseNum, HoriPhaseNum);
OldScalerReg = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_NUMPHASE_OFFSET);
NewScalerReg = (VertPhaseNum << XSCL_NUMPHASE_VERT_SHIFT) &
XSCL_NUMPHASE_VERT_MASK;
NewScalerReg |= HoriPhaseNum & XSCL_NUMPHASE_HORI_MASK;
if (NewScalerReg == OldScalerReg) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
/* Test case 2 */
XScaler_SetPhaseNum(&ScalerInst, VertPhaseNum, HoriPhaseNum);
OldScalerReg = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_NUMPHASE_OFFSET);
if ((VertPhaseNum == (OldScalerReg & XSCL_NUMPHASE_VERT_MASK) >>
XSCL_NUMPHASE_VERT_SHIFT) &&
(HoriPhaseNum == (OldScalerReg &
XSCL_NUMPHASE_HORI_MASK))) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
/*
* Negative Test Case
*/
/* Test case 3 */
//XScaler_SetPhaseNum(Null, VertPhaseNum, HoriPhaseNum);
/*****************************************************************************/
/* XScaler_GetPhaseNum */
XScaler_GetPhaseNum(&ScalerInst, &VertPhaseNum, &HoriPhaseNum);
PhaseRegValue = XScaler_ReadReg((ScalerInst).Config.BaseAddress,
XSCL_NUMPHASE_OFFSET);
OldScalerReg = (PhaseRegValue & XSCL_NUMPHASE_VERT_MASK) >>
XSCL_NUMPHASE_VERT_SHIFT;
NewScalerReg = PhaseRegValue & XSCL_NUMPHASE_HORI_MASK;
if ((NewScalerReg == HoriPhaseNum) && (OldScalerReg == VertPhaseNum)) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
/*
* Negative Test Case
*/
/* Test case 3 */
//XScaler_GetPhaseNum(Null, &VertPhaseNum, &HoriPhaseNum);
/*****************************************************************************/
XScaler_SetStartFraction(&ScalerInst, &StartFractionInst);
LumaLeftH = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_FRCTLUMALEFT_OFFSET);
LumaTopV = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_FRCTLUMATOP_OFFSET);
ChromaLeftH = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_FRCTCHROMALEFT_OFFSET);
ChromaTopV = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_FRCTCHROMATOP_OFFSET);
if(((LumaLeftH)==((u32)StartFractionInst.LumaLeftHori &
XSCL_FRCTLUMALEFT_VALUE_MASK)) &&
( LumaTopV == ((u32)StartFractionInst.LumaTopVert &
XSCL_FRCTLUMATOP_VALUE_MASK)) &&
(ChromaLeftH == ((u32)StartFractionInst.ChromaLeftHori &
XSCL_FRCTCHROMALEFT_VALUE_MASK)) &&
(ChromaTopV == ((u32)StartFractionInst.ChromaTopVert &
XSCL_FRCTCHROMATOP_VALUE_MASK))) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
/*
* Negative Test Case
*/
//XScaler_SetStartFraction(Null, Null1);
/*****************************************************************************/
XScaler_GetStartFraction(&ScalerInst, &StartFractionInst);
LumaLeftH = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_FRCTLUMALEFT_OFFSET) &
XSCL_FRCTLUMALEFT_VALUE_MASK;
LumaTopV = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_FRCTLUMATOP_OFFSET) &
XSCL_FRCTLUMATOP_VALUE_MASK;
ChromaLeftH = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_FRCTCHROMALEFT_OFFSET) &
XSCL_FRCTCHROMALEFT_VALUE_MASK;
ChromaTopV = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_FRCTCHROMATOP_OFFSET) &
XSCL_FRCTCHROMATOP_VALUE_MASK;
if ((LumaLeftH == StartFractionInst.LumaLeftHori) &&
(LumaTopV == StartFractionInst.LumaTopVert) &&
(ChromaLeftH == StartFractionInst.ChromaLeftHori) &&
(ChromaTopV == StartFractionInst.ChromaTopVert)) {
check_status_update(u32, 1, 1);
}
else
{
check_status_update(u32, 0, 1);
}
/*
* Negative Test Case
*/
//XScaler_GetStartFraction(Null, Null1);
/*****************************************************************************/
XScaler_GetCoeffBankSharingInfo(&ScalerInst,
&ChromaFormat,
&ChromaLumaShareCoeff,
&HoriVertShareCoeff);
if (ChromaFormat == ScalerInst.Config.ChromaFormat) {
check_status_update(u32, 1, 1);
}
else
{
check_status_update(u32, 0, 1);
}
if (ScalerInst.Config.SeparateHvCoef !=0 ) {
if (HoriVertShareCoeff == 0) {
check_status_update(u32, 1, 1);
}
else
{
check_status_update(u32, 0, 1);
}
}
else {
if (HoriVertShareCoeff == 1) {
check_status_update(u32, 1, 1);
}
else
{
check_status_update(u32, 0, 1);
}
}
if (ChromaFormat ==XSCL_CHROMA_FORMAT_422 ) {
if(ScalerInst.Config.SeparateYcCoef!=0)
{
if (ChromaLumaShareCoeff == 0) {
check_status_update(u32, 1, 1);
}
else
{
check_status_update(u32, 0, 1);
}
}
}
if(ChromaFormat == XSCL_CHROMA_FORMAT_422){
if (ChromaLumaShareCoeff == 1) {
check_status_update(u32, 1, 1);
}
else
{
check_status_update(u32, 0, 1);
}
}
/*****************************************************************************/
InLine_1= 23;
OutSize_1 = 22;
SrcSize_1 = 11 ;
InPixel_1 = 63;
XScaler_CoefValueLookup(InLine_1, OutSize_1, SrcSize_1, InPixel_1);
if(Xil_AssertStatus == XIL_ASSERT_NONE) {
check_status_update(u32, 1, 1);
}
else{
check_status_update(u32, 0, 1);
}
/*****************************************************************************/
/* Xil_AssertVoid(CoeffBankPtr->SetIndex <
InstancePtr->Config.CoeffSetNum);
Xil_AssertVoid(CoeffBankPtr->CoeffValueBuf != NULL);
Xil_AssertVoid(CoeffBankPtr->PhaseNum >= (XSCL_MIN_PHASE_NUM));
Xil_AssertVoid(CoeffBankPtr->PhaseNum <=
InstancePtr->Config.MaxPhaseNum);
Xil_AssertVoid(CoeffBankPtr->TapNum > 0U);
Xil_AssertVoid(CoeffBankPtr->TapNum <= (XSCL_MAX_TAP_NUM)); */
CoeffBankPtr.SetIndex = 1;
ScalerInst.Config.CoeffSetNum = 2;
CoeffBankPtr.PhaseNum = 6;
ScalerInst.Config.MaxPhaseNum = 6;
CoeffBankPtr.TapNum = (XSCL_MAX_TAP_NUM);
CoeffBankPtr.CoeffValueBuf = XScaler_CoefValueLookup(640, 480,CoeffBankPtr.TapNum, CoeffBankPtr.PhaseNum);
XScaler_LoadCoeffBank(&ScalerInst, &CoeffBankPtr);
NewScalerReg = CoeffBankPtr.SetIndex & XSCL_COEFFSETADDR_ADDR_MASK;
OldScalerReg = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_COEFFSETADDR_OFFSET);
if (NewScalerReg == OldScalerReg) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
/*
* Negative Test Case
*/
//XScaler_LoadCoeffBank(Null, Null2);
/****************************************************************************/
VertSetIndex = 0 ;
ScalerInst.Config.CoeffSetNum = 1 ;
HoriSetIndex = 0;
ScalerInst.Config.CoeffSetNum = 1;
XScaler_SetActiveCoeffSet(&ScalerInst, VertSetIndex, HoriSetIndex);
OldScalerReg = ((u32)HoriSetIndex) & XSCL_COEFFSETS_HORI_MASK;
OldScalerReg |= (((u32)VertSetIndex) << XSCL_COEFFSETS_VERT_SHIFT) &
XSCL_COEFFSETS_VERT_MASK;
NewScalerReg = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_COEFFSETS_OFFSET);
if (NewScalerReg == OldScalerReg) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
/*
* Negative Test Case
*/
//XScaler_SetActiveCoeffSet(Null, VertSetIndex, HoriSetIndex);
/*****************************************************************************/
XScaler_GetActiveCoeffSet(&ScalerInst, &VertSetIndex, &HoriSetIndex);
NewScalerReg = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_COEFFSETS_OFFSET);
if (((u8)(NewScalerReg & XSCL_COEFFSETS_VERT_MASK) >>
XSCL_COEFFSETS_VERT_SHIFT) == VertSetIndex &&
(u8)(NewScalerReg & XSCL_COEFFSETS_HORI_MASK) ==
HoriSetIndex) {
check_status_update(u32, 1, 1);
} else {
check_status_update(u32, 0, 1);
}
/*****************************************************************************/
memset((void *)&AperturePtr, 0, sizeof(XScalerAperture));
memset((void *)&AperturePtr_1, 0, sizeof(XScalerAperture));
// memset((void *)&ScalerInst, 0, sizeof(XScaler));
AperturePtr.InFirstLine = 0;
AperturePtr.InLastLine = 719;
AperturePtr.InLastPixel = 1279;
AperturePtr.InFirstPixel = 0;
AperturePtr.OutVertSize = 1280;
AperturePtr.OutHoriSize =720;
XScaler_SetAperture(&ScalerInst, &AperturePtr);
/* Calculate vertical and horizontal scale factors */
VertScaleFactor = (double)(AperturePtr.InLastLine -
AperturePtr.InFirstLine + 1.0);
VertScaleFactor /= (double)(AperturePtr.OutVertSize);
HoriScaleFactor = (double)(AperturePtr.InLastPixel -
AperturePtr.InFirstPixel + 1.0);
HoriScaleFactor /= (double)AperturePtr.OutHoriSize;
/* Convert HoriScaleFactor and VertScaleFactor values into a format
* to write to HSF and VSF registers.
*/
VertScaleFactor = (u32)(VertScaleFactor * XSCL_SHRINK_FACTOR);
HoriScaleFactor = (u32)(HoriScaleFactor * XSCL_SHRINK_FACTOR);
/* Quantize Aperture - feed scale-factor back in to provide the
* actual aperture required to generate the desired number of output
* samples.
*/
QuantizedHoriSize = AperturePtr.OutHoriSize - 1;
QuantizedHoriSize = (u32)(((double)QuantizedHoriSize *
HoriScaleFactor) / XSCL_SHRINK_FACTOR);
QuantizedHoriSize += 1 + (ScalerInst.Config.HoriTapNum + 1) / 2;
QuantizedInLastPixel = AperturePtr.InFirstPixel + QuantizedHoriSize
- 1;
if (QuantizedInLastPixel > AperturePtr.InLastPixel)
QuantizedInLastPixel = AperturePtr.InLastPixel;
QuantizedVertSize = AperturePtr.OutVertSize - 1;
QuantizedVertSize = (u32)(((float)QuantizedVertSize *
VertScaleFactor) / XSCL_SHRINK_FACTOR);
QuantizedVertSize += 1 + (ScalerInst.Config.VertTapNum + 1) / 2;
QuantizedInLastLine = AperturePtr.InFirstLine + QuantizedVertSize - 1;
if (QuantizedInLastLine > AperturePtr.InLastLine)
QuantizedInLastLine = AperturePtr.InLastLine;
/* Calculate input line, pixel and output size values */
InLine = AperturePtr.InFirstLine & XSCL_APTVERT_FIRSTLINE_MASK;
InLine |= (QuantizedInLastLine << XSCL_APTVERT_LASTLINE_SHIFT)
& XSCL_APTVERT_LASTLINE_MASK;
InPixel = AperturePtr.InFirstPixel & XSCL_APTHORI_FIRSTPXL_MASK;
InPixel |= (QuantizedInLastPixel << XSCL_APTHORI_LASTPXL_SHIFT)
& XSCL_APTHORI_LASTPXL_MASK;
OutSize = AperturePtr.OutHoriSize & XSCL_OUTSIZE_NUMPXL_MASK;
OutSize |= (AperturePtr.OutVertSize << XSCL_OUTSIZE_NUMLINE_SHIFT)
& XSCL_OUTSIZE_NUMLINE_MASK;
SrcSize = AperturePtr.SrcHoriSize & XSCL_SRCSIZE_NUMPXL_MASK;
SrcSize |= (AperturePtr.SrcVertSize << XSCL_SRCSIZE_NUMLINE_SHIFT)
& XSCL_SRCSIZE_NUMLINE_MASK;
//InLine_1 = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
// XSCL_FRCTLUMALEFT_OFFSET);
InLine_1 = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_APTVERT_OFFSET);
InPixel_1 = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_APTHORI_OFFSET);
OutSize_1 =XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_OUTSIZE_OFFSET);
SrcSize_1 =XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_SRCSIZE_OFFSET);
HoriScaleFactor_1 =XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_HSF_OFFSET);
HoriScaleFactor_1 = (u32)round(HoriScaleFactor_1);
VertScaleFactor_1=XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_VSF_OFFSET);
VertScaleFactor_1 = (u32)round(VertScaleFactor_1);
/*if ((InLine == XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_FRCTLUMALEFT_OFFSET)) && (InPixel ==
XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_APTHORI_OFFSET)) &&
(OutSize == XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_OUTSIZE_OFFSET)) &&
(SrcSize == XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_SRCSIZE_OFFSET)) &&
((u32)(round(HoriScaleFactor)) ==
XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_HSF_OFFSET)) &&
((u32)(round(VertScaleFactor)) ==
XScaler_ReadReg(ScalerInst.Config.BaseAddress,
XSCL_VSF_OFFSET))) */
if (InLine == InLine_1 && InPixel == InPixel_1 && OutSize == OutSize_1
&& SrcSize== SrcSize_1 && HoriScaleFactor == HoriScaleFactor_1
&& VertScaleFactor == VertScaleFactor_1) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
/*
* Negative Test Case
*/
//XScaler_SetAperture(Null, Null3);
/****************************************************************************/
AperturePtr.InFirstLine = 0;
AperturePtr.InLastLine = 719;
AperturePtr.InLastPixel = 1279;
AperturePtr.InFirstPixel = 0;
AperturePtr.OutVertSize = 1280;
AperturePtr.OutHoriSize = 720;
XScaler_GetAperture(&ScalerInst, &AperturePtr);
InLine = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
(XSCL_APTVERT_OFFSET));
InPixel = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
(XSCL_APTHORI_OFFSET));
OutSize = XScaler_ReadReg(ScalerInst.Config.BaseAddress,
(XSCL_OUTSIZE_OFFSET));
/* Parse the info and populate the aperture structure */
AperturePtr_1.InFirstLine = (InLine) & (XSCL_APTVERT_FIRSTLINE_MASK);
AperturePtr_1.InLastLine = ((InLine) & (XSCL_APTVERT_LASTLINE_MASK)) >>
(XSCL_APTVERT_LASTLINE_SHIFT);
AperturePtr_1.InFirstPixel = (InPixel) & (XSCL_APTHORI_FIRSTPXL_MASK);
AperturePtr_1.InLastPixel = ((InPixel) &
(XSCL_APTHORI_LASTPXL_MASK)) >>
(XSCL_APTHORI_LASTPXL_SHIFT);
AperturePtr_1.OutHoriSize = (OutSize) & (XSCL_OUTSIZE_NUMPXL_MASK);
AperturePtr_1.OutVertSize = ((OutSize) &
(XSCL_OUTSIZE_NUMLINE_MASK)) >>
(XSCL_OUTSIZE_NUMLINE_SHIFT);
if(!(memcmp(&AperturePtr, &AperturePtr_1, sizeof(XScalerAperture)))) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
/*
* Run XScaler self test.
*/
// Status = XScaler_SelfTest(&ScalerInst);
// if (Status != XST_SUCCESS) {
// check_status_update(u32, 0, 1);
// return XST_FAILURE;
// }
// else{
// check_status_update(u32, 1, 1);
// }
/*
* Test case for lookupconfig
*/
Config = XScaler_LookupConfig(XSCALAR_DEVICEID);
if(Config == NULL) {
check_status_update(u32, 1, 1);
}
else {
check_status_update(u32, 0, 1);
}
CT_CMP_NUM(int, Status, XST_SUCCESS);
}
return (u32)(CT_GetTestFailures());
}