HDCP TX Driver Integration - 3.2 English

HDMI 1.4/2.0 Transmitter Subsystem Product Guide (PG235)

Document ID
Release Date
3.2 English

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.

  1. 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_HdmiTxSs_HdcpSetKey
      • XV_HDMITXSS_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.
  2. Initialize the HDMI 1.4/2.0 TX Subsystem driver after the HDCP keys have been loaded. Initializing the subsystem starts the HDCP 1.4/2.3 drivers internally.
  3. Connect the HDCP interrupt handlers to the interrupt controller interrupt ID:
    • XV_HdmiTxSS_HdcpIntrHandler
    • XV_HdmiTxSS_HdcpTimerIntrHandler
    • XV_HdmiTxSS_Hdcp22TimerIntrHandler
  4. 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_HdmiTxSs_SetCallback
  5. 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_HdmiTxSs_HdcpPoll
  6. 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_HdmiTxSs_HdcpSetCapability
  7. 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_HdmiTxSs_HdcpPushEvent
  8. Check the status of authentication. These checks could be performed before issuing authentication requests.
    • XV_HdmiTxSs_HdcpIsAuthenticated
    • XV_HdmiTxSs_HdcpIsInProgress
  9. 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_HdmiTxSs_HdcpEnableEncryption
    • XV_HdmiTxSs_HdcpDisableEncryption
  10. 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_HdmiTxSs_HdcpIsEncrypted
  11. Check the overall HDCP protocol status and log data. You can also set the level of detail for log information reported.
    • XV_HdmiTxSs_HdcpInfo
    • XV_HdmiTxSs_SetInfoDetail