Software Drivers

xosd.c File Reference


Detailed Description

This is main code of Xilinx MVI Video On-Screen-Display (OSD) device driver. Please see xosd.h for more details of the driver.

 MODIFICATION HISTORY:

 Ver   Who  Date     Changes
 ----- ---- -------- -------------------------------------------------------
 1.00a xd   08/18/08 First release
 1.02a xd   12/21/10 Removed endian conversion for text bank loading
 1.03a cm   09/07/11 Updated XOSD_GetLayerAlpha(), XOSD_SetLayerAlpha(), 
                     XOSD_SetBackgroundColor() and XOSD_GetBackgroundColor() 
                     to allow 10 and 12 bit alpha and background colors. 
 2.00a cjm  12/18/12 Converted from xio.h to xil_io.h, translating
                     basic types, MB cache functions, exceptions and
                     assertions to xil_io format. 
 

#include "xosd.h"
#include "xenv.h"

Functions

int XOSD_CfgInitialize (XOSD *InstancePtr, XOSD_Config *CfgPtr, u32 EffectiveAddr)
void XOSD_SetBlankPolarity (XOSD *InstancePtr, int VerticalBlankPolarity, int HorizontalBlankPolarity)
void XOSD_SetScreenSize (XOSD *InstancePtr, u32 Width, u32 Height)
void XOSD_GetScreenSize (XOSD *InstancePtr, u32 *WidthPtr, u32 *HeightPtr)
void XOSD_SetBackgroundColor (XOSD *InstancePtr, u16 Red, u16 Blue, u16 Green)
void XOSD_GetBackgroundColor (XOSD *InstancePtr, u16 *RedPtr, u16 *BluePtr, u16 *GreenPtr)
void XOSD_SetLayerDimension (XOSD *InstancePtr, u8 LayerIndex, u16 XStart, u16 YStart, u16 XSize, u16 YSize)
void XOSD_GetLayerDimension (XOSD *InstancePtr, u8 LayerIndex, u16 *XStartPtr, u16 *YStartPtr, u16 *XSizePtr, u16 *YSizePtr)
void XOSD_SetLayerAlpha (XOSD *InstancePtr, u8 LayerIndex, u16 GlobalAlphaEnble, u16 GlobalAlphaValue)
void XOSD_GetLayerAlpha (XOSD *InstancePtr, u8 LayerIndex, u16 *GlobalAlphaEnblePtr, u16 *GlobalAlphaValuePtr)
void XOSD_SetLayerPriority (XOSD *InstancePtr, u8 LayerIndex, u8 Priority)
void XOSD_GetLayerPriority (XOSD *InstancePtr, u8 LayerIndex, u8 *PriorityPtr)
void XOSD_EnableLayer (XOSD *InstancePtr, u8 LayerIndex)
void XOSD_DisableLayer (XOSD *InstancePtr, u8 LayerIndex)
void XOSD_LoadColorLUTBank (XOSD *InstancePtr, u8 GcIndex, u8 BankIndex, u32 *ColorData)
void XOSD_LoadCharacterSetBank (XOSD *InstancePtr, u8 GcIndex, u8 BankIndex, u32 *CharSetData)
void XOSD_LoadTextBank (XOSD *InstancePtr, u8 GcIndex, u8 BankIndex, u32 *TextData)
void XOSD_SetActiveBank (XOSD *InstancePtr, u8 GcIndex, u8 ColorBankIndex, u8 CharBankIndex, u8 TextBankIndex, u8 InstructionBankIndex)
void XOSD_CreateInstruction (XOSD *InstancePtr, u32 *InstructionPtr, u8 GcIndex, u16 ObjType, u8 ObjSize, u16 XStart, u16 YStart, u16 XEnd, u16 YEnd, u8 TextIndex, u8 ColorIndex)
void XOSD_LoadInstructionList (XOSD *InstancePtr, u8 GcIndex, u8 BankIndex, u32 *InstSetPtr, u32 InstNum)
void XOSD_GetVersion (XOSD *InstancePtr, u16 *Major, u16 *Minor, u16 *Revision)


Function Documentation

