This section describes the steps required to initialize and run the HDCP TX. The application should call the functions roughly in the order specified to ensure that the driver operates properly. When only a single HDCP protocol is enabled, either 1.4 or 2.3, a subset of the function calls might be needed.
- Load the HDCP production keys into the HDMI subsystem.
This function needs to be called for each key that is loaded. If HDCP 1.4
and 2.3 are enabled all the keys must be loaded, otherwise a subset of the keys
are loaded.
Note that the byte arrays used to
store the key octet strings for HDCP are defined in big endian byte order.
-
XV_HdmiTxSs1_HdcpSetKey
-
XV_HDMITXSS1_KEY_HDCP14
-
XV_HDMITXSS1_KEY_HDCP22_LC128
(128-bit DCP Licensed Constant)
-
Important: In an HDCP-enabled system, after the key management block is successfully initialized, a bit is set to block reading out the key again. The bit remains set until the device is reprogrammed. Therefore, the keys can only be read once during initialization. -
- Initialize the HDMI 2.1 TX Subsystem driver after the HDCP keys have been loaded. Initializing the subsystem starts the HDCP 1.4/2.3 drivers internally.
- Connect the HDCP interrupt handlers to the interrupt controller
interrupt ID:
-
XV_HdmiTxSS1_HdcpIntrHandler
-
XV_HdmiTxSS1_HdcpTimerIntrHandler
-
XV_HdmiTxSS1_Hdcp22TimerIntrHandler
-
- Set the HDCP user callback functions. These callback functions are
optional and used to hook into the HDCP state machine and allow the user to take
action at various stages of the HDCP protocol. If there is no use for the callback
at the application level, then the callback can be left undefined.
-
XV_HdmiTxSs1_SetCallback
-
XV_HDMITXSS1_HANDLER_HDCP_AUTHENTICATED
-
XV_HDMITXSS1_HANDLER_HDCP_DOWNSTREAM_TOPOLOGY_AVAILABLE
-
XV_HDMITXSS1_HANDLER_HDCP_UNAUTHENTICATED
-
-
- Execute the poll function to run the HDCP state machine. This
function checks to see which HDCP protocol is enabled, and then execute only the
active protocol. The call to this function can be inserted in the main loop of the
user application and should execute continuously. Because the HDCP TX state machine is run using
this poll function, it is important to ensure that this function is given
adequate CPU runtime, especially during authentication attempts.
-
XV_HdmiTxSs1_HdcpPoll
-
-
Optionally, set the HDCP protocol capability. The default option is both, which
means that if both HDCP 1.4 and HDCP 2.3 are included as part of the HDMI
subsystem, the transmitter tries to authenticate with either protocol based on
the capability of the downstream device. Note that HDCP 2.3 is given priority
over HDCP 1.4. If the capability is set to none, then authentication attempts
are ignored.
-
XV_HdmiTxSs1_HdcpSetCapability
-
XV_HDMITXSS1_HDCP_NONE
-
XV_HDMITXSS1_HDCP_BOTH
-
-
- Authentication should be
initiated only after the transmission of video to the downstream device. It is the
responsibility of the user application to determine when to issue authentication
requests. Authentication requests are commonly initiated for the following events:
stream-up, and HPD toggle. In the event that the first authentication request is not
successful, the user application can issue another authentication request.
-
XV_HdmiTxSs1_HdcpPushEvent
-
XV_HDMITXSS1_HDCP_AUTHENTICATE_EVT
-
-
- Check the status of authentication. These checks could be performed before
issuing authentication requests.
-
XV_HdmiTxSs1_HdcpIsAuthenticated
-
XV_HdmiTxSs1_HdcpIsInProgress
-
- When authentication is successful, the application is allowed to
enable encryption. The enablement of encryption can happen any time after successful
authentication and is the responsibility of the application to manage. For example,
an application might decide to enable encryption only for restricted content, but
disable encryption for standard content.
-
XV_HdmiTxSs1_HdcpEnableEncryption
-
XV_HdmiTxSs1_HdcpDisableEncryption
-
- Check the status of the cipher encryption. This is the
instantaneous encryption status of the cipher and can change between subsequent
frames. For repeater or pass-through applications, special care must be taken to
block downstream content if the upstream interface is encrypted while the downstream
interface is not encrypted.
-
XV_HdmiTxSs1_HdcpIsEncrypted
-
- Check the overall HDCP protocol status and log data. You can also
set the level of detail for log information reported.
-
XV_HdmiTxSs1_HdcpInfo
-
XV_HdmiTxSs1_SetInfoDetail
-