xtimebase.h File Reference

This is the main header file of Xilinx MVI TimeBase device driver. More...

#include "xtimebase_hw.h"
#include "xstatus.h"

Go to the source code of this file.

Data Structures

Defines

Interrupt Types for setting up Callbacks
Options for enabling TimeBase modules
Address gap between two register next to each other

Typedefs

Functions


Detailed Description

This is the main header file of Xilinx MVI TimeBase device driver.

The TimeBase device detects timebase signals, independently overrides any one of them, re-generates timebase signals with +/- delay and with polarity inversion, and generates up to 16 one cycle Frame Sync outputs.

The device has the following main features:

For a full description of TimeBase features, please see the hardware specification.

Interrupt Service

The interrupt types supported are:

Software Initialization

The application needs to do following steps in order for preparing the TimeBase to be ready to process timebase signal handling.

Examples

An example is provided with this driver to demonstrate the driver usage.

Cache Coherency

Alignment

Limitations

BUS Interface

 MODIFICATION HISTORY:

 Ver	Who	Date		Changes
 -----	----	--------	-----------------------------------------------
 1.00a	xd	08/05/08	First release
 1.01a	xd	07/23/10	Added GIER; Added more h/w generic info into
				xparameters.h; Feed callbacks with pending
				interrupt info. Added Doxygen & Version support
 

Definition in file xtimebase.h.


Define Documentation

#define XTimeBase_GetDetectionStatus ( InstancePtr   )     XTimeBase_ReadReg((InstancePtr)->Config.BaseAddress, XTB_DS)

This function gets the status of the Detector in a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
Returns:
The Detector Status. Use XTB_DS_* in xtimebase_hw.h to interpret the returned value.
Note:
C-style signature: u32 XTimeBase_GetDetectionStatus(XTimeBase *InstancePtr)

Definition at line 367 of file xtimebase.h.

#define XTimeBase_IntrClear ( InstancePtr,
IntrType   ) 

Value:

XTimeBase_WriteReg((InstancePtr)->Config.BaseAddress, XTB_ISR, \
                (IntrType) & XTB_IXR_ALLINTR_MASK)
This macro clears/acknowledges pending interrupts of a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
IntrType is the pending interrupts to clear/acknowledge. Use OR'ing of XTB_IXR_* constants defined in xtimebase_hw.h to create this parameter value.
Returns:
None
Note:
C-style signature: void XTimeBase_IntrClear(XTimeBase *InstancePtr, u32 IntrType)

Definition at line 504 of file xtimebase.h.

#define XTimeBase_IntrDisable ( InstancePtr,
IntrType   ) 

Value:

XTimeBase_WriteReg((InstancePtr)->Config.BaseAddress, XTB_IER, \
                XTimeBase_ReadReg((InstancePtr)->Config.BaseAddress, XTB_IER) \
                & ((~(IntrType)) & XTB_IXR_ALLINTR_MASK))
This macro disables individual interrupts of a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
IntrType is the type of the interrupts to disable. Use OR'ing of XTB_IXR_* constants defined in xtimebase_hw.h to create this parameter value.
Returns:
None
Note:
Any other interrupt not covered by parameter IntrType, if enabled before this macro is called, will remain enabled.

C-style signature: void XTimeBase_IntrDisable(XTimeBase *InstancePtr, u32 IntrType)

Definition at line 457 of file xtimebase.h.

#define XTimeBase_IntrDisableGlobal ( InstancePtr   )     XTimeBase_WriteReg((InstancePtr)->Config.BaseAddress, XTB_GIER, 0)

This macro disables the global interrupt on a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
Returns:
None.
Note:
C-style signature: void XTimeBase_IntrDisableGlobal(XTimeBase *InstancePtr);

Definition at line 404 of file xtimebase.h.

#define XTimeBase_IntrEnable ( InstancePtr,
IntrType   ) 

Value:

XTimeBase_WriteReg((InstancePtr)->Config.BaseAddress, XTB_IER, \
                ((IntrType) & XTB_IXR_ALLINTR_MASK) | \
                 XTimeBase_ReadReg((InstancePtr)->Config.BaseAddress, XTB_IER))
This macro enables individual interrupts of a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
IntrType is the type of the interrupts to enable. Use OR'ing of XTB_IXR_* constants defined in xtimebase_hw.h to create this parameter value.
Returns:
None
Note:
The existing enabled interrupt(s) will remain enabled.

C-style signature: void XTimeBase_IntrEnable(XTimeBase *InstancePtr, u32 IntrType)

Definition at line 429 of file xtimebase.h.

#define XTimeBase_IntrEnableGlobal ( InstancePtr   ) 

Value:

