hdcp22_rx
Vitis Drivers API Documentation
xhdcp22_rx.h File Reference

Data Structures

struct  XHdcp22_Rx_TestDdcReg
 This typedef is the test DDC register definition. More...
 
struct  XHdcp22_Rx_Test
 This typedef is the test structure used for standalone driver testing. More...
 
struct  XHdcp22_Rx_Handles
 This typedef is used to store handles to function pointers. More...
 
struct  XHdcp22_Rx_Parameters
 This typedef is used to store temporary parameters for computations. More...
 
struct  XHdcp22_Rx_LogItem
 This typedef is used to store logging events. More...
 
struct  XHdcp22_Rx_Log
 This typedef contains the HDCP22 log list. More...
 
struct  XHdcp22_Rx_Info
 This typedef provides information about status of HDCP-RX authentication. More...
 
struct  XHdcp22_Rx_Topology
 This typedef is the repeater topology table used to communicate topology information to the receiver upstream interface. More...
 
struct  XHdcp22_Rx_Config
 This typedef contains configuration information for the device. More...
 
struct  XHdcp22_Rx
 The XHdcp driver instance data. More...
 

Macros

#define XHDCP22_RX_MAX_MESSAGE_SIZE   534
 Maximum message size. More...
 
#define XHDCP22_RX_LOG_BUFFER_SIZE   256
 The size of the log buffer. More...
 
#define XHDCP22_RX_ENCRYPTION_STATUS_INTERVAL   1000
 1sec encryption status check interval More...
 
#define XHDCP22_RX_REPEATERAUTH_ACK_INTERVAL   2000
 2sec RepeaterAuth Ack interval More...
 

Typedefs

typedef void *(* XHdcp22_Rx_StateFunc )(void *InstancePtr)
 Type for pointer to state function. More...
 
typedef void(* XHdcp22_Rx_RunHandler )(void *HandlerRef)
 Type for pointer to single input function. More...
 
typedef void(* XHdcp22_Rx_SetHandler )(void *HandlerRef, u32 Data)
 Type for pointer to two input function. More...
 
typedef u32(* XHdcp22_Rx_GetHandler )(void *HandlerRef)
 Type for pointer to single input function with a return value. More...
 

Enumerations

enum  XHdcp22_Rx_Protocol { XHDCP22_RX_HDMI, XHDCP22_RX_DP }
 These constants are used to define the protocol. More...
 
enum  XHdcp22_Rx_Mode { XHDCP22_RX_RECEIVER, XHDCP22_RX_REPEATER, XHDCP22_RX_CONVERTER }
 These constants are used to define the mode. More...
 
enum  XHdcp22_Rx_HandlerType {
  XHDCP22_RX_HANDLER_UNDEFINED, XHDCP22_RX_HANDLER_DDC_SETREGADDR, XHDCP22_RX_HANDLER_DDC_SETREGDATA, XHDCP22_RX_HANDLER_DDC_GETREGDATA,
  XHDCP22_RX_HANDLER_DDC_GETWBUFSIZE, XHDCP22_RX_HANDLER_DDC_GETRBUFSIZE, XHDCP22_RX_HANDLER_DDC_ISWBUFEMPTY, XHDCP22_RX_HANDLER_DDC_ISRBUFEMPTY,
  XHDCP22_RX_HANDLER_DDC_CLEARRBUF, XHDCP22_RX_HANDLER_DDC_CLEARWBUF, XHDCP22_RX_HANDLER_AUTHENTICATED, XHDCP22_RX_HANDLER_UNAUTHENTICATED,
  XHDCP22_RX_HANDLER_AUTHENTICATION_REQUEST, XHDCP22_RX_HANDLER_TOPOLOGY_UPDATE, XHDCP22_RX_HANDLER_STREAM_MANAGE_REQUEST, XHDCP22_RX_HANDLER_ENCRYPTION_UPDATE,
  XHDCP22_RX_HANDLER_INVALID
}
 These constants are used to identify callback functions. More...
 
