OSD: Modified source files of osd_v4_0.
Modified condition of error interrupt, asserts and backward compatability. Signed-off-by: Durga challa <vnsldurg@xilinx.com>
This commit is contained in:
parent
16649d5149
commit
f026500324
4 changed files with 186 additions and 187 deletions
|
@ -139,15 +139,16 @@ static void StubErrCallBack(void *CallBackRef, u32 ErrorMask);
|
|||
*
|
||||
******************************************************************************/
|
||||
int XOsd_CfgInitialize(XOsd *InstancePtr, XOsd_Config *CfgPtr,
|
||||
u32 EffectiveAddr)
|
||||
{
|
||||
/* Verify arguments. */
|
||||
Xil_AssertNonvoid(CfgPtr != NULL);
|
||||
Xil_AssertNonvoid(CfgPtr->LayerNum <= (XOSD_MAX_NUM_OF_LAYERS));
|
||||
Xil_AssertNonvoid(EffectiveAddr != (u32)0x0U);
|
||||
|
||||
/* Setup the instance */
|
||||
(void)memset((void *)InstancePtr, 0, sizeof(XOsd));
|
||||
u32 EffectiveAddr)
|
||||
{
|
||||
/* Verify arguments. */
|
||||
Xil_AssertNonvoid(InstancePtr != NULL);
|
||||
Xil_AssertNonvoid(CfgPtr != NULL);
|
||||
Xil_AssertNonvoid(CfgPtr->LayerNum <= (XOSD_MAX_NUM_OF_LAYERS));
|
||||
Xil_AssertNonvoid(EffectiveAddr != (u32)0x00);
|
||||
|
||||
/* Setup the instance */
|
||||
(void)memset((void *)InstancePtr, 0, sizeof(XOsd));
|
||||
(void)memcpy((void *)&(InstancePtr->Config), (const void *)CfgPtr,
|
||||
sizeof(XOsd_Config));
|
||||
InstancePtr->Config.BaseAddress = EffectiveAddr;
|
||||
|
@ -197,14 +198,14 @@ void XOsd_SetActiveSize(XOsd *InstancePtr, u32 Width, u32 Height)
|
|||
{
|
||||
u32 RegValue;
|
||||
|
||||
/* Verify arguments. */
|
||||
Xil_AssertVoid(InstancePtr != NULL);
|
||||
Xil_AssertVoid(InstancePtr->IsReady == (u32)(XIL_COMPONENT_IS_READY));
|
||||
Xil_AssertVoid(Width > (u32)0x0U);
|
||||
Xil_AssertVoid(Height > (u32)0x0U);
|
||||
Xil_AssertVoid(Width <= (u32)(XOSD_ACTSIZE_NUM_PIXEL_MASK));
|
||||
Xil_AssertVoid(Height <= ((XOSD_ACTSIZE_NUM_LINE_MASK) >>
|
||||
(XOSD_ACTSIZE_NUM_LINE_SHIFT)));
|
||||
/* Verify arguments. */
|
||||
Xil_AssertVoid(InstancePtr != NULL);
|
||||
Xil_AssertVoid(InstancePtr->IsReady == (u32)(XIL_COMPONENT_IS_READY));
|
||||
Xil_AssertVoid(Width > (u32)0x0);
|
||||
Xil_AssertVoid(Height > (u32)0x0);
|
||||
Xil_AssertVoid(Width <= (u32)(XOSD_ACTSIZE_NUM_PIXEL_MASK));
|
||||
Xil_AssertVoid(Height <= ((XOSD_ACTSIZE_NUM_LINE_MASK) >>
|
||||
(XOSD_ACTSIZE_NUM_LINE_SHIFT)));
|
||||
|
||||
/* Save the dimension info in the driver instance for error handling */
|
||||
InstancePtr->ScreenWidth = Width;
|
||||
|
@ -357,14 +358,14 @@ void XOsd_SetLayerDimension(XOsd *InstancePtr, u8 LayerIndex, u16 XStart,
|
|||
/* Verify arguments. */
|
||||
Xil_AssertVoid(InstancePtr != NULL);
|
||||
Xil_AssertVoid(InstancePtr->IsReady == (u32)(XIL_COMPONENT_IS_READY));
|
||||
Xil_AssertVoid((u16)LayerIndex < InstancePtr->Config.LayerNum);
|
||||
Xil_AssertVoid(InstancePtr->Layers[LayerIndex].LayerType !=
|
||||
(XOSD_LAYER_TYPE_DISABLE));
|
||||
Xil_AssertVoid(XSize > (u16)0x0U);
|
||||
Xil_AssertVoid(YSize > (u16)0x0U);
|
||||
Xil_AssertVoid(((u32)XStart + (u32)XSize) <= InstancePtr->ScreenWidth);
|
||||
Xil_AssertVoid(((u32)YStart + (u32)YSize) <=
|
||||
InstancePtr->ScreenHeight);
|
||||
Xil_AssertVoid((u16)LayerIndex < InstancePtr->Config.LayerNum);
|
||||
Xil_AssertVoid(InstancePtr->Layers[LayerIndex].LayerType !=
|
||||
(XOSD_LAYER_TYPE_DISABLE));
|
||||
Xil_AssertVoid(XSize > (u16)0x0);
|
||||
Xil_AssertVoid(YSize > (u16)0x0);
|
||||
Xil_AssertVoid(((u32)XStart + (u32)XSize) <= InstancePtr->ScreenWidth);
|
||||
Xil_AssertVoid(((u32)YStart + (u32)YSize) <=
|
||||
InstancePtr->ScreenHeight);
|
||||
|
||||
/* Calculate the base register address of the layer to work on */
|
||||
LayerBaseRegAddr = (u32)(XOSD_L0C_OFFSET) + (((u32)LayerIndex) *
|
||||
|
@ -430,14 +431,14 @@ void XOsd_GetLayerDimension(XOsd *InstancePtr, u8 LayerIndex, u16 *XStartPtr,
|
|||
((u32)XOSD_LAYER_SIZE));
|
||||
|
||||
/* Get the origin of the layer */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
((LayerBaseRegAddr) + (XOSD_LXP)));
|
||||
*XStartPtr = (u16)((RegValue) & (XOSD_LXP_XSTART_MASK));
|
||||
*YStartPtr = (u16)((RegValue) & (XOSD_LXP_YSTART_MASK)) >>
|
||||
(XOSD_LXP_YSTART_SHIFT);
|
||||
|
||||
/* Get the size of the layer */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
((LayerBaseRegAddr) + (XOSD_LXP)));
|
||||
*XStartPtr = (u16)((RegValue) & (XOSD_LXP_XSTART_MASK));
|
||||
*YStartPtr = (u16)(((RegValue) & (XOSD_LXP_YSTART_MASK)) >>
|
||||
(XOSD_LXP_YSTART_SHIFT));
|
||||
|
||||
/* Get the size of the layer */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
LayerBaseRegAddr + (XOSD_LXS));
|
||||
*XSizePtr = (u16)((RegValue) & (XOSD_LXS_XSIZE_MASK));
|
||||
*YSizePtr = (u16)(((RegValue) & (XOSD_LXS_YSIZE_MASK)) >>
|
||||
|
@ -485,13 +486,13 @@ void XOsd_SetLayerAlpha(XOsd *InstancePtr, u8 LayerIndex,
|
|||
|
||||
/* Read the current Layer Control register value */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
((LayerBaseRegAddr) + (XOSD_LXC)));
|
||||
|
||||
/* Update the global alpha enable and the global alpha value fields */
|
||||
if (GlobalAlphaEnable != (u16)0x0U) {
|
||||
RegValue |= ((u32)(XOSD_LXC_GALPHAEN_MASK));
|
||||
}
|
||||
else {
|
||||
((LayerBaseRegAddr) + (XOSD_LXC)));
|
||||
|
||||
/* Update the global alpha enable and the global alpha value fields */
|
||||
if (GlobalAlphaEnable != (u16)0x0) {
|
||||
RegValue |= ((u32)(XOSD_LXC_GALPHAEN_MASK));
|
||||
}
|
||||
else {
|
||||
RegValue &= (u32)(~(XOSD_LXC_GALPHAEN_MASK));
|
||||
}
|
||||
RegValue &= (u32)(~(XOSD_LXC_ALPHA_MASK));
|
||||
|
@ -548,13 +549,13 @@ void XOsd_GetLayerAlpha(XOsd *InstancePtr, u8 LayerIndex,
|
|||
|
||||
/* Get the info of the global alpha enable and the global alpha value
|
||||
* fields
|
||||
*/
|
||||
*GlobalAlphaEnablePtr = (u16)((((RegValue) &
|
||||
((u32)(XOSD_LXC_GALPHAEN_MASK))) ==
|
||||
(XOSD_LXC_GALPHAEN_MASK)) ? 1U : 0U);
|
||||
*GlobalAlphaValuePtr = (u16)(((RegValue) & (XOSD_LXC_ALPHA_MASK)) >>
|
||||
(XOSD_LXC_ALPHA_SHIFT));
|
||||
}
|
||||
*/
|
||||
*GlobalAlphaEnablePtr = (u16)((((RegValue) &
|
||||
((u32)(XOSD_LXC_GALPHAEN_MASK))) ==
|
||||
(XOSD_LXC_GALPHAEN_MASK)) ? 1 : 0);
|
||||
*GlobalAlphaValuePtr = (u16)(((RegValue) & (XOSD_LXC_ALPHA_MASK)) >>
|
||||
(XOSD_LXC_ALPHA_SHIFT));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
|
@ -717,13 +718,13 @@ void XOsd_DisableLayer(XOsd *InstancePtr, u8 LayerIndex)
|
|||
Xil_AssertVoid((u16)LayerIndex < InstancePtr->Config.LayerNum);
|
||||
Xil_AssertVoid(InstancePtr->Layers[LayerIndex].LayerType !=
|
||||
(XOSD_LAYER_TYPE_DISABLE));
|
||||
|
||||
/* Calculate the base register address of the layer to work on */
|
||||
LayerBaseRegAddr = ((u32)(XOSD_L0C_OFFSET)) +
|
||||
((((u32)LayerIndex) * ((u32)(XOSD_LAYER_SIZE))));
|
||||
|
||||
/* Read the current layer control register value */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
|
||||
/* Calculate the base register address of the layer to work on */
|
||||
LayerBaseRegAddr = ((u32)(XOSD_L0C_OFFSET)) +
|
||||
((((u32)LayerIndex) * ((u32)(XOSD_LAYER_SIZE))));
|
||||
|
||||
/* Read the current layer control register value */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
((LayerBaseRegAddr) + (XOSD_LXC)));
|
||||
|
||||
/* Clear the layer enable field */
|
||||
|
@ -774,36 +775,35 @@ void XOsd_LoadColorLUTBank(XOsd *InstancePtr, u8 GcIndex, u8 BankIndex,
|
|||
& (XOSD_GCWBA_GCNUM_MASK);
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress, (XOSD_GCWBA_OFFSET),
|
||||
RegValue);
|
||||
|
||||
/* Load color data */
|
||||
if(InstancePtr->Config.SlaveAxisVideoDataWidth == (u16)(XOSD_DATA_8)) {
|
||||
for(Index = 0x0U;
|
||||
Index < ((InstancePtr->Layers[GcIndex].ColorLutSize *
|
||||
(XOSD_COLOR_ENTRY_SIZE)) / sizeof(u32));
|
||||
Index++) {
|
||||
|
||||
/* Load color data */
|
||||
if(InstancePtr->Config.SlaveAxisVideoDataWidth == (u16)(XOSD_DATA_8)) {
|
||||
for(Index = 0x0;
|
||||
Index < ((InstancePtr->Layers[GcIndex].ColorLutSize *
|
||||
(XOSD_COLOR_ENTRY_SIZE)) / sizeof(u32));
|
||||
Index++) {
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCD_OFFSET), ColorData[Index]);
|
||||
}
|
||||
}
|
||||
/* For video channel size of 10 or 12, the color size is 64 bits */
|
||||
else {
|
||||
for (Index = 0U;
|
||||
Index < (((InstancePtr->Layers[GcIndex].ColorLutSize) *
|
||||
((XOSD_DATA_2) * (XOSD_COLOR_ENTRY_SIZE))) /
|
||||
(sizeof(u32)));
|
||||
}
|
||||
/* For video channel size of 10 or 12, the color size is 64 bits */
|
||||
else {
|
||||
for (Index = 0;
|
||||
Index < (((InstancePtr->Layers[GcIndex].ColorLutSize) *
|
||||
((XOSD_DATA_2) * (XOSD_COLOR_ENTRY_SIZE))) /
|
||||
(sizeof(u32)));
|
||||
Index++) {
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCD_OFFSET), ColorData[Index]);
|
||||
}
|
||||
}
|
||||
/* Set the active color LUT bank */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET));
|
||||
RegValue &= ((u32)(~1U) << (((u32)(XOSD_GCABA_COL_SHIFT)) +
|
||||
((u32)GcIndex)));
|
||||
|
||||
RegValue |= ((u32)BankIndex) << ((XOSD_GCABA_COL_SHIFT) +
|
||||
((u32)GcIndex));
|
||||
/* Set the active color LUT bank */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET));
|
||||
RegValue &= ~((u32)1 << ((XOSD_GCABA_COL_SHIFT) + GcIndex));
|
||||
|
||||
RegValue |= ((u32)BankIndex) << ((XOSD_GCABA_COL_SHIFT) +
|
||||
((u32)GcIndex));
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress, (XOSD_GCABA_OFFSET),
|
||||
RegValue);
|
||||
}
|
||||
|
@ -858,22 +858,21 @@ void XOsd_LoadCharacterSetBank(XOsd *InstancePtr, u8 GcIndex, u8 BankIndex,
|
|||
(u32)(InstancePtr->Layers[GcIndex].FontBitsPerPixel));
|
||||
FontWriteNum /= (u32)(XOSD_FONT_BIT_TO_BYTE);
|
||||
FontWriteNum *= (u32)(InstancePtr->Layers[GcIndex].FontNumChars);
|
||||
FontWriteNum /= (u32)sizeof(u32);
|
||||
FontWriteNum /= (u32)sizeof(u32);
|
||||
|
||||
/* Load the font data */
|
||||
for (Index = 0x0; Index < FontWriteNum; Index++) {
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress, (XOSD_GCD_OFFSET),
|
||||
CharSetData[Index]);
|
||||
}
|
||||
|
||||
/* Load the font data */
|
||||
for (Index = 0x0U; Index < FontWriteNum; Index++) {
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress, (XOSD_GCD_OFFSET),
|
||||
CharSetData[Index]);
|
||||
}
|
||||
|
||||
/* Set the bank to be active so the font is used by the core */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET));
|
||||
RegValue &= (u32)((~((u32)1U << (XOSD_GCABA_CHR_SHIFT)) +
|
||||
((u32)GcIndex)));
|
||||
RegValue |= ((u32)BankIndex) << ((XOSD_GCABA_CHR_SHIFT) +
|
||||
((u32)GcIndex));
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress, (XOSD_GCABA_OFFSET),
|
||||
/* Set the bank to be active so the font is used by the core */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET));
|
||||
RegValue &= ~((u32)1 << ((XOSD_GCABA_CHR_SHIFT) + GcIndex));
|
||||
RegValue |= ((u32)BankIndex) << ((XOSD_GCABA_CHR_SHIFT) +
|
||||
((u32)GcIndex));
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress, (XOSD_GCABA_OFFSET),
|
||||
RegValue);
|
||||
}
|
||||
|
||||
|
@ -918,26 +917,26 @@ void XOsd_LoadTextBank(XOsd *InstancePtr, u8 GcIndex, u8 BankIndex,
|
|||
RegValue |= (((u32)GcIndex) << (XOSD_GCWBA_GCNUM_SHIFT)) &
|
||||
(XOSD_GCWBA_GCNUM_MASK);
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress, (XOSD_GCWBA_OFFSET),
|
||||
RegValue);
|
||||
|
||||
/* Load text data */
|
||||
for (Index = 0x0U;
|
||||
Index < (u32)((((u32)(InstancePtr->
|
||||
Layers[GcIndex].TextNumStrings) *
|
||||
(u32)(InstancePtr->Layers[GcIndex].TextMaxStringLength)) /
|
||||
RegValue);
|
||||
|
||||
/* Load text data */
|
||||
for (Index = 0x0;
|
||||
Index < (u32)((((u32)(InstancePtr->
|
||||
Layers[GcIndex].TextNumStrings) *
|
||||
(u32)(InstancePtr->Layers[GcIndex].TextMaxStringLength)) /
|
||||
sizeof(u32)));
|
||||
Index++) {
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCD_OFFSET), TextData[Index]);
|
||||
}
|
||||
|
||||
/* Set the active text bank */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET));
|
||||
RegValue &= ~(1U << ((XOSD_GCABA_TXT_SHIFT) + GcIndex));
|
||||
|
||||
RegValue |= ((u32)BankIndex) << ((XOSD_GCABA_TXT_SHIFT) +
|
||||
((u32)GcIndex));
|
||||
/* Set the active text bank */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET));
|
||||
RegValue &= ~(1 << ((XOSD_GCABA_TXT_SHIFT) + GcIndex));
|
||||
|
||||
RegValue |= ((u32)BankIndex) << ((XOSD_GCABA_TXT_SHIFT) +
|
||||
((u32)GcIndex));
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress, (XOSD_GCABA_OFFSET),
|
||||
RegValue);
|
||||
}
|
||||
|
@ -982,18 +981,18 @@ void XOsd_SetActiveBank(XOsd *InstancePtr, u8 GcIndex, u8 ColorBankIndex,
|
|||
Xil_AssertVoid(TextBankIndex < (XOSD_GC_BANK_NUM));
|
||||
Xil_AssertVoid(InstructionBankIndex < (XOSD_GC_BANK_NUM));
|
||||
|
||||
/* Clear the current active bank setting first */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET));
|
||||
RegValue &= ~(1U << GcIndex) & (XOSD_GCABA_INS_MASK);
|
||||
RegValue &= ~(1U << ((XOSD_GCABA_COL_SHIFT) + (GcIndex))) &
|
||||
(XOSD_GCABA_COL_MASK);
|
||||
RegValue &= ~(1U << ((XOSD_GCABA_TXT_SHIFT) + (GcIndex))) &
|
||||
(XOSD_GCABA_TXT_MASK);
|
||||
RegValue &= ~(1U << ((XOSD_GCABA_CHR_SHIFT) + (GcIndex))) &
|
||||
(XOSD_GCABA_CHR_MASK);
|
||||
|
||||
/* Choose the active banks */
|
||||
/* Clear the current active bank setting first */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET));
|
||||
RegValue &= ~(1 << GcIndex) & (XOSD_GCABA_INS_MASK);
|
||||
RegValue &= ~(1 << ((XOSD_GCABA_COL_SHIFT) + (GcIndex))) &
|
||||
(XOSD_GCABA_COL_MASK);
|
||||
RegValue &= ~(1 << ((XOSD_GCABA_TXT_SHIFT) + (GcIndex))) &
|
||||
(XOSD_GCABA_TXT_MASK);
|
||||
RegValue &= ~(1 << ((XOSD_GCABA_CHR_SHIFT) + (GcIndex))) &
|
||||
(XOSD_GCABA_CHR_MASK);
|
||||
|
||||
/* Choose the active banks */
|
||||
RegValue |= (((u32)InstructionBankIndex) << ((u32)GcIndex)) &
|
||||
(XOSD_GCABA_INS_MASK);
|
||||
RegValue |= (((u32)ColorBankIndex) << ((XOSD_GCABA_COL_SHIFT) +
|
||||
|
@ -1138,31 +1137,31 @@ void XOsd_LoadInstructionList(XOsd *InstancePtr, u8 GcIndex, u8 BankIndex,
|
|||
RegValue = (((u32)BankIndex) + (XOSD_GCWBA_INS0)) &
|
||||
(XOSD_GCWBA_BANK_MASK);
|
||||
RegValue |= (((u32)GcIndex) << (XOSD_GCWBA_GCNUM_SHIFT)) &
|
||||
(XOSD_GCWBA_GCNUM_MASK);
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress, (XOSD_GCWBA_OFFSET),
|
||||
RegValue);
|
||||
for (Index = 0U; Index < (InstNum * (XOSD_INS_SIZE)); Index++) {
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCD_OFFSET), InstSetPtr[Index]);
|
||||
}
|
||||
(XOSD_GCWBA_GCNUM_MASK);
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress, (XOSD_GCWBA_OFFSET),
|
||||
RegValue);
|
||||
for (Index = 0; Index < (InstNum * (XOSD_INS_SIZE)); Index++) {
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCD_OFFSET), InstSetPtr[Index]);
|
||||
}
|
||||
|
||||
/* Notify OSD this is the end of the instruction list by adding an END
|
||||
* instruction
|
||||
*/
|
||||
if (InstNum < InstancePtr->Layers[GcIndex].InstructionNum) {
|
||||
for (Index = 0x0U; Index < (XOSD_INS_SIZE); Index++) {
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCD_OFFSET), 0x0U);
|
||||
}
|
||||
}
|
||||
|
||||
/* Set the active instruction bank */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET));
|
||||
RegValue &= ~(1U << GcIndex);
|
||||
RegValue |= ((u32)BankIndex << (u32)GcIndex);
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET), RegValue);
|
||||
* instruction
|
||||
*/
|
||||
if (InstNum < InstancePtr->Layers[GcIndex].InstructionNum) {
|
||||
for (Index = 0x0; Index < (XOSD_INS_SIZE); Index++) {
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCD_OFFSET), 0x0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Set the active instruction bank */
|
||||
RegValue = XOsd_ReadReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET));
|
||||
RegValue &= ~(1 << GcIndex);
|
||||
RegValue |= ((u32)BankIndex << (u32)GcIndex);
|
||||
XOsd_WriteReg(InstancePtr->Config.BaseAddress,
|
||||
(XOSD_GCABA_OFFSET), RegValue);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1191,15 +1190,13 @@ static void PopulateLayerProperty(XOsd *InstancePtr, XOsd_Config *CfgPtr)
|
|||
Xil_AssertVoid(CfgPtr != NULL);
|
||||
|
||||
/* Use short variable names to keep the lines in this function
|
||||
* shorter
|
||||
*/
|
||||
IpTemp = InstancePtr;
|
||||
Xil_AssertVoid(IpTemp != NULL);
|
||||
Cfg = CfgPtr;
|
||||
Xil_AssertVoid(Cfg != NULL);
|
||||
|
||||
/* Layer #0 */
|
||||
IpTemp->Layers[0].LayerType = Cfg->Layer0Type;
|
||||
* shorter
|
||||
*/
|
||||
IpTemp = InstancePtr;
|
||||
Cfg = CfgPtr;
|
||||
|
||||
/* Layer #0 */
|
||||
IpTemp->Layers[0].LayerType = Cfg->Layer0Type;
|
||||
IpTemp->Layers[0].InstructionNum = Cfg->Layer0InstructionMemSize;
|
||||
IpTemp->Layers[0].InstructionBoxEnable = Cfg->Layer0InstructionBoxEnable;
|
||||
IpTemp->Layers[0].InstructionLineEnable = Cfg->Layer0InstructionLineEnable;
|
||||
|
|
|
@ -265,12 +265,13 @@ enum {
|
|||
#define XOSD_DisableLayer XOsd_DisableLayer
|
||||
#define XOSD_LoadColorLUTBank XOsd_LoadColorLUTBank
|
||||
#define XOSD_LoadCharacterSetBank XOsd_LoadCharacterSetBank
|
||||
#define XOSD_LoadTextBank XOsd_LoadTextBank
|
||||
#define XOSD_SetActiveBank XOsd_SetActiveBank
|
||||
#define XOSD_CreateInstruction XOsd_CreateInstruction
|
||||
#define XOSD_LoadInstructionList XOsd_LoadInstructionList
|
||||
#define XOSD_LookupConfig XOsd_LookupConfig
|
||||
#define XOSD_IntrHandler XOsd_IntrHandler
|
||||
#define XOSD_LoadTextBank XOsd_LoadTextBank
|
||||
#define XOSD_SetActiveBank XOsd_SetActiveBank
|
||||
#define XOSD_CreateInstruction XOsd_CreateInstruction
|
||||
#define XOSD_GetVersion XOsd_GetVersion
|
||||
#define XOSD_LoadInstructionList XOsd_LoadInstructionList
|
||||
#define XOSD_LookupConfig XOsd_LookupConfig
|
||||
#define XOSD_IntrHandler XOsd_IntrHandler
|
||||
#define XOSD_SetCallBack XOsd_SetCallBack
|
||||
/*@}*/
|
||||
|
||||
|
|
|
@ -134,14 +134,14 @@ extern "C" {
|
|||
#define XOSD_RST_OFFSET XOSD_CTL_OFFSET /**< Software Reset Offset */
|
||||
|
||||
/**
|
||||
* Interrupt status register generates a interrupt if the corresponding bits
|
||||
* of interrupt enable register bits are set.
|
||||
*/
|
||||
#define XOSD_ISR_OFFSET XOSD_STATUS /**< Interrupt Status
|
||||
* Register Offset */
|
||||
#define XOSD_IER_OFFSET 0x00C /**< Interrupt Enable
|
||||
* Register Offset */
|
||||
|
||||
* Interrupt status register generates a interrupt if the corresponding bits
|
||||
* of interrupt enable register bits are set.
|
||||
*/
|
||||
#define XOSD_ISR_OFFSET XOSD_STATUS_OFFSET/**< Interrupt Status
|
||||
* Register Offset */
|
||||
#define XOSD_IER_OFFSET 0x00C /**< Interrupt Enable
|
||||
* Register Offset */
|
||||
|
||||
#define XOSD_STATUS_OFFSET 0x004 /**< Status Offset */
|
||||
#define XOSD_ERROR_OFFSET 0x008 /**< Error Offset */
|
||||
|
||||
|
@ -598,16 +598,14 @@ extern "C" {
|
|||
/*@}*/
|
||||
|
||||
/** @name Compatibility Macros
|
||||
* @{
|
||||
*/
|
||||
#define XOSD_CTL XOSD_CTL_OFFSET
|
||||
#define XOSD_STATUS XOSD_STATUS_OFFSET
|
||||
#define XOSD_ERROR XOSD_ERROR_OFFSET
|
||||
#define XOSD_VER XOSD_VER_OFFSET
|
||||
#define XOSD_SS XOSD_ACTIVE_SIZE_OFFSET
|
||||
#define XOSD_OPENC XOSD_OPENC_OFFSET
|
||||
#define XOSD_BC0 XOSD_BC0_OFFSET
|
||||
#define XOSD_BC1 XOSD_BC1_OFFSET
|
||||
* @{
|
||||
*/
|
||||
#define XOSD_CTL XOSD_CTL_OFFSET
|
||||
#define XOSD_SS XOSD_ACTIVE_SIZE_OFFSET
|
||||
#define XOSD_VER XOSD_VER_OFFSET
|
||||
#define XOSD_OPENC XOSD_OPENC_OFFSET
|
||||
#define XOSD_BC0 XOSD_BC0_OFFSET
|
||||
#define XOSD_BC1 XOSD_BC1_OFFSET
|
||||
#define XOSD_BC2 XOSD_BC2_OFFSET
|
||||
|
||||
#define XOSD_L0C XOSD_L0C_OFFSET
|
||||
|
@ -648,12 +646,16 @@ extern "C" {
|
|||
|
||||
#define XOSD_RST XOSD_RST_OFFSET
|
||||
|
||||
#define XOSD_ISR XOSD_ISR_OFFSET
|
||||
#define XOSD_IER XOSD_IER_OFFSET
|
||||
|
||||
#define XOSD_In32 XOsd_In32
|
||||
#define XOSD_Out32 XOsd_Out32
|
||||
|
||||
#define XOSD_ISR XOSD_ISR_OFFSET
|
||||
#define XOSD_IER XOSD_IER_OFFSET
|
||||
|
||||
#define XOSD_SS_YSIZE_MASK XOSD_ACTSIZE_NUM_LINE_MASK
|
||||
#define XOSD_SS_XSIZE_MASK XOSD_ACTSIZE_NUM_PIXEL_MASK
|
||||
#define XOSD_SS_YSIZE_SHIFT XOSD_ACTSIZE_NUM_LINE_SHIFT
|
||||
|
||||
#define XOSD_In32 XOsd_In32
|
||||
#define XOSD_Out32 XOsd_Out32
|
||||
|
||||
#define XOSD_ReadReg XOsd_ReadReg
|
||||
#define XOSD_WriteReg XOsd_WriteReg
|
||||
/*@}*/
|
||||
|
|
|
@ -110,14 +110,13 @@ void XOsd_IntrHandler(void *InstancePtr)
|
|||
Xil_AssertVoid(XOsdPtr->IsReady == (u32)(XIL_COMPONENT_IS_READY));
|
||||
|
||||
/* Get pending interrupts. */
|
||||
PendingIntr = (u32)(XOsd_IntrGetPending(XOsdPtr));
|
||||
|
||||
/* Error interrupt is occurring or spurious interrupt. */
|
||||
if (((PendingIntr) & (XOSD_IXR_ALLERR_MASK)) ==
|
||||
((XOSD_IXR_ALLERR_MASK))) {
|
||||
ErrorStatus = (PendingIntr) & (XOSD_IXR_ALLERR_MASK);
|
||||
XOsdPtr->ErrCallBack(XOsdPtr->ErrRef, ErrorStatus);
|
||||
}
|
||||
PendingIntr = (u32)(XOsd_IntrGetPending(XOsdPtr));
|
||||
|
||||
/* Error interrupt is occurring or spurious interrupt. */
|
||||
if (((PendingIntr) & (XOSD_IXR_ALLERR_MASK)) != (u32)0x00) {
|
||||
ErrorStatus = (PendingIntr) & (XOSD_IXR_ALLERR_MASK);
|
||||
XOsdPtr->ErrCallBack(XOsdPtr->ErrRef, ErrorStatus);
|
||||
}
|
||||
|
||||
/* A Processing start interrupt has occurred. */
|
||||
if (((PendingIntr) & (XOSD_IXR_PROC_STARTED_MASK)) ==
|
||||
|
|
Loading…
Add table
Reference in a new issue