Loading drivers/gpu/drm/msm/sde_hdcp_2x.c +32 −27 Original line number Diff line number Diff line Loading @@ -528,17 +528,27 @@ static void sde_hdcp_2x_initialize_command(struct sde_hdcp_2x_ctrl *hdcp, cdata->buf = hdcp->app_data.request.data + 1; } static void sde_hdcp_2x_msg_sent(struct sde_hdcp_2x_ctrl *hdcp) static void sde_hdcp_2x_set_hw_key(struct sde_hdcp_2x_ctrl *hdcp) { int rc; struct hdcp_transport_wakeup_data cdata = { HDCP_TRANSPORT_CMD_INVALID }; cdata.context = hdcp->client_data; switch (hdcp->app_data.response.data[0]) { case SKE_SEND_TYPE_ID: if (!hdcp2_app_comm(hdcp->hdcp2_ctx, HDCP2_CMD_EN_ENCRYPTION, &hdcp->app_data)) { if (hdcp->authenticated) { pr_debug("authenticated, h/w key already set\n"); return; } rc = hdcp2_app_comm(hdcp->hdcp2_ctx, HDCP2_CMD_SET_HW_KEY, &hdcp->app_data); if (rc) { pr_err("failed to set h/w key: %d\n", rc); return; } hdcp->authenticated = true; pr_debug("authenticated\n"); if (hdcp->force_encryption) hdcp2_force_encryption(hdcp->hdcp2_ctx, 1); Loading @@ -547,6 +557,16 @@ static void sde_hdcp_2x_msg_sent(struct sde_hdcp_2x_ctrl *hdcp) sde_hdcp_2x_wakeup_client(hdcp, &cdata); } static void sde_hdcp_2x_msg_sent(struct sde_hdcp_2x_ctrl *hdcp) { struct hdcp_transport_wakeup_data cdata = { HDCP_TRANSPORT_CMD_INVALID }; cdata.context = hdcp->client_data; switch (hdcp->app_data.response.data[0]) { case SKE_SEND_TYPE_ID: sde_hdcp_2x_set_hw_key(hdcp); /* poll for link check */ sde_hdcp_2x_initialize_command(hdcp, HDCP_TRANSPORT_CMD_LINK_POLL, &cdata); Loading Loading @@ -743,25 +763,10 @@ static void sde_hdcp_2x_msg_recvd(struct sde_hdcp_2x_ctrl *hdcp) if (!rc) sde_hdcp_2x_send_message(hdcp); goto exit; } else if (!hdcp->authenticated) { rc = hdcp2_app_comm(hdcp->hdcp2_ctx, HDCP2_CMD_EN_ENCRYPTION, &hdcp->app_data); if (!rc) { hdcp->authenticated = true; if (hdcp->force_encryption) hdcp2_force_encryption( hdcp->hdcp2_ctx, 1); cdata.cmd = HDCP_TRANSPORT_CMD_STATUS_SUCCESS; sde_hdcp_2x_wakeup_client(hdcp, &cdata); } else { pr_err("failed to enable encryption (%d)\n", rc); } } sde_hdcp_2x_set_hw_key(hdcp); sde_hdcp_2x_initialize_command(hdcp, HDCP_TRANSPORT_CMD_LINK_POLL, &cdata); goto exit; Loading drivers/misc/hdcp_qseecom.c +3 −3 Original line number Diff line number Diff line Loading @@ -1124,7 +1124,7 @@ static int hdcp2_app_timeout(struct hdcp2_handle *handle) return rc; } static int hdcp2_app_enable_encryption(struct hdcp2_handle *handle) static int hdcp2_app_set_hw_key(struct hdcp2_handle *handle) { int rc = 0; Loading Loading @@ -1249,8 +1249,8 @@ int hdcp2_app_comm(void *ctx, enum hdcp2_app_cmd cmd, case HDCP2_CMD_TIMEOUT: rc = hdcp2_app_timeout(handle); break; case HDCP2_CMD_EN_ENCRYPTION: rc = hdcp2_app_enable_encryption(handle); case HDCP2_CMD_SET_HW_KEY: rc = hdcp2_app_set_hw_key(handle); break; case HDCP2_CMD_QUERY_STREAM: rc = hdcp2_app_query_stream(handle); Loading drivers/video/fbdev/msm/mdss_hdcp_2x.c +3 −3 Original line number Diff line number Diff line /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -407,7 +407,7 @@ static void mdss_hdcp_2x_msg_sent(struct mdss_hdcp_2x_ctrl *hdcp) switch (hdcp->app_data.response.data[0]) { case SKE_SEND_TYPE_ID: if (!hdcp2_app_comm(hdcp->hdcp2_ctx, HDCP2_CMD_EN_ENCRYPTION, &hdcp->app_data)) { HDCP2_CMD_SET_HW_KEY, &hdcp->app_data)) { hdcp->authenticated = true; cdata.cmd = HDCP_TRANSPORT_CMD_STATUS_SUCCESS; Loading Loading @@ -587,7 +587,7 @@ static void mdss_hdcp_2x_msg_recvd(struct mdss_hdcp_2x_ctrl *hdcp) if (msg[0] == REP_STREAM_READY) { if (!hdcp->authenticated) { rc = hdcp2_app_comm(hdcp->hdcp2_ctx, HDCP2_CMD_EN_ENCRYPTION, HDCP2_CMD_SET_HW_KEY, &hdcp->app_data); if (!rc) { hdcp->authenticated = true; Loading include/linux/hdcp_qseecom.h +3 −3 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ enum hdcp2_app_cmd { HDCP2_CMD_STOP, HDCP2_CMD_PROCESS_MSG, HDCP2_CMD_TIMEOUT, HDCP2_CMD_EN_ENCRYPTION, HDCP2_CMD_SET_HW_KEY, HDCP2_CMD_QUERY_STREAM, }; Loading Loading @@ -51,8 +51,8 @@ static inline const char *hdcp2_app_cmd_str(enum hdcp2_app_cmd cmd) return HDCP_QSEECOM_ENUM_STR(HDCP2_CMD_PROCESS_MSG); case HDCP2_CMD_TIMEOUT: return HDCP_QSEECOM_ENUM_STR(HDCP2_CMD_TIMEOUT); case HDCP2_CMD_EN_ENCRYPTION: return HDCP_QSEECOM_ENUM_STR(HDCP2_CMD_EN_ENCRYPTION); case HDCP2_CMD_SET_HW_KEY: return HDCP_QSEECOM_ENUM_STR(HDCP2_CMD_SET_HW_KEY); case HDCP2_CMD_QUERY_STREAM: return HDCP_QSEECOM_ENUM_STR(HDCP2_CMD_QUERY_STREAM); default: return "???"; Loading Loading
drivers/gpu/drm/msm/sde_hdcp_2x.c +32 −27 Original line number Diff line number Diff line Loading @@ -528,17 +528,27 @@ static void sde_hdcp_2x_initialize_command(struct sde_hdcp_2x_ctrl *hdcp, cdata->buf = hdcp->app_data.request.data + 1; } static void sde_hdcp_2x_msg_sent(struct sde_hdcp_2x_ctrl *hdcp) static void sde_hdcp_2x_set_hw_key(struct sde_hdcp_2x_ctrl *hdcp) { int rc; struct hdcp_transport_wakeup_data cdata = { HDCP_TRANSPORT_CMD_INVALID }; cdata.context = hdcp->client_data; switch (hdcp->app_data.response.data[0]) { case SKE_SEND_TYPE_ID: if (!hdcp2_app_comm(hdcp->hdcp2_ctx, HDCP2_CMD_EN_ENCRYPTION, &hdcp->app_data)) { if (hdcp->authenticated) { pr_debug("authenticated, h/w key already set\n"); return; } rc = hdcp2_app_comm(hdcp->hdcp2_ctx, HDCP2_CMD_SET_HW_KEY, &hdcp->app_data); if (rc) { pr_err("failed to set h/w key: %d\n", rc); return; } hdcp->authenticated = true; pr_debug("authenticated\n"); if (hdcp->force_encryption) hdcp2_force_encryption(hdcp->hdcp2_ctx, 1); Loading @@ -547,6 +557,16 @@ static void sde_hdcp_2x_msg_sent(struct sde_hdcp_2x_ctrl *hdcp) sde_hdcp_2x_wakeup_client(hdcp, &cdata); } static void sde_hdcp_2x_msg_sent(struct sde_hdcp_2x_ctrl *hdcp) { struct hdcp_transport_wakeup_data cdata = { HDCP_TRANSPORT_CMD_INVALID }; cdata.context = hdcp->client_data; switch (hdcp->app_data.response.data[0]) { case SKE_SEND_TYPE_ID: sde_hdcp_2x_set_hw_key(hdcp); /* poll for link check */ sde_hdcp_2x_initialize_command(hdcp, HDCP_TRANSPORT_CMD_LINK_POLL, &cdata); Loading Loading @@ -743,25 +763,10 @@ static void sde_hdcp_2x_msg_recvd(struct sde_hdcp_2x_ctrl *hdcp) if (!rc) sde_hdcp_2x_send_message(hdcp); goto exit; } else if (!hdcp->authenticated) { rc = hdcp2_app_comm(hdcp->hdcp2_ctx, HDCP2_CMD_EN_ENCRYPTION, &hdcp->app_data); if (!rc) { hdcp->authenticated = true; if (hdcp->force_encryption) hdcp2_force_encryption( hdcp->hdcp2_ctx, 1); cdata.cmd = HDCP_TRANSPORT_CMD_STATUS_SUCCESS; sde_hdcp_2x_wakeup_client(hdcp, &cdata); } else { pr_err("failed to enable encryption (%d)\n", rc); } } sde_hdcp_2x_set_hw_key(hdcp); sde_hdcp_2x_initialize_command(hdcp, HDCP_TRANSPORT_CMD_LINK_POLL, &cdata); goto exit; Loading
drivers/misc/hdcp_qseecom.c +3 −3 Original line number Diff line number Diff line Loading @@ -1124,7 +1124,7 @@ static int hdcp2_app_timeout(struct hdcp2_handle *handle) return rc; } static int hdcp2_app_enable_encryption(struct hdcp2_handle *handle) static int hdcp2_app_set_hw_key(struct hdcp2_handle *handle) { int rc = 0; Loading Loading @@ -1249,8 +1249,8 @@ int hdcp2_app_comm(void *ctx, enum hdcp2_app_cmd cmd, case HDCP2_CMD_TIMEOUT: rc = hdcp2_app_timeout(handle); break; case HDCP2_CMD_EN_ENCRYPTION: rc = hdcp2_app_enable_encryption(handle); case HDCP2_CMD_SET_HW_KEY: rc = hdcp2_app_set_hw_key(handle); break; case HDCP2_CMD_QUERY_STREAM: rc = hdcp2_app_query_stream(handle); Loading
drivers/video/fbdev/msm/mdss_hdcp_2x.c +3 −3 Original line number Diff line number Diff line /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -407,7 +407,7 @@ static void mdss_hdcp_2x_msg_sent(struct mdss_hdcp_2x_ctrl *hdcp) switch (hdcp->app_data.response.data[0]) { case SKE_SEND_TYPE_ID: if (!hdcp2_app_comm(hdcp->hdcp2_ctx, HDCP2_CMD_EN_ENCRYPTION, &hdcp->app_data)) { HDCP2_CMD_SET_HW_KEY, &hdcp->app_data)) { hdcp->authenticated = true; cdata.cmd = HDCP_TRANSPORT_CMD_STATUS_SUCCESS; Loading Loading @@ -587,7 +587,7 @@ static void mdss_hdcp_2x_msg_recvd(struct mdss_hdcp_2x_ctrl *hdcp) if (msg[0] == REP_STREAM_READY) { if (!hdcp->authenticated) { rc = hdcp2_app_comm(hdcp->hdcp2_ctx, HDCP2_CMD_EN_ENCRYPTION, HDCP2_CMD_SET_HW_KEY, &hdcp->app_data); if (!rc) { hdcp->authenticated = true; Loading
include/linux/hdcp_qseecom.h +3 −3 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ enum hdcp2_app_cmd { HDCP2_CMD_STOP, HDCP2_CMD_PROCESS_MSG, HDCP2_CMD_TIMEOUT, HDCP2_CMD_EN_ENCRYPTION, HDCP2_CMD_SET_HW_KEY, HDCP2_CMD_QUERY_STREAM, }; Loading Loading @@ -51,8 +51,8 @@ static inline const char *hdcp2_app_cmd_str(enum hdcp2_app_cmd cmd) return HDCP_QSEECOM_ENUM_STR(HDCP2_CMD_PROCESS_MSG); case HDCP2_CMD_TIMEOUT: return HDCP_QSEECOM_ENUM_STR(HDCP2_CMD_TIMEOUT); case HDCP2_CMD_EN_ENCRYPTION: return HDCP_QSEECOM_ENUM_STR(HDCP2_CMD_EN_ENCRYPTION); case HDCP2_CMD_SET_HW_KEY: return HDCP_QSEECOM_ENUM_STR(HDCP2_CMD_SET_HW_KEY); case HDCP2_CMD_QUERY_STREAM: return HDCP_QSEECOM_ENUM_STR(HDCP2_CMD_QUERY_STREAM); default: return "???"; Loading