XTimeBase_WriteReg((InstancePtr)->Config.BaseAddress, XTB_GIER,\
                XTB_GIER_GIE_MASK)
This macro enables the global interrupt on a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
Returns:
None.
Note:
C-style signature: void XTimeBase_IntrEnableGlobal(XTimeBase *InstancePtr);

Definition at line 385 of file xtimebase.h.

#define XTimeBase_IntrGetPending ( InstancePtr   ) 

Value:

(XTimeBase_ReadReg((InstancePtr)->Config.BaseAddress, XTB_IER) & \
         XTimeBase_ReadReg((InstancePtr)->Config.BaseAddress, XTB_ISR) & \
         XTB_IXR_ALLINTR_MASK)
This macro returns the pending interrupts of a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
Returns:
The pending interrupts of the TimeBase. Use XTB_IXR_* constants defined in xtimebase_hw.h to interpret this value.
Note:
C-style signature: u32 XTimeBase_IntrGetPending(XTimeBase *InstancePtr)

Definition at line 479 of file xtimebase.h.

#define XTimeBase_IntrSetLockPolarity ( InstancePtr,
LockPolarity   ) 

Value:

{ \
        if (LockPolarity) { \
                XTimeBase_WriteReg((InstancePtr)->Config.BaseAddress, \
                        XTB_CTL, \
                        XTimeBase_ReadReg((InstancePtr)->Config.BaseAddress, \
                                XTB_CTL) | XTB_CTL_LP_MASK); \
        } \
        else { \
                XTimeBase_WriteReg((InstancePtr)->Config.BaseAddress, \
                        XTB_CTL, \
                        XTimeBase_ReadReg((InstancePtr)->Config.BaseAddress, \
                                XTB_CTL) & (~XTB_CTL_LP_MASK)); \
        } \
}
This macro sets the edge at which the following interrupts trigger:
  • XTB_IXR_ACL_MASK
  • XTB_IXR_AVL_MASK
  • XTB_IXR_FIL_MASK
  • XTB_IXR_VBL_MASK
  • XTB_IXR_VSL_MASK
  • XTB_IXR_HBL_MASK
  • XTB_IXR_HSL_MASK.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
LockPolarity indicates the edge at which the interrupts above trigger. Use any non-0 for triggering on rising edge of lock. Use 0 for triggering on falling edge of lock.
Returns:
None
Note:
C-style signature: void XTimeBase_IntrSetLockPolarity(XTimeBase *InstancePtr, u32 LockPolarity)

Definition at line 536 of file xtimebase.h.

#define XTimeBase_Reset ( InstancePtr   ) 

Value:

{ \
        XTimeBase_WriteReg((InstancePtr)->Config.BaseAddress, XTB_RESET, \
                           XTB_RESET_RESET_MASK); \
        XTimeBase_WriteReg((InstancePtr)->Config.BaseAddress, XTB_RESET, \
                           0); \
}
This macro resets a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
Returns:
None
Note:
C-style signature: void XTimeBase_Reset(XTimeBase *InstancePtr)

Definition at line 344 of file xtimebase.h.


Typedef Documentation

typedef void(* XTimeBase_CallBack)(void *CallBackRef, u32 Mask)

Callback type for all interrupts except error interrupt.

Parameters:
CallBackRef is a callback reference passed in by the upper layer when setting the callback functions, and passed back to the upper layer when the callback is invoked.
Mask is a bit mask indicating the cause of the event. For current device version, this parameter is "OR" of 0 or more XTB_IXR_* constants defined in xtimebase_hw.h

Definition at line 276 of file xtimebase.h.

typedef void(* XTimeBase_ErrorCallBack)(void *CallBackRef, u32 ErrorMask)

Callback type for Error interrupt.

Parameters:
CallBackRef is a callback reference passed in by the upper layer when setting the callback functions, and passed back to the upper layer when the callback is invoked.
ErrorMask is a bit mask indicating the cause of the error. For current device version, this parameter always have value 0 and could be ignored.

Definition at line 288 of file xtimebase.h.


Function Documentation

int XTimeBase_CfgInitialize ( XTimeBase InstancePtr,
XTimeBase_Config CfgPtr,
u32  EffectiveAddr 
)

This function initializes a TimeBase device.

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

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
CfgPtr points to the configuration structure associated with the TimeBase 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

Definition at line 113 of file xtimebase.c.

void XTimeBase_Disable ( XTimeBase InstancePtr,
u32  Type 
)

This function disables a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
Type indicates which module (Detector and/or Generator) to disable. Valid values could be obtained by bit ORing of XTB_EN_DETECTOR and XTB_EN_GENERATOR
Returns:
NONE.

Definition at line 191 of file xtimebase.c.

void XTimeBase_Enable ( XTimeBase InstancePtr,
u32  Type 
)

This function enables a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
Type indicates which module (Detector and/or Generator) to enable. Valid values could be obtained by bit ORing of XTB_EN_DETECTOR and XTB_EN_GENERATOR.
Returns:
NONE.

Definition at line 156 of file xtimebase.c.

void XTimeBase_GetDelay ( XTimeBase InstancePtr,
int *  VertDelayPtr,
int *  HoriDelayPtr 
)

This function gets the Generator delay setting used by a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
VertDelayPtr will point to a value indicating the number of total lines per frame to delay the generator output after this function returns.
HoriDelayPtr will point to a value indicating the number of total clock cycles per line to delay the generator output after this function returns.
Returns:
NONE.

Definition at line 566 of file xtimebase.c.

void XTimeBase_GetDetector ( XTimeBase InstancePtr,
XTimeBase_TimeBaseSignal SignalCfgPtr 
)

This function gets the TimeBase signal setting used by the Detector module in a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
SignalCfgPtr is a pointer to a TimeBase signal configuration which will be populated with the setting used by the Detector module in the TimeBase device once this function returns.
Returns:
NONE.

Definition at line 845 of file xtimebase.c.

void XTimeBase_GetGenerator ( XTimeBase InstancePtr,
XTimeBase_TimeBaseSignal SignalCfgPtr 
)

This function gets the TimeBase signal setting used by the Generator module in a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
SignalCfgPtr is a pointer to a TimeBase signal configuration which will be populated with the setting used by the Generator module in the TimeBase device once this function returns.
Returns:
NONE.

Definition at line 765 of file xtimebase.c.

void XTimeBase_GetPolarity ( XTimeBase InstancePtr,
XTimeBase_Polarity PolarityPtr 
)

This function gets the output polarity setting used by a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
PolarityPtr points to a Polarity configuration structure that will be populated with the setting used on the TimeBase device after this function returns.
Returns:
NONE.

Definition at line 280 of file xtimebase.c.

void XTimeBase_GetSkip ( XTimeBase InstancePtr,
int *  GeneratorChromaSkipPtr 
)

This function gets the skip setting used by the Generator in a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
GeneratorChromaSkipPtr will point to the value indicating whether 1 line is skipped between active chroma for the Generator module after this function returns. value 1 means that 1 line is skipped, and 0 means that no lines are skipped
Returns:
NONE.

Definition at line 496 of file xtimebase.c.

void XTimeBase_GetSource ( XTimeBase InstancePtr,
XTimeBase_SourceSelect SourcePtr 
)

This function gets the source select setting used by a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
SourcePtr points to a source select configuration structure that will be populated with the setting used on the TimeBase device after this function returns.
Returns:
NONE.

Definition at line 402 of file xtimebase.c.

void XTimeBase_GetSync ( XTimeBase InstancePtr,
u16  FrameSyncIndex,
u16 *  VertStartPtr,
u16 *  HoriStartPtr 
)

This function gets the SYNC setting of a Frame Sync used by TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
FrameSyncIndex indicates the index number of the frame sync. The valid range is from 0 to 15.
VertStartPtr will point to the value that indicates the vertical line count during which the Frame Sync is active once this function returns.
HoriStartPtr will point to the value that indicates the horizontal cycle count during which the Frame Sync is active once this function returns.
Returns:
NONE.

Definition at line 647 of file xtimebase.c.

void XTimeBase_GetVersion ( XTimeBase InstancePtr,
u16 *  Major,
u16 *  Minor,
u16 *  Revision 
)

This function returns the version of a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase 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.

Definition at line 934 of file xtimebase.c.

void XTimeBase_IntrHandler ( void *  InstancePtr  ) 

This function is the interrupt handler for the TimeBase driver.

This handler reads the pending interrupt from the IER/ISR, determines the source of the interrupts, calls according callbacks, and finally clears the interrupts.

The application is responsible for connecting this function to the interrupt system. Application beyond this driver is also responsible for providing callbacks to handle interrupts and installing the callbacks using XTimeBase_SetCallBack() during initialization phase. An example delivered with this driver demonstrates how this could be done.

Parameters:
InstancePtr is a pointer to the XTimeBase instance that just interrupted.
Returns:
None.
Note:
None.

Definition at line 96 of file xtimebase_intr.c.

XTimeBase_Config* XTimeBase_LookupConfig ( u16  DeviceId  ) 

XTimeBase_LookupConfig returns a reference to an XTimeBase_Config structure based on the unique device id, DeviceId.

The return value will refer to an entry in the device configuration table defined in the xtimebase_g.c file.

Parameters:
DeviceId is the unique device ID of the device for the lookup operation.
Returns:
XTimeBase_LookupConfig returns a reference to a config record in the configuration table (in xtimebase_g.c) corresponding to DeviceId, or NULL if no match is found.

Definition at line 104 of file xtimebase_sinit.c.

int XTimeBase_SetCallBack ( XTimeBase InstancePtr,
u32  HandlerType,
void *  CallBackFunc,
void *  CallBackRef 
)

This routine installs an asynchronous callback function for the given HandlerType:.

 HandlerType		   Callback Function Type
 -----------------------  ---------------------------
 XTB_HANDLER_FRAMESYNC	   XTimeBase_FrameSyncCallBack
 XTB_HANDLER_LOCK	   XTimeBase_LockCallBack
 XTB_HANDLER_DETECTOR	   XTimeBase_DetectorCallBack
 XTB_HANDLER_GENERATOR	   XTimeBase_GeneratorCallBack
 XTB_HANDLER_ERROR	   XTimeBase_ErrCallBack

 HandlerType		   Invoked by this driver when:
 -----------------------  --------------------------------------------------
 XTB_HANDLER_FRAMESYNC	   A frame sync event happens
 XTB_HANDLER_LOCK	   A signal lock event happens
 XTB_HANDLER_DETECTOR	   A detector related event happens
 XTB_HANDLER_GENERATOR	   A generator related event happens
 XTB_HANDLER_ERROR	   An error condition happens

 

Parameters:
InstancePtr is a pointer to the XTimeBase instance to be worked on.
HandlerType specifies which callback is to be attached.
CallbackFunc is the address of the callback function.
CallbackRef is a user data item that will be passed to the callback function when it is invoked.
Returns:
  • XST_SUCCESS when handler is installed.
  • XST_INVALID_PARAM when HandlerType is invalid.
Note:
Invoking this function for a handler that already has been installed replaces it with the new handler.

Definition at line 182 of file xtimebase_intr.c.

void XTimeBase_SetDelay ( XTimeBase InstancePtr,
int  VertDelay,
int  HoriDelay 
)

This function sets up the Generator delay setting of a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
VertDelay indicates the number of total lines per frame to delay the generator output. The valid range is from 0 to 4095.
HoriDelay indicates the number of total clock cycles per line to delay the generator output. The valid range is from 0 to 4095.
Returns:
NONE.

Definition at line 531 of file xtimebase.c.

void XTimeBase_SetGenerator ( XTimeBase InstancePtr,
XTimeBase_TimeBaseSignal SignalCfgPtr 
)

This function sets up TimeBase signal to be used by the Generator module in a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
SignalCfgPtr is a pointer to the TimeBase signal configuration to be used by the Generator module in the TimeBase device.
Returns:
NONE.

Definition at line 685 of file xtimebase.c.

void XTimeBase_SetPolarity ( XTimeBase InstancePtr,
XTimeBase_Polarity PolarityPtr 
)

This function sets up the output polarity of a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
PolarityPtr points to a Polarity configuration structure w/ the setting to use on the TimeBase device.
Returns:
NONE.

Definition at line 225 of file xtimebase.c.

void XTimeBase_SetSkip ( XTimeBase InstancePtr,
int  GeneratorChromaSkip 
)

This function sets up the skip setting of the Generator in a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
GeneratorChromaSkip indicates whether to skip 1 line between active chroma for the Generator module. Use Non-0 value for this parameter to skip 1 line, and 0 to not skip lines
Returns:
NONE.

Definition at line 459 of file xtimebase.c.

void XTimeBase_SetSource ( XTimeBase InstancePtr,
XTimeBase_SourceSelect SourcePtr 
)

This function sets up the source selecting of a TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
SourcePtr points to a Source Selecting configuration structure w/ the setting to use on the TimeBase device.
Returns:
NONE.

Definition at line 333 of file xtimebase.c.

void XTimeBase_SetSync ( XTimeBase InstancePtr,
u16  FrameSyncIndex,
u16  VertStart,
u16  HoriStart 
)

This function sets up the SYNC setting of a Frame Sync used by TimeBase device.

Parameters:
InstancePtr is a pointer to the TimeBase device instance to be worked on.
FrameSyncIndex indicates the index number of the frame sync. The valid range is from 0 to 15.
VertStart indicates the vertical line count during which the Frame Sync is active. The valid range is from 0 to 4095.
HoriStart indicates the horizontal cycle count during which the Frame Sync is active. The valid range is from 0 to 4095.
Returns:
NONE.

Definition at line 602 of file xtimebase.c.


Copyright © 1995-2010 Xilinx, Inc. All rights reserved.