diff options
Diffstat (limited to 'drivers/firmware/qcom_scm-32.c')
-rw-r--r-- | drivers/firmware/qcom_scm-32.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/drivers/firmware/qcom_scm-32.c b/drivers/firmware/qcom_scm-32.c index b08b822ebafa..1bd6f9c34331 100644 --- a/drivers/firmware/qcom_scm-32.c +++ b/drivers/firmware/qcom_scm-32.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* Copyright (c) 2010, Code Aurora Forum. All rights reserved. | 1 | /* Copyright (c) 2010,2015, The Linux Foundation. All rights reserved. |
2 | * Copyright (C) 2015 Linaro Ltd. | 2 | * Copyright (C) 2015 Linaro Ltd. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or modify | 4 | * This program is free software; you can redistribute it and/or modify |
@@ -478,3 +478,26 @@ void __qcom_scm_cpu_power_down(u32 flags) | |||
478 | qcom_scm_call_atomic1(QCOM_SCM_SVC_BOOT, QCOM_SCM_CMD_TERMINATE_PC, | 478 | qcom_scm_call_atomic1(QCOM_SCM_SVC_BOOT, QCOM_SCM_CMD_TERMINATE_PC, |
479 | flags & QCOM_SCM_FLUSH_FLAG_MASK); | 479 | flags & QCOM_SCM_FLUSH_FLAG_MASK); |
480 | } | 480 | } |
481 | |||
482 | int __qcom_scm_is_call_available(u32 svc_id, u32 cmd_id) | ||
483 | { | ||
484 | int ret; | ||
485 | u32 svc_cmd = (svc_id << 10) | cmd_id; | ||
486 | u32 ret_val = 0; | ||
487 | |||
488 | ret = qcom_scm_call(QCOM_SCM_SVC_INFO, QCOM_IS_CALL_AVAIL_CMD, &svc_cmd, | ||
489 | sizeof(svc_cmd), &ret_val, sizeof(ret_val)); | ||
490 | if (ret) | ||
491 | return ret; | ||
492 | |||
493 | return ret_val; | ||
494 | } | ||
495 | |||
496 | int __qcom_scm_hdcp_req(struct qcom_scm_hdcp_req *req, u32 req_cnt, u32 *resp) | ||
497 | { | ||
498 | if (req_cnt > QCOM_SCM_HDCP_MAX_REQ_CNT) | ||
499 | return -ERANGE; | ||
500 | |||
501 | return qcom_scm_call(QCOM_SCM_SVC_HDCP, QCOM_SCM_CMD_HDCP, | ||
502 | req, req_cnt * sizeof(*req), resp, sizeof(*resp)); | ||
503 | } | ||