14c283fdaSBhawanpreet Lakha /* 24c283fdaSBhawanpreet Lakha * Copyright 2019 Advanced Micro Devices, Inc. 34c283fdaSBhawanpreet Lakha * 44c283fdaSBhawanpreet Lakha * Permission is hereby granted, free of charge, to any person obtaining a 54c283fdaSBhawanpreet Lakha * copy of this software and associated documentation files (the "Software"), 64c283fdaSBhawanpreet Lakha * to deal in the Software without restriction, including without limitation 74c283fdaSBhawanpreet Lakha * the rights to use, copy, modify, merge, publish, distribute, sublicense, 84c283fdaSBhawanpreet Lakha * and/or sell copies of the Software, and to permit persons to whom the 94c283fdaSBhawanpreet Lakha * Software is furnished to do so, subject to the following conditions: 104c283fdaSBhawanpreet Lakha * 114c283fdaSBhawanpreet Lakha * The above copyright notice and this permission notice shall be included in 124c283fdaSBhawanpreet Lakha * all copies or substantial portions of the Software. 134c283fdaSBhawanpreet Lakha * 144c283fdaSBhawanpreet Lakha * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 154c283fdaSBhawanpreet Lakha * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 164c283fdaSBhawanpreet Lakha * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 174c283fdaSBhawanpreet Lakha * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 184c283fdaSBhawanpreet Lakha * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 194c283fdaSBhawanpreet Lakha * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 204c283fdaSBhawanpreet Lakha * OTHER DEALINGS IN THE SOFTWARE. 214c283fdaSBhawanpreet Lakha * 224c283fdaSBhawanpreet Lakha * Authors: AMD 234c283fdaSBhawanpreet Lakha * 244c283fdaSBhawanpreet Lakha */ 254c283fdaSBhawanpreet Lakha 264c283fdaSBhawanpreet Lakha #ifndef MOD_HDCP_H_ 274c283fdaSBhawanpreet Lakha #define MOD_HDCP_H_ 284c283fdaSBhawanpreet Lakha 294c283fdaSBhawanpreet Lakha #include "os_types.h" 304c283fdaSBhawanpreet Lakha #include "signal_types.h" 314c283fdaSBhawanpreet Lakha 324c283fdaSBhawanpreet Lakha /* Forward Declarations */ 334c283fdaSBhawanpreet Lakha struct mod_hdcp; 344c283fdaSBhawanpreet Lakha 354c283fdaSBhawanpreet Lakha #define MAX_NUM_OF_DISPLAYS 6 364c283fdaSBhawanpreet Lakha #define MAX_NUM_OF_ATTEMPTS 4 374c283fdaSBhawanpreet Lakha #define MAX_NUM_OF_ERROR_TRACE 10 384c283fdaSBhawanpreet Lakha 394c283fdaSBhawanpreet Lakha /* detailed return status */ 404c283fdaSBhawanpreet Lakha enum mod_hdcp_status { 414c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_SUCCESS = 0, 424c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_FAILURE, 434c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_RESET_NEEDED, 444c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_DISPLAY_OUT_OF_BOUND, 454c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_DISPLAY_NOT_FOUND, 464c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_INVALID_STATE, 474c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_NOT_IMPLEMENTED, 484c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_INTERNAL_POLICY_FAILURE, 494c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_UPDATE_TOPOLOGY_FAILURE, 504c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_CREATE_PSP_SERVICE_FAILURE, 514c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_DESTROY_PSP_SERVICE_FAILURE, 524c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_CREATE_SESSION_FAILURE, 534c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_DESTROY_SESSION_FAILURE, 544c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_VALIDATE_ENCRYPTION_FAILURE, 554c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_NOT_HDCP_REPEATER, 564c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_NOT_CAPABLE, 574c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_R0_PRIME_PENDING, 584c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_VALIDATE_RX_FAILURE, 593744ee2cSWenjing Liu MOD_HDCP_STATUS_HDCP1_BKSV_REVOKED, 604c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_KSV_LIST_NOT_READY, 614c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_VALIDATE_KSV_LIST_FAILURE, 623744ee2cSWenjing Liu MOD_HDCP_STATUS_HDCP1_KSV_LIST_REVOKED, 634c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_ENABLE_ENCRYPTION, 644c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_ENABLE_STREAM_ENCRYPTION_FAILURE, 654c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_MAX_CASCADE_EXCEEDED_FAILURE, 664c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_MAX_DEVS_EXCEEDED_FAILURE, 674c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_DEVICE_COUNT_MISMATCH_FAILURE, 684c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_LINK_INTEGRITY_FAILURE, 694c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_REAUTH_REQUEST_ISSUED, 704c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_LINK_MAINTENANCE_FAILURE, 714c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP1_INVALID_BKSV, 724c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_DDC_FAILURE, /* TODO: specific errors */ 734c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_INVALID_OPERATION, 744c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_NOT_CAPABLE, 754c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_CREATE_SESSION_FAILURE, 764c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_DESTROY_SESSION_FAILURE, 774c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_PREP_AKE_INIT_FAILURE, 784c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_AKE_CERT_PENDING, 794c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_H_PRIME_PENDING, 804c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_PAIRING_INFO_PENDING, 814c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_VALIDATE_AKE_CERT_FAILURE, 8251466b3fSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_AKE_CERT_REVOKED, 834c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_VALIDATE_H_PRIME_FAILURE, 844c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_VALIDATE_PAIRING_INFO_FAILURE, 854c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_PREP_LC_INIT_FAILURE, 864c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_L_PRIME_PENDING, 874c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_VALIDATE_L_PRIME_FAILURE, 884c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_PREP_EKS_FAILURE, 894c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_ENABLE_ENCRYPTION_FAILURE, 904c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_RX_ID_LIST_NOT_READY, 914c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_VALIDATE_RX_ID_LIST_FAILURE, 9251466b3fSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_RX_ID_LIST_REVOKED, 934c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_ENABLE_STREAM_ENCRYPTION, 944c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_STREAM_READY_PENDING, 954c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_VALIDATE_STREAM_READY_FAILURE, 964c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_PREPARE_STREAM_MANAGEMENT_FAILURE, 974c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_REAUTH_REQUEST, 984c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_REAUTH_LINK_INTEGRITY_FAILURE, 994c283fdaSBhawanpreet Lakha MOD_HDCP_STATUS_HDCP2_DEVICE_COUNT_MISMATCH_FAILURE, 1004c283fdaSBhawanpreet Lakha }; 1014c283fdaSBhawanpreet Lakha 1024c283fdaSBhawanpreet Lakha struct mod_hdcp_displayport { 1034c283fdaSBhawanpreet Lakha uint8_t rev; 1044c283fdaSBhawanpreet Lakha uint8_t assr_supported; 1054c283fdaSBhawanpreet Lakha }; 1064c283fdaSBhawanpreet Lakha 1074c283fdaSBhawanpreet Lakha struct mod_hdcp_hdmi { 1084c283fdaSBhawanpreet Lakha uint8_t reserved; 1094c283fdaSBhawanpreet Lakha }; 1104c283fdaSBhawanpreet Lakha enum mod_hdcp_operation_mode { 1114c283fdaSBhawanpreet Lakha MOD_HDCP_MODE_OFF, 1124c283fdaSBhawanpreet Lakha MOD_HDCP_MODE_DEFAULT, 1134c283fdaSBhawanpreet Lakha MOD_HDCP_MODE_DP, 1144c283fdaSBhawanpreet Lakha MOD_HDCP_MODE_DP_MST 1154c283fdaSBhawanpreet Lakha }; 1164c283fdaSBhawanpreet Lakha 1174c283fdaSBhawanpreet Lakha enum mod_hdcp_display_state { 1184c283fdaSBhawanpreet Lakha MOD_HDCP_DISPLAY_INACTIVE = 0, 1194c283fdaSBhawanpreet Lakha MOD_HDCP_DISPLAY_ACTIVE, 1204c283fdaSBhawanpreet Lakha MOD_HDCP_DISPLAY_ACTIVE_AND_ADDED, 1214c283fdaSBhawanpreet Lakha MOD_HDCP_DISPLAY_ENCRYPTION_ENABLED 1224c283fdaSBhawanpreet Lakha }; 1234c283fdaSBhawanpreet Lakha 1244c283fdaSBhawanpreet Lakha struct mod_hdcp_ddc { 1254c283fdaSBhawanpreet Lakha void *handle; 1264c283fdaSBhawanpreet Lakha struct { 1274c283fdaSBhawanpreet Lakha bool (*read_i2c)(void *handle, 1284c283fdaSBhawanpreet Lakha uint32_t address, 1294c283fdaSBhawanpreet Lakha uint8_t offset, 1304c283fdaSBhawanpreet Lakha uint8_t *data, 1314c283fdaSBhawanpreet Lakha uint32_t size); 1324c283fdaSBhawanpreet Lakha bool (*write_i2c)(void *handle, 1334c283fdaSBhawanpreet Lakha uint32_t address, 1344c283fdaSBhawanpreet Lakha const uint8_t *data, 1354c283fdaSBhawanpreet Lakha uint32_t size); 1364c283fdaSBhawanpreet Lakha bool (*read_dpcd)(void *handle, 1374c283fdaSBhawanpreet Lakha uint32_t address, 1384c283fdaSBhawanpreet Lakha uint8_t *data, 1394c283fdaSBhawanpreet Lakha uint32_t size); 1404c283fdaSBhawanpreet Lakha bool (*write_dpcd)(void *handle, 1414c283fdaSBhawanpreet Lakha uint32_t address, 1424c283fdaSBhawanpreet Lakha const uint8_t *data, 1434c283fdaSBhawanpreet Lakha uint32_t size); 1444c283fdaSBhawanpreet Lakha } funcs; 1454c283fdaSBhawanpreet Lakha }; 1464c283fdaSBhawanpreet Lakha 1474c283fdaSBhawanpreet Lakha struct mod_hdcp_psp { 1484c283fdaSBhawanpreet Lakha void *handle; 1494c283fdaSBhawanpreet Lakha void *funcs; 1504c283fdaSBhawanpreet Lakha }; 1514c283fdaSBhawanpreet Lakha 1524c283fdaSBhawanpreet Lakha struct mod_hdcp_display_adjustment { 1534c283fdaSBhawanpreet Lakha uint8_t disable : 1; 1544c283fdaSBhawanpreet Lakha uint8_t reserved : 7; 1554c283fdaSBhawanpreet Lakha }; 1564c283fdaSBhawanpreet Lakha 1574c283fdaSBhawanpreet Lakha struct mod_hdcp_link_adjustment_hdcp1 { 1584c283fdaSBhawanpreet Lakha uint8_t disable : 1; 1594c283fdaSBhawanpreet Lakha uint8_t postpone_encryption : 1; 1604c283fdaSBhawanpreet Lakha uint8_t reserved : 6; 1614c283fdaSBhawanpreet Lakha }; 1624c283fdaSBhawanpreet Lakha 16323eb4191SBhawanpreet Lakha enum mod_hdcp_force_hdcp_type { 16423eb4191SBhawanpreet Lakha MOD_HDCP_FORCE_TYPE_MAX = 0, 16523eb4191SBhawanpreet Lakha MOD_HDCP_FORCE_TYPE_0, 16623eb4191SBhawanpreet Lakha MOD_HDCP_FORCE_TYPE_1 16723eb4191SBhawanpreet Lakha }; 16823eb4191SBhawanpreet Lakha 1694c283fdaSBhawanpreet Lakha struct mod_hdcp_link_adjustment_hdcp2 { 1704c283fdaSBhawanpreet Lakha uint8_t disable : 1; 17123eb4191SBhawanpreet Lakha uint8_t force_type : 2; 1724c283fdaSBhawanpreet Lakha uint8_t force_no_stored_km : 1; 1734c283fdaSBhawanpreet Lakha uint8_t increase_h_prime_timeout: 1; 17423eb4191SBhawanpreet Lakha uint8_t reserved : 3; 1754c283fdaSBhawanpreet Lakha }; 1764c283fdaSBhawanpreet Lakha 1774c283fdaSBhawanpreet Lakha struct mod_hdcp_link_adjustment { 1784c283fdaSBhawanpreet Lakha uint8_t auth_delay; 1794c283fdaSBhawanpreet Lakha struct mod_hdcp_link_adjustment_hdcp1 hdcp1; 1804c283fdaSBhawanpreet Lakha struct mod_hdcp_link_adjustment_hdcp2 hdcp2; 1814c283fdaSBhawanpreet Lakha }; 1824c283fdaSBhawanpreet Lakha 1834c283fdaSBhawanpreet Lakha struct mod_hdcp_error { 1844c283fdaSBhawanpreet Lakha enum mod_hdcp_status status; 1854c283fdaSBhawanpreet Lakha uint8_t state_id; 1864c283fdaSBhawanpreet Lakha }; 1874c283fdaSBhawanpreet Lakha 1884c283fdaSBhawanpreet Lakha struct mod_hdcp_trace { 1894c283fdaSBhawanpreet Lakha struct mod_hdcp_error errors[MAX_NUM_OF_ERROR_TRACE]; 1904c283fdaSBhawanpreet Lakha uint8_t error_count; 1914c283fdaSBhawanpreet Lakha }; 1924c283fdaSBhawanpreet Lakha 1934c283fdaSBhawanpreet Lakha enum mod_hdcp_encryption_status { 1944c283fdaSBhawanpreet Lakha MOD_HDCP_ENCRYPTION_STATUS_HDCP_OFF = 0, 1954c283fdaSBhawanpreet Lakha MOD_HDCP_ENCRYPTION_STATUS_HDCP1_ON, 1964c283fdaSBhawanpreet Lakha MOD_HDCP_ENCRYPTION_STATUS_HDCP2_TYPE0_ON, 19745375a50SBhawanpreet Lakha MOD_HDCP_ENCRYPTION_STATUS_HDCP2_TYPE1_ON, 19845375a50SBhawanpreet Lakha MOD_HDCP_ENCRYPTION_STATUS_HDCP2_ON 1994c283fdaSBhawanpreet Lakha }; 2004c283fdaSBhawanpreet Lakha 2014c283fdaSBhawanpreet Lakha /* per link events dm has to notify to hdcp module */ 2024c283fdaSBhawanpreet Lakha enum mod_hdcp_event { 2034c283fdaSBhawanpreet Lakha MOD_HDCP_EVENT_CALLBACK = 0, 2044c283fdaSBhawanpreet Lakha MOD_HDCP_EVENT_WATCHDOG_TIMEOUT, 2054c283fdaSBhawanpreet Lakha MOD_HDCP_EVENT_CPIRQ 2064c283fdaSBhawanpreet Lakha }; 2074c283fdaSBhawanpreet Lakha 2084c283fdaSBhawanpreet Lakha /* output flags from module requesting timer operations */ 2094c283fdaSBhawanpreet Lakha struct mod_hdcp_output { 2104c283fdaSBhawanpreet Lakha uint8_t callback_needed; 2114c283fdaSBhawanpreet Lakha uint8_t callback_stop; 2124c283fdaSBhawanpreet Lakha uint8_t watchdog_timer_needed; 2134c283fdaSBhawanpreet Lakha uint8_t watchdog_timer_stop; 2144c283fdaSBhawanpreet Lakha uint16_t callback_delay; 2154c283fdaSBhawanpreet Lakha uint16_t watchdog_timer_delay; 2164c283fdaSBhawanpreet Lakha }; 2174c283fdaSBhawanpreet Lakha 2184c283fdaSBhawanpreet Lakha /* used to represent per display info */ 2194c283fdaSBhawanpreet Lakha struct mod_hdcp_display { 2204c283fdaSBhawanpreet Lakha enum mod_hdcp_display_state state; 2214c283fdaSBhawanpreet Lakha uint8_t index; 2224c283fdaSBhawanpreet Lakha uint8_t controller; 2234c283fdaSBhawanpreet Lakha uint8_t dig_fe; 2244c283fdaSBhawanpreet Lakha union { 2254c283fdaSBhawanpreet Lakha uint8_t vc_id; 2264c283fdaSBhawanpreet Lakha }; 2274c283fdaSBhawanpreet Lakha struct mod_hdcp_display_adjustment adjust; 2284c283fdaSBhawanpreet Lakha }; 2294c283fdaSBhawanpreet Lakha 2304c283fdaSBhawanpreet Lakha /* used to represent per link info */ 2314c283fdaSBhawanpreet Lakha /* in case a link has multiple displays, they share the same link info */ 2324c283fdaSBhawanpreet Lakha struct mod_hdcp_link { 2334c283fdaSBhawanpreet Lakha enum mod_hdcp_operation_mode mode; 2344c283fdaSBhawanpreet Lakha uint8_t dig_be; 2354c283fdaSBhawanpreet Lakha uint8_t ddc_line; 2364c283fdaSBhawanpreet Lakha union { 2374c283fdaSBhawanpreet Lakha struct mod_hdcp_displayport dp; 2384c283fdaSBhawanpreet Lakha struct mod_hdcp_hdmi hdmi; 2394c283fdaSBhawanpreet Lakha }; 2404c283fdaSBhawanpreet Lakha struct mod_hdcp_link_adjustment adjust; 2414c283fdaSBhawanpreet Lakha }; 2424c283fdaSBhawanpreet Lakha 2434c283fdaSBhawanpreet Lakha /* a query structure for a display's hdcp information */ 2444c283fdaSBhawanpreet Lakha struct mod_hdcp_display_query { 2454c283fdaSBhawanpreet Lakha const struct mod_hdcp_display *display; 2464c283fdaSBhawanpreet Lakha const struct mod_hdcp_link *link; 2474c283fdaSBhawanpreet Lakha const struct mod_hdcp_trace *trace; 2484c283fdaSBhawanpreet Lakha enum mod_hdcp_encryption_status encryption_status; 2494c283fdaSBhawanpreet Lakha }; 2504c283fdaSBhawanpreet Lakha 2514c283fdaSBhawanpreet Lakha /* contains values per on external display configuration change */ 2524c283fdaSBhawanpreet Lakha struct mod_hdcp_config { 2534c283fdaSBhawanpreet Lakha struct mod_hdcp_psp psp; 2544c283fdaSBhawanpreet Lakha struct mod_hdcp_ddc ddc; 2554c283fdaSBhawanpreet Lakha uint8_t index; 2564c283fdaSBhawanpreet Lakha }; 2574c283fdaSBhawanpreet Lakha 2584c283fdaSBhawanpreet Lakha struct mod_hdcp; 2594c283fdaSBhawanpreet Lakha 2604c283fdaSBhawanpreet Lakha /* dm allocates memory of mod_hdcp per dc_link on dm init based on memory size*/ 2614c283fdaSBhawanpreet Lakha size_t mod_hdcp_get_memory_size(void); 2624c283fdaSBhawanpreet Lakha 2634c283fdaSBhawanpreet Lakha /* called per link on link creation */ 2644c283fdaSBhawanpreet Lakha enum mod_hdcp_status mod_hdcp_setup(struct mod_hdcp *hdcp, 2654c283fdaSBhawanpreet Lakha struct mod_hdcp_config *config); 2664c283fdaSBhawanpreet Lakha 2674c283fdaSBhawanpreet Lakha /* called per link on link destroy */ 2684c283fdaSBhawanpreet Lakha enum mod_hdcp_status mod_hdcp_teardown(struct mod_hdcp *hdcp); 2694c283fdaSBhawanpreet Lakha 2704c283fdaSBhawanpreet Lakha /* called per display on cp_desired set to true */ 2714c283fdaSBhawanpreet Lakha enum mod_hdcp_status mod_hdcp_add_display(struct mod_hdcp *hdcp, 2724c283fdaSBhawanpreet Lakha struct mod_hdcp_link *link, struct mod_hdcp_display *display, 2734c283fdaSBhawanpreet Lakha struct mod_hdcp_output *output); 2744c283fdaSBhawanpreet Lakha 2754c283fdaSBhawanpreet Lakha /* called per display on cp_desired set to false */ 2764c283fdaSBhawanpreet Lakha enum mod_hdcp_status mod_hdcp_remove_display(struct mod_hdcp *hdcp, 2774c283fdaSBhawanpreet Lakha uint8_t index, struct mod_hdcp_output *output); 2784c283fdaSBhawanpreet Lakha 2794c283fdaSBhawanpreet Lakha /* called to query hdcp information on a specific index */ 2804c283fdaSBhawanpreet Lakha enum mod_hdcp_status mod_hdcp_query_display(struct mod_hdcp *hdcp, 2814c283fdaSBhawanpreet Lakha uint8_t index, struct mod_hdcp_display_query *query); 2824c283fdaSBhawanpreet Lakha 2834c283fdaSBhawanpreet Lakha /* called per link on connectivity change */ 2844c283fdaSBhawanpreet Lakha enum mod_hdcp_status mod_hdcp_reset_connection(struct mod_hdcp *hdcp, 2854c283fdaSBhawanpreet Lakha struct mod_hdcp_output *output); 2864c283fdaSBhawanpreet Lakha 2874c283fdaSBhawanpreet Lakha /* called per link on events (i.e. callback, watchdog, CP_IRQ) */ 2884c283fdaSBhawanpreet Lakha enum mod_hdcp_status mod_hdcp_process_event(struct mod_hdcp *hdcp, 2894c283fdaSBhawanpreet Lakha enum mod_hdcp_event event, struct mod_hdcp_output *output); 2904c283fdaSBhawanpreet Lakha 2914c283fdaSBhawanpreet Lakha /* called to convert enum mod_hdcp_status to c string */ 2924c283fdaSBhawanpreet Lakha char *mod_hdcp_status_to_str(int32_t status); 2934c283fdaSBhawanpreet Lakha 2944c283fdaSBhawanpreet Lakha /* called to convert state id to c string */ 2954c283fdaSBhawanpreet Lakha char *mod_hdcp_state_id_to_str(int32_t id); 2964c283fdaSBhawanpreet Lakha 2974c283fdaSBhawanpreet Lakha /* called to convert signal type to operation mode */ 2984c283fdaSBhawanpreet Lakha enum mod_hdcp_operation_mode mod_hdcp_signal_type_to_operation_mode( 2994c283fdaSBhawanpreet Lakha enum signal_type signal); 3004c283fdaSBhawanpreet Lakha #endif /* MOD_HDCP_H_ */ 301