diff for duplicates of <c44f75106e0b4bf04f8158231c1bf6cbdae93a64.camel@mediatek.com> diff --git a/N1/2.bin b/N1/2.bin new file mode 100644 index 0000000..6106a8e --- /dev/null +++ b/N1/2.bin @@ -0,0 +1,101 @@ +<html><body><p> +<pre> +Hi, Mac: + +On Sat, 2024-06-08 at 20:01 +0800, mac.shen wrote: +> Changes in v3: +> - refine the function to get system time +> - refine the flow to do HDCP with content type and +>   protection value which set by user space +> - refine the flow to update content protection +> - refine the flow to do HDCP2.x authentication +> per suggestion from the previous thread: +> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-mediatek__;!!CTRNKA9wMg0ARbw!md6xUiYN88D2YmETs8FQgaExM2zH8S1SmAEU9GRchwpNsXOyDFul3ziVKhRpCJaj8Rcn-gvM-801runjwA$  +> /patch/20240205055055.25340-3-mac.shen@mediatek.com/ +>  +> Signed-off-by: mac.shen <mac.shen@mediatek.com> +> --- + +[snip] + +> + +> +static int dp_tx_hdcp2x_read_rep_send_recvid_list(struct mtk_hdcp_info *hdcp_info) +> +{ +> +struct mtk_dp *mtk_dp = container_of(hdcp_info, struct mtk_dp, hdcp_info); +> +u8 rx_status = 0; +> +ssize_t ret; +> + +> +dev_dbg(mtk_dp->dev, "[HDCP2.X] HDCP_2_2_REP_SEND_RECVID_LIST\n"); +> + +> +dp_tx_hdcp2x_wait_for_cp_irq(hdcp_info, HDCP_2_2_RECVID_LIST_TIMEOUT_MS); +> +hdcp_info->hdcp2_info.cp_irq_cached = atomic_read(&hdcp_info->hdcp2_info.cp_irq); +> + +> +ret = drm_dp_dpcd_read(&mtk_dp->aux, DP_HDCP_2_2_REG_RXSTATUS_OFFSET, &rx_status, +> +       HDCP_2_2_DP_RXSTATUS_LEN); +> +if (ret != HDCP_2_2_DP_RXSTATUS_LEN) +> +return ret >= 0 ? -EIO : ret; +> + +> +if (!HDCP_2_2_DP_RXSTATUS_READY(rx_status)) { +> +dev_err(mtk_dp->dev, "[HDCP2.X] RX status no ready\n"); +> +return -EAGAIN; +> +} +> + +> +ret = drm_dp_dpcd_read(&mtk_dp->aux, DP_HDCP_2_2_REP_SEND_RECVID_LIST_OFFSET, +> +       hdcp_info->hdcp2_info.hdcp_rx.recvid_list.rx_info, +> +HDCP_2_2_RXINFO_LEN); + +In [1], intel use DP_HDCP_2_2_REG_RXINFO_OFFSET to get device count. +But here you use DP_HDCP_2_2_REP_SEND_RECVID_LIST_OFFSET to get device count. +So both command can get device count? Or something wrong? + +[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/i915/display/intel_dp_hdcp.c?h=v6.12-rc5#n497 + +Regards, +CK + +> +if (ret < 0) +> +return ret; +> + +> +hdcp_info->hdcp2_info.device_count = +> +(HDCP_2_2_DEV_COUNT_HI(hdcp_info->hdcp2_info.hdcp_rx.recvid_list.rx_info[0]) << 4 | +> +HDCP_2_2_DEV_COUNT_LO(hdcp_info->hdcp2_info.hdcp_rx.recvid_list.rx_info[1])); +> + +> +ret = drm_dp_dpcd_read(&mtk_dp->aux, DP_HDCP_2_2_REG_SEQ_NUM_V_OFFSET, +> +       hdcp_info->hdcp2_info.hdcp_rx.recvid_list.seq_num_v, +> +HDCP_2_2_SEQ_NUM_LEN); +> +if (ret < 0) +> +return ret; +> + +> +ret = drm_dp_dpcd_read(&mtk_dp->aux, DP_HDCP_2_2_REG_VPRIME_OFFSET, +> +       hdcp_info->hdcp2_info.hdcp_rx.recvid_list.v_prime, +> +HDCP_2_2_V_PRIME_HALF_LEN); +> +if (ret < 0) +> +return ret; +> + +> +ret = drm_dp_dpcd_read(&mtk_dp->aux, DP_HDCP_2_2_REG_RECV_ID_LIST_OFFSET, +> +       hdcp_info->hdcp2_info.hdcp_rx.recvid_list.receiver_ids, +> +hdcp_info->hdcp2_info.device_count * HDCP_2_2_RECEIVER_ID_LEN); +> +if (ret < 0) +> +return ret; +> + +> +return 0; +> +} +> + + + +</pre> +</p></body></html><!--type:text--><!--{--><pre>************* MEDIATEK Confidentiality Notice + ******************** +The information contained in this e-mail message (including any +attachments) may be confidential, proprietary, privileged, or otherwise +exempt from disclosure under applicable laws. It is intended to be +conveyed only to the designated recipient(s). Any use, dissemination, +distribution, printing, retaining or copying of this e-mail (including its +attachments) by unintended recipient(s) is strictly prohibited and may +be unlawful. If you are not an intended recipient of this e-mail, or believe + +that you have received this e-mail in error, please notify the sender +immediately (by replying to this e-mail), delete any and all copies of +this e-mail (including any attachments) from your system, and do not +disclose the content of this e-mail to any other person. Thank you! +</pre><!--}--> diff --git a/N1/2.hdr b/N1/2.hdr new file mode 100644 index 0000000..da1f671 --- /dev/null +++ b/N1/2.hdr @@ -0,0 +1,3 @@ +Content-Type: text/html; + charset="utf-8" +Content-Transfer-Encoding: base64 diff --git a/a/content_digest b/N1/content_digest index 9952660..3f790ac 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -16,7 +16,7 @@ linux-mediatek@lists.infradead.org <linux-mediatek@lists.infradead.org> linux-arm-kernel@lists.infradead.org <linux-arm-kernel@lists.infradead.org> " Shuijing Li (\346\235\216\346\260\264\351\235\231) <Shuijing.Li@mediatek.com>\0" - "\00:1\0" + "\01:1\0" "b\0" "Hi, Mac:\n" "\n" @@ -99,5 +99,108 @@ "> +\treturn 0;\n" "> +}\n" > + + "\01:2\0" + "b\0" + "<html><body><p>\r\n" + "<pre>\r\n" + "Hi, Mac:\r\n" + "\r\n" + "On Sat, 2024-06-08 at 20:01 +0800, mac.shen wrote:\r\n" + "> Changes in v3:\r\n" + "> - refine the function to get system time\r\n" + "> - refine the flow to do HDCP with content type and\r\n" + ">   protection value which set by user space\r\n" + "> - refine the flow to update content protection\r\n" + "> - refine the flow to do HDCP2.x authentication\r\n" + "> per suggestion from the previous thread:\r\n" + "> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-mediatek__;!!CTRNKA9wMg0ARbw!md6xUiYN88D2YmETs8FQgaExM2zH8S1SmAEU9GRchwpNsXOyDFul3ziVKhRpCJaj8Rcn-gvM-801runjwA$ \r\n" + "> /patch/20240205055055.25340-3-mac.shen@mediatek.com/\r\n" + "> \r\n" + "> Signed-off-by: mac.shen <mac.shen@mediatek.com>\r\n" + "> ---\r\n" + "\r\n" + "[snip]\r\n" + "\r\n" + "> +\r\n" + "> +static int dp_tx_hdcp2x_read_rep_send_recvid_list(struct mtk_hdcp_info *hdcp_info)\r\n" + "> +{\r\n" + "> +struct mtk_dp *mtk_dp = container_of(hdcp_info, struct mtk_dp, hdcp_info);\r\n" + "> +u8 rx_status = 0;\r\n" + "> +ssize_t ret;\r\n" + "> +\r\n" + "> +dev_dbg(mtk_dp->dev, "[HDCP2.X] HDCP_2_2_REP_SEND_RECVID_LIST\n");\r\n" + "> +\r\n" + "> +dp_tx_hdcp2x_wait_for_cp_irq(hdcp_info, HDCP_2_2_RECVID_LIST_TIMEOUT_MS);\r\n" + "> +hdcp_info->hdcp2_info.cp_irq_cached = atomic_read(&hdcp_info->hdcp2_info.cp_irq);\r\n" + "> +\r\n" + "> +ret = drm_dp_dpcd_read(&mtk_dp->aux, DP_HDCP_2_2_REG_RXSTATUS_OFFSET, &rx_status,\r\n" + "> +       HDCP_2_2_DP_RXSTATUS_LEN);\r\n" + "> +if (ret != HDCP_2_2_DP_RXSTATUS_LEN)\r\n" + "> +return ret >= 0 ? -EIO : ret;\r\n" + "> +\r\n" + "> +if (!HDCP_2_2_DP_RXSTATUS_READY(rx_status)) {\r\n" + "> +dev_err(mtk_dp->dev, "[HDCP2.X] RX status no ready\n");\r\n" + "> +return -EAGAIN;\r\n" + "> +}\r\n" + "> +\r\n" + "> +ret = drm_dp_dpcd_read(&mtk_dp->aux, DP_HDCP_2_2_REP_SEND_RECVID_LIST_OFFSET,\r\n" + "> +       hdcp_info->hdcp2_info.hdcp_rx.recvid_list.rx_info,\r\n" + "> +HDCP_2_2_RXINFO_LEN);\r\n" + "\r\n" + "In [1], intel use DP_HDCP_2_2_REG_RXINFO_OFFSET to get device count.\r\n" + "But here you use DP_HDCP_2_2_REP_SEND_RECVID_LIST_OFFSET to get device count.\r\n" + "So both command can get device count? Or something wrong?\r\n" + "\r\n" + "[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/i915/display/intel_dp_hdcp.c?h=v6.12-rc5#n497\r\n" + "\r\n" + "Regards,\r\n" + "CK\r\n" + "\r\n" + "> +if (ret < 0)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +hdcp_info->hdcp2_info.device_count =\r\n" + "> +(HDCP_2_2_DEV_COUNT_HI(hdcp_info->hdcp2_info.hdcp_rx.recvid_list.rx_info[0]) << 4 |\r\n" + "> +HDCP_2_2_DEV_COUNT_LO(hdcp_info->hdcp2_info.hdcp_rx.recvid_list.rx_info[1]));\r\n" + "> +\r\n" + "> +ret = drm_dp_dpcd_read(&mtk_dp->aux, DP_HDCP_2_2_REG_SEQ_NUM_V_OFFSET,\r\n" + "> +       hdcp_info->hdcp2_info.hdcp_rx.recvid_list.seq_num_v,\r\n" + "> +HDCP_2_2_SEQ_NUM_LEN);\r\n" + "> +if (ret < 0)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +ret = drm_dp_dpcd_read(&mtk_dp->aux, DP_HDCP_2_2_REG_VPRIME_OFFSET,\r\n" + "> +       hdcp_info->hdcp2_info.hdcp_rx.recvid_list.v_prime,\r\n" + "> +HDCP_2_2_V_PRIME_HALF_LEN);\r\n" + "> +if (ret < 0)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +ret = drm_dp_dpcd_read(&mtk_dp->aux, DP_HDCP_2_2_REG_RECV_ID_LIST_OFFSET,\r\n" + "> +       hdcp_info->hdcp2_info.hdcp_rx.recvid_list.receiver_ids,\r\n" + "> +hdcp_info->hdcp2_info.device_count * HDCP_2_2_RECEIVER_ID_LEN);\r\n" + "> +if (ret < 0)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +return 0;\r\n" + "> +}\r\n" + "> +\r\n" + "\r\n" + "\r\n" + "</pre>\r\n" + "</p></body></html><!--type:text--><!--{--><pre>************* MEDIATEK Confidentiality Notice\r\n" + " ********************\r\n" + "The information contained in this e-mail message (including any \r\n" + "attachments) may be confidential, proprietary, privileged, or otherwise\r\n" + "exempt from disclosure under applicable laws. It is intended to be \r\n" + "conveyed only to the designated recipient(s). Any use, dissemination, \r\n" + "distribution, printing, retaining or copying of this e-mail (including its \r\n" + "attachments) by unintended recipient(s) is strictly prohibited and may \r\n" + "be unlawful. If you are not an intended recipient of this e-mail, or believe\r\n" + " \r\n" + "that you have received this e-mail in error, please notify the sender \r\n" + "immediately (by replying to this e-mail), delete any and all copies of \r\n" + "this e-mail (including any attachments) from your system, and do not\r\n" + "disclose the content of this e-mail to any other person. Thank you!\r\n" + </pre><!--}--> -055cff6d30cdf860e91c26c90ab268dc59da169c6b726905bcd48759836b744a +f689b5c1fccb1faad8dab3063dd7cae2cf9d77743129759576887a9a26d73cd8
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.