int XOSD_CfgInitialize XOSD InstancePtr,
XOSD_Config CfgPtr,
u32  EffectiveAddr
 

This function initializes an OSD device. This function must be called prior to using an OSD device. Initialization of an OSD includes setting up the instance data, and ensuring the hardware is in a quiescent state.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
CfgPtr points to the configuration structure associated with the OSD device.
EffectiveAddr is the base address of the device. If address translation is being used, then this parameter must reflect the virtual base address. Otherwise, the physical address should be used.
Returns:
XST_SUCCESS

void XOSD_CreateInstruction XOSD InstancePtr,
u32 *  InstructionPtr,
u8  GcIndex,
u16  ObjType,
u8  ObjSize,
u16  XStart,
u16  YStart,
u16  XEnd,
u16  YEnd,
u8  TextIndex,
u8  ColorIndex
 

This function creates an instruction for an OSD.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
InstructionPtr is a pointer to the instruction buffer to be populated with the instruction to be created. The upper level application is responsible for allocating this instruction buffer.
GcIndex indicates the Graphics Controller that will consume the instruction. Valid value range is from 0 to (The Number of Layers) - 1. The layer's type must be set to XOSD_LAYER_TYPE_GPU (defined in xosd_hw.h) for this function to work properly.
ObjType indicates the type of object to draw. Use one of XOSD_INS_OPCODE_... constants defined in xosd_hw.h.
ObjSize indicates line width of boxes and lines and the text scale factor for text boxes.
XStart indicates the horizontal start pixel of the Object.
YStart indicates the vertical start line of the Object.
XEnd indicates the horizontal end pixel of the Object.
YEnd indicates the vertical end line of the Object.
TextIndex indicates the string index.
ColorIndex indicates the color index.
Returns:
NONE.

void XOSD_DisableLayer XOSD InstancePtr,
u8  LayerIndex
 

This function disables an OSD layer.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
LayerIndex indicates which layer to be worked on. Valid value range is from 0 to (the number of layers implemented in the device - 1).
Returns:
NONE.

void XOSD_EnableLayer XOSD InstancePtr,
u8  LayerIndex
 

This function enables an OSD layer.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
LayerIndex indicates which layer to be worked on. Valid value range is from 0 to (the number of layers implemented in the device - 1).
Returns:
NONE.

void XOSD_GetBackgroundColor XOSD InstancePtr,
u16 *  RedPtr,
u16 *  BluePtr,
u16 *  GreenPtr
 

This function gets the Background color used by the OSD output.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
RedPtr will point to the red value used in the background color after this function returns.
BluePtr will point to the blue value used in the background color after this function returns.
GreenPtr will point to the green value used in the background color after this function returns.
Returns:
NONE.

void XOSD_GetLayerAlpha XOSD InstancePtr,
u8  LayerIndex,
u16 *  GlobalAlphaEnblePtr,
u16 *  GlobalAlphaValuePtr
 

This function gets the Alpha value and mode of an OSD layer.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
LayerIndex indicates which layer to be worked on. Valid value range is from 0 to (the number of layers implemented in the device - 1).
GlobalAlphaEnblePtr will point to a flag indicating whether the global Alpha is enabled on a layer after this function returns. Flag 1 indicates that the global Alpha is enabled, 0 indicates that it is not.
GlobalAlphaValuePtr will point to the transparent level after this function returns. 0 for 100% transparent, 255 (8bit) for 0% transparent (100% opaque).
Returns:
NONE.

void XOSD_GetLayerDimension XOSD InstancePtr,
u8  LayerIndex,
u16 *  XStartPtr,
u16 *  YStartPtr,
u16 *  XSizePtr,
u16 *  YSizePtr
 

This function gets the start position and size of an OSD layer.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
LayerIndex indicates which layer to be worked on. Valid value range is from 0 to (the number of layers implemented in the device - 1).
XStartPtr will point to the Horizontal start pixel value of origin of the layer after this function returns.
YStartPtr will point to the Vertical start line of origin of the layer after this function returns.
XSizePtr will point to the Horizontal Size value of the layer after this function returns.
YSizePtr will point to the Vertical Size value of the layer after this function returns.
Returns:
NONE.

void XOSD_GetLayerPriority XOSD InstancePtr,
u8  LayerIndex,
u8 *  PriorityPtr
 

This function gets the priority of an OSD layer.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
LayerIndex indicates which layer to be worked on. Valid value range is from 0 to (the number of layers implemented in the device - 1).
PriorityPtr will point to the priority used on the layer after this function returns. Use XOSD_LAYER_PRIORITY_... defined in xosd_hw.h to interpret the value.
Returns:
NONE.

void XOSD_GetScreenSize XOSD InstancePtr,
u32 *  WidthPtr,
u32 *  HeightPtr
 

This function gets the screen size of the OSD Output.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
WidthPtr will point to the width of the OSD output after this function returns.
HeightPtr will point to the height of the OSD output after this function returns.
Returns:
NONE.

void XOSD_GetVersion XOSD InstancePtr,
u16 *  Major,
u16 *  Minor,
u16 *  Revision
 

This function returns the version of an OSD device.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
Major points to an unsigned 16-bit variable that will be assigned with the major version number after this function returns. Value range is from 0x0 to 0xF.
Minor points to an unsigned 16-bit variable that will be assigned with the minor version number after this function returns. Value range is from 0x00 to 0xFF.
Revision points to an unsigned 16-bit variable that will be assigned with the revision version number after this function returns. Value range is from 0xA to 0xF.
Returns:
None.
Note:
Example: Device version should read v2.01.c if major version number is 0x2, minor version number is 0x1, and revision version number is 0xC.

void XOSD_LoadCharacterSetBank XOSD InstancePtr,
u8  GcIndex,
u8  BankIndex,
u32 *  CharSetData
 

This function loads Character Set data (font) into an OSD Graphics Controller Bank.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
GcIndex indicates which Graphics Controller to work on. Valid value range is from 0 to (The Number of Layers) - 1. The layer's type must be set to XOSD_LAYER_TYPE_GPU (defined in xosd_hw.h) for this function to work properly.
BankIndex indicates which GC Bank to be worked on. Valid value range is from 0 to XOSD_GC_BANK_NUM - 1.
CharSetData points to the Character Set data to be loaded.
Returns:
NONE.

void XOSD_LoadColorLUTBank XOSD InstancePtr,
u8  GcIndex,
u8  BankIndex,
u32 *  ColorData
 

This function loads color LUT data into an OSD Graphics Controller Bank.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
GcIndex indicates which Graphics Controller to work on. Valid value range is from 0 to (The Number of Layers) - 1. The layer's type must be set to XOSD_LAYER_TYPE_GPU (defined in xosd_hw.h) for this function to work properly.
BankIndex indicates which GC Bank to be worked on. Valid value range is from 0 to XOSD_GC_BANK_NUM - 1.
ColorData points to the color LUT data to be loaded.
Returns:
NONE.

void XOSD_LoadInstructionList XOSD InstancePtr,
u8  GcIndex,
u8  BankIndex,
u32 *  InstSetPtr,
u32  InstNum
 

This function load an instruction list to be used by an Graphic Controller in an OSD device.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
GcIndex indicates which Graphics Controller to work on. Valid value range is from 0 to (The Number of Layers) - 1. The layer's type must be set to XOSD_LAYER_TYPE_GPU (defined in xosd_hw.h) for this function to work properly.
BankIndex indicates which GC Bank to be worked on. Valid value range is from 0 to XOSD_GC_BANK_NUM.
InstSetPtr is a pointer to the start of the instruction list to load into the OSD device. The last instruction in the list must has XOSD_INS_OPCODE_END type.
InstNum indicates the number of the instructions in the list to load. Valid value range is from 1 to the half of the size of the instruction memory created for the Graphic Controller
Returns:
NONE.

void XOSD_LoadTextBank XOSD InstancePtr,
u8  GcIndex,
u8  BankIndex,
u32 *  TextData
 

This function loads Text data into an OSD Graphics Controller Bank.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
GcIndex indicates which Graphics Controller to work on. Valid value range is from 0 to (The Number of Layers) - 1. The layer's type must be set to XOSD_LAYER_TYPE_GPU (defined in xosd_hw.h) for this function to work properly.
BankIndex indicates which GC Bank to be worked on. Valid value range is from 0 to XOSD_GC_BANK_NUM - 1.
TextData points to the Text data to be loaded.
Returns:
NONE.

void XOSD_SetActiveBank XOSD InstancePtr,
u8  GcIndex,
u8  ColorBankIndex,
u8  CharBankIndex,
u8  TextBankIndex,
u8  InstructionBankIndex
 

This function chooses active banks for a GC in an OSD device.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
GcIndex indicates which Graphics Controller to work on. Valid value range is from 0 to (The Number of Layers) - 1. The layer's type must be set to XOSD_LAYER_TYPE_GPU (defined in xosd_hw.h) for this function to work properly.
ColorBankIndex indicates the Color LUT bank to be choose as active.
CharBankIndex indicates the Character Set bank to be choose as active.
TextBankIndex indicates the Text Data bank to be choose as active.
InstructionBankIndex indicates the Instruction bank to be choose as active.
Returns:
NONE.

void XOSD_SetBackgroundColor XOSD InstancePtr,
u16  Red,
u16  Blue,
u16  Green
 

This function sets the Background color used by the OSD output.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
Red indicates the red value used in the background color.
Blue indicates the blue value used in the background color.
Green indicates the green value used in the background color.
Returns:
NONE.

void XOSD_SetBlankPolarity XOSD InstancePtr,
int  VerticalBlankPolarity,
int  HorizontalBlankPolarity
 

This function chooses the type of Vertical and Horizontal Blank Input Polarities.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
VerticalBlankPolarity indicates the type of vertical blank input polarity. Use any non-0 value for Active High and 0 for Active Low.
HorizontalBlankPolarity indicates the type of horizontal blank input polarity. Use any non-0 value for Active High and 0 for Active Low.
Returns:
NONE.

void XOSD_SetLayerAlpha XOSD InstancePtr,
u8  LayerIndex,
u16  GlobalAlphaEnble,
u16  GlobalAlphaValue
 

This function sets the Alpha value and mode of an OSD layer.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
LayerIndex indicates which layer to be worked on. Valid value range is from 0 to (the number of layers implemented in the device - 1).
GlobalAlphaEnble indicates whether to enable the global Alpha. Use any non-0 value to enable the global Alpha, and 0 to disable it.
GlobalAlphaValue indicates the transparent level. 0 for 100% transparent, 255 (8bit) for 0% transparent (100% opaque). This argument will be ignored if parameter GlobalAlphaEnble has value 0.
Returns:
NONE.

void XOSD_SetLayerDimension XOSD InstancePtr,
u8  LayerIndex,
u16  XStart,
u16  YStart,
u16  XSize,
u16  YSize
 

This function sets the start position and size of an OSD layer.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
LayerIndex indicates which layer to be worked on. Valid value range is from 0 to (the number of layers implemented in the device - 1).
XStart indicates the Horizontal start pixel of origin of the layer.
YStart indicates the Vertical start line of origin of the layer.
XSize indicates the Horizontal Size of the layer.
YSize indicates the Vertical Size of the layer.
Returns:
NONE.

void XOSD_SetLayerPriority XOSD InstancePtr,
u8  LayerIndex,
u8  Priority
 

This function sets the priority of an OSD layer.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
LayerIndex indicates which layer to be worked on. Valid value range is from 0 to (the number of layers implemented in the device - 1).
Priority indicates the priority to be applied on the layer. Use one of XOSD_LAYER_PRIORITY_0 (the lowest priority) through XOSD_LAYER_PRIORITY_7 (the highest priority) defined in xosd_hw.h
Returns:
NONE.

void XOSD_SetScreenSize XOSD InstancePtr,
u32  Width,
u32  Height
 

This function sets the screen size of the OSD Output.

Parameters:
InstancePtr is a pointer to the OSD device instance to be worked on.
Width defines the width of the OSD output
Height defines the height of the OSD output
Returns:
NONE.
Copyright @ 1995-2014 Xilinx, Inc. All rights reserved.