enum  XHdcp22_Rx_StateType {
  XHDCP22_RX_STATE_UNDEFINED = 0x000, XHDCP22_RX_STATE_B0_WAIT_AKEINIT = 0xB00, XHDCP22_RX_STATE_B1_SEND_AKESENDCERT = 0xB10, XHDCP22_RX_STATE_B1_WAIT_AKEKM = 0xB11,
  XHDCP22_RX_STATE_B1_SEND_AKESENDHPRIME = 0xB12, XHDCP22_RX_STATE_B1_SEND_AKESENDPAIRINGINFO = 0xB13, XHDCP22_RX_STATE_B1_WAIT_LCINIT = 0xB14, XHDCP22_RX_STATE_B2_SEND_LCSENDLPRIME = 0xB20,
  XHDCP22_RX_STATE_B2_WAIT_SKESENDEKS = 0xB21, XHDCP22_RX_STATE_B3_COMPUTE_KS = 0xB30, XHDCP22_RX_STATE_B4_AUTHENTICATED = 0xB40, XHDCP22_RX_STATE_C4_WAIT_FOR_DOWNSTREAM = 0xC40,
  XHDCP22_RX_STATE_C5_SEND_RECEIVERIDLIST = 0xC50, XHDCP22_RX_STATE_C5_SEND_RECEIVERIDLIST_DONE = 0xC51, XHDCP22_RX_STATE_C6_VERIFY_RECEIVERIDLISTACK = 0xC60, XHDCP22_RX_STATE_C7_WAIT_STREAM_MANAGEMENT = 0xC70,
  XHDCP22_RX_STATE_C7_SEND_STREAM_READY = 0xC71, XHDCP22_RX_STATE_C7_SEND_STREAM_READY_DONE = 0xC72, XHDCP22_RX_STATE_C8_AUTHENTICATED = 0xC80, XHDCP22_RX_STATE_INVALID
}
 These constants are the authentication and key exchange states. More...
 
enum  XHdcp22_Rx_AuthenticationType { XHDCP22_RX_UNAUTHENTICATED, XHDCP22_RX_AUTHENTICATION_BUSY, XHDCP22_RX_AUTHENTICATED, XHDCP22_RX_REAUTHENTICATE_REQUESTED }
 These constants define the authentication status. More...
 
enum  XHdcp22_Rx_LogEvt { ,
  XHDCP22_RX_LOG_EVT_INFO, XHDCP22_RX_LOG_EVT_INFO_STATE, XHDCP22_RX_LOG_EVT_INFO_MESSAGE, XHDCP22_RX_LOG_EVT_DEBUG,
  XHDCP22_RX_LOG_EVT_ERROR, XHDCP22_RX_LOG_EVT_USER, XHDCP22_RX_LOG_EVT_INVALID
}
 These constants are the general logging events. More...
 
enum  XHdcp22_Rx_TopologyField
 These constants are used to identify fields inside the topology structure. More...
 

Functions

XHdcp22_Rx_ConfigXHdcp22Rx_LookupConfig (u16 DeviceId)
 This function returns a reference to an XHdcp22_Rx_Config structure based on the core id, DeviceId. More...
 
int XHdcp22Rx_CfgInitialize (XHdcp22_Rx *InstancePtr, XHdcp22_Rx_Config *ConfigPtr, UINTPTR EffectiveAddr)
 Initialize the instance provided by the caller based on the given configuration data. More...
 
int XHdcp22Rx_Enable (XHdcp22_Rx *InstancePtr)
 This function enables the HDCP22-RX state machine. More...
 
int XHdcp22Rx_Disable (XHdcp22_Rx *InstancePtr)
 This function disables the HDCP22-RX state machine. More...
 
int XHdcp22Rx_Reset (XHdcp22_Rx *InstancePtr)
 This function resets the HDCP22-RX system to the default state. More...
 
int XHdcp22Rx_Poll (XHdcp22_Rx *InstancePtr)
 This function executes the HDCP22-RX state machine. More...
 
int XHdcp22Rx_SetCallback (XHdcp22_Rx *InstancePtr, XHdcp22_Rx_HandlerType HandlerType, void *CallbackFunc, void *CallbackRef)
 This function installs callback functions for the given HandlerType: More...
 
u32 XHdcp22Rx_GetVersion (XHdcp22_Rx *InstancePtr)
 This function reads the version. More...
 
XTmrCtr * XHdcp22Rx_GetTimer (XHdcp22_Rx *InstancePtr)
 This function returns the pointer to the internal timer control instance needed for connecting the timer interrupt to an interrupt controller. More...
 
u8 XHdcp22Rx_IsEnabled (XHdcp22_Rx *InstancePtr)
 This function checks if the HDCP22-RX state machine is enabled. More...
 
u8 XHdcp22Rx_IsEncryptionEnabled (XHdcp22_Rx *InstancePtr)
 This function checks if the HDCP22-RX cipher encryption is enabled. More...
 
u8 XHdcp22Rx_IsInProgress (XHdcp22_Rx *InstancePtr)
 This function checks if the HDCP22-RX state machine is enabled but not yet in the Authenticated state. More...
 
u8 XHdcp22Rx_IsAuthenticated (XHdcp22_Rx *InstancePtr)
 This function checks if the HDCP22-RX state machine is in the Authenticated state. More...
 
u8 XHdcp22Rx_IsError (XHdcp22_Rx *InstancePtr)
 This function checks if the HDCP22-RX state machine has detected an error condition. More...
 
void XHdcp22Rx_Info (XHdcp22_Rx *InstancePtr)
 This function prints the state machine information. More...
 
void XHdcp22Rx_SetLinkError (XHdcp22_Rx *InstancePtr)
 This function is called when 50 consecutive data island ECC errors are detected indicating a link integrity problem. More...
 
void XHdcp22Rx_SetDdcError (XHdcp22_Rx *InstancePtr)
 This function is called when a DDC read/write burst stops prior to completing the expected message size. More...
 
void XHdcp22Rx_SetWriteMessageAvailable (XHdcp22_Rx *InstancePtr)
 This function is called when a complete message is available in the write message buffer. More...
 
void XHdcp22Rx_SetReadMessageComplete (XHdcp22_Rx *InstancePtr)
 This function is called when a message has been read out of the read message buffer. More...
 
void XHdcp22Rx_LoadLc128 (XHdcp22_Rx *InstancePtr, const u8 *Lc128Ptr)
 This function is used to load the Lc128 value by copying the contents of the array referenced by Lc128Ptr into the cipher. More...
 
void XHdcp22Rx_LoadPublicCert (XHdcp22_Rx *InstancePtr, const u8 *PublicCertPtr)
 This function is used to load the public certificate. More...
 
int XHdcp22Rx_LoadPrivateKey (XHdcp22_Rx *InstancePtr, const u8 *PrivateKeyPtr)
 This function is used to load the private key. More...
 
void XHdcp22Rx_LogReset (XHdcp22_Rx *InstancePtr, u8 Verbose)
 This function clears the log pointers. More...
 
u32 XHdcp22Rx_LogGetTimeUSecs (XHdcp22_Rx *InstancePtr)
 This function returns the time expired since a log reset was called. More...
 
void XHdcp22Rx_LogWr (XHdcp22_Rx *InstancePtr, u16 Evt, u16 Data)
 This function writes HDCP22-RX log event into buffer. More...
 
XHdcp22_Rx_LogItemXHdcp22Rx_LogRd (XHdcp22_Rx *InstancePtr)
 This function provides the log information from the log buffer. More...
 
void XHdcp22Rx_LogDisplay (XHdcp22_Rx *InstancePtr)
 This function prints the contents of the log buffer. More...
 
void XHdcp22Rx_SetTopology (XHdcp22_Rx *InstancePtr, const XHdcp22_Rx_Topology *TopologyPtr)
 This function copies a complete repeater topology table into the instance repeater topology table. More...
 
void XHdcp22Rx_SetTopologyReceiverIdList (XHdcp22_Rx *InstancePtr, const u8 *ListPtr, u32 ListSize)
 This function copies the RECEIVER_ID_LIST into the repeater topology table. More...
 
void XHdcp22Rx_SetTopologyField (XHdcp22_Rx *InstancePtr, XHdcp22_Rx_TopologyField Field, u8 Value)
 This function is used to set various fields inside the topology structure. More...
 
void XHdcp22Rx_SetTopologyUpdate (XHdcp22_Rx *InstancePtr)
 This function is used to indicate that the topology table has been updated and is ready for upstream propagation. More...
 
void XHdcp22Rx_SetRepeater (XHdcp22_Rx *InstancePtr, u8 Set)
 This function sets the repeater mode status. More...
 
u8 XHdcp22Rx_IsRepeater (XHdcp22_Rx *InstancePtr)
 This function returns the current repeater mode status. More...
 
u8 XHdcp22Rx_GetContentStreamType (XHdcp22_Rx *InstancePtr)
 This function is gets the type information received from the RepeaterAuth_Stream_Manage message for downstream propagation of management information. More...