summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorAjay Singh Parmar <aparmar@codeaurora.org>2015-10-01 13:24:06 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:46:20 -0700
commit38fdd3f630696356da2575fe8f0ea51cecd95b5c (patch)
tree8d9eea7c7a9274d0eb9b218df9c6cad5597648e7 /include/linux
parente8591b7730777af87c1ea2b6d7742118c2531bf3 (diff)
msm: mdss: hdmi: cleanup wakeup calls
Do not lock in wakeup functions as it may block current thread. Wakeup can trigger a callback looking to acquire same lock. Also rename the wakeup command names to properly identify client and lib commands. Change-Id: I28411714d2d7f0104364726fc5ce0593e5ccff91 Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/hdcp_qseecom.h97
1 files changed, 58 insertions, 39 deletions
diff --git a/include/linux/hdcp_qseecom.h b/include/linux/hdcp_qseecom.h
index 8d7f19ad97ff..51cc4a1b6e6e 100644
--- a/include/linux/hdcp_qseecom.h
+++ b/include/linux/hdcp_qseecom.h
@@ -15,63 +15,83 @@
#include <linux/types.h>
enum hdcp_lib_wakeup_cmd {
- HDCP_WKUP_CMD_START,
- HDCP_WKUP_CMD_STOP,
- HDCP_WKUP_CMD_MSG_SEND_SUCCESS,
- HDCP_WKUP_CMD_MSG_SEND_FAILED,
- HDCP_WKUP_CMD_MSG_RECV_SUCCESS,
- HDCP_WKUP_CMD_MSG_RECV_FAILED,
- HDCP_WKUP_CMD_MSG_RECV_TIMEOUT,
+ HDCP_LIB_WKUP_CMD_INVALID,
+ HDCP_LIB_WKUP_CMD_START,
+ HDCP_LIB_WKUP_CMD_STOP,
+ HDCP_LIB_WKUP_CMD_MSG_SEND_SUCCESS,
+ HDCP_LIB_WKUP_CMD_MSG_SEND_FAILED,
+ HDCP_LIB_WKUP_CMD_MSG_RECV_SUCCESS,
+ HDCP_LIB_WKUP_CMD_MSG_RECV_FAILED,
+ HDCP_LIB_WKUP_CMD_MSG_RECV_TIMEOUT,
};
-enum hdmi_hdcp_cmd {
- HDMI_HDCP_SEND_MESSAGE,
- HDMI_HDCP_RECV_MESSAGE,
- HDMI_HDCP_STATUS_SUCCESS,
- HDMI_HDCP_STATUS_FAIL
+enum hdmi_hdcp_wakeup_cmd {
+ HDMI_HDCP_WKUP_CMD_INVALID,
+ HDMI_HDCP_WKUP_CMD_SEND_MESSAGE,
+ HDMI_HDCP_WKUP_CMD_RECV_MESSAGE,
+ HDMI_HDCP_WKUP_CMD_STATUS_SUCCESS,
+ HDMI_HDCP_WKUP_CMD_STATUS_FAILED,
+ HDMI_HDCP_WKUP_CMD_AUTHENTICATE
+};
+
+struct hdcp_lib_wakeup_data {
+ enum hdcp_lib_wakeup_cmd cmd;
+ void *context;
+ char *recvd_msg_buf;
+ uint32_t recvd_msg_len;
+ uint32_t timeout;
+};
+
+struct hdmi_hdcp_wakeup_data {
+ enum hdmi_hdcp_wakeup_cmd cmd;
+ void *context;
+ char *send_msg_buf;
+ uint32_t send_msg_len;
+ uint32_t timeout;
};
static inline char *hdmi_hdcp_cmd_to_str(uint32_t cmd)
{
switch (cmd) {
- case HDMI_HDCP_SEND_MESSAGE:
- return "HDMI_HDCP_SEND_MESSAGE";
- case HDMI_HDCP_RECV_MESSAGE:
- return "HDMI_HDCP_RECV_MESSAGE";
- case HDMI_HDCP_STATUS_SUCCESS:
- return "HDMI_HDCP_STATUS_SUCCESS";
- case HDMI_HDCP_STATUS_FAIL:
- return "HDMI_HDCP_STATUS_FAIL";
+ case HDMI_HDCP_WKUP_CMD_SEND_MESSAGE:
+ return "HDMI_HDCP_WKUP_CMD_SEND_MESSAGE";
+ case HDMI_HDCP_WKUP_CMD_RECV_MESSAGE:
+ return "HDMI_HDCP_WKUP_CMD_RECV_MESSAGE";
+ case HDMI_HDCP_WKUP_CMD_STATUS_SUCCESS:
+ return "HDMI_HDCP_WKUP_CMD_STATUS_SUCCESS";
+ case HDMI_HDCP_WKUP_CMD_STATUS_FAILED:
+ return "HDMI_HDCP_WKUP_CMD_STATUS_FAIL";
+ case HDMI_HDCP_WKUP_CMD_AUTHENTICATE:
+ return "HDMI_HDCP_WKUP_CMD_AUTHENTICATE";
default:
return "???";
}
}
-static inline char *hdcp_cmd_to_str(uint32_t cmd)
+static inline char *hdcp_lib_cmd_to_str(uint32_t cmd)
{
switch (cmd) {
- case HDCP_WKUP_CMD_START:
- return "HDCP_WKUP_CMD_START";
- case HDCP_WKUP_CMD_STOP:
- return "HDCP_WKUP_CMD_STOP";
- case HDCP_WKUP_CMD_MSG_SEND_SUCCESS:
- return "HDCP_WKUP_CMD_MSG_SEND_SUCCESS";
- case HDCP_WKUP_CMD_MSG_SEND_FAILED:
- return "HDCP_WKUP_CMD_MSG_SEND_FAILED";
- case HDCP_WKUP_CMD_MSG_RECV_SUCCESS:
- return "HDCP_WKUP_CMD_MSG_RECV_SUCCESS";
- case HDCP_WKUP_CMD_MSG_RECV_FAILED:
- return "HDCP_WKUP_CMD_MSG_RECV_FAILED";
- case HDCP_WKUP_CMD_MSG_RECV_TIMEOUT:
- return "HDCP_WKUP_CMD_MSG_RECV_TIMEOUT";
+ case HDCP_LIB_WKUP_CMD_START:
+ return "HDCP_LIB_WKUP_CMD_START";
+ case HDCP_LIB_WKUP_CMD_STOP:
+ return "HDCP_LIB_WKUP_CMD_STOP";
+ case HDCP_LIB_WKUP_CMD_MSG_SEND_SUCCESS:
+ return "HDCP_LIB_WKUP_CMD_MSG_SEND_SUCCESS";
+ case HDCP_LIB_WKUP_CMD_MSG_SEND_FAILED:
+ return "HDCP_LIB_WKUP_CMD_MSG_SEND_FAILED";
+ case HDCP_LIB_WKUP_CMD_MSG_RECV_SUCCESS:
+ return "HDCP_LIB_WKUP_CMD_MSG_RECV_SUCCESS";
+ case HDCP_LIB_WKUP_CMD_MSG_RECV_FAILED:
+ return "HDCP_LIB_WKUP_CMD_MSG_RECV_FAILED";
+ case HDCP_LIB_WKUP_CMD_MSG_RECV_TIMEOUT:
+ return "HDCP_LIB_WKUP_CMD_MSG_RECV_TIMEOUT";
default:
return "???";
}
}
struct hdcp_txmtr_ops {
- int (*wakeup)(void *phdcpcontext, enum hdcp_lib_wakeup_cmd cmd,
- char *msg, uint32_t len);
+ int (*wakeup)(struct hdcp_lib_wakeup_data *data);
bool (*feature_supported)(void *phdcpcontext);
int (*hdcp_txmtr_get_state)(void *phdcpcontext,
@@ -80,8 +100,7 @@ struct hdcp_txmtr_ops {
};
struct hdcp_client_ops {
- int (*wakeup)(void *client_ctx, enum hdmi_hdcp_cmd cmd,
- char *msg, uint32_t msglen, uint32_t timeout);
+ int (*wakeup)(struct hdmi_hdcp_wakeup_data *data);
};
int hdcp_library_register(void **pphdcpcontext,