Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 1 | // SPDX-License-Identifier: GPL-2.0+ |
| 2 | /* |
| 3 | * Copyright 2020 NXP |
| 4 | * |
| 5 | * File containing client-side RPC functions for the RM service. These |
| 6 | * function are ported to clients that communicate to the SC. |
| 7 | */ |
| 8 | |
| 9 | #include <linux/firmware/imx/svc/rm.h> |
| 10 | |
| 11 | struct imx_sc_msg_rm_rsrc_owned { |
| 12 | struct imx_sc_rpc_msg hdr; |
| 13 | u16 resource; |
| 14 | } __packed __aligned(4); |
| 15 | |
| 16 | /* |
| 17 | * This function check @resource is owned by current partition or not |
| 18 | * |
| 19 | * @param[in] ipc IPC handle |
| 20 | * @param[in] resource resource the control is associated with |
| 21 | * |
| 22 | * @return Returns 0 for not owned and 1 for owned. |
| 23 | */ |
| 24 | bool imx_sc_rm_is_resource_owned(struct imx_sc_ipc *ipc, u16 resource) |
| 25 | { |
| 26 | struct imx_sc_msg_rm_rsrc_owned msg; |
| 27 | struct imx_sc_rpc_msg *hdr = &msg.hdr; |
| 28 | |
| 29 | hdr->ver = IMX_SC_RPC_VERSION; |
| 30 | hdr->svc = IMX_SC_RPC_SVC_RM; |
| 31 | hdr->func = IMX_SC_RM_FUNC_IS_RESOURCE_OWNED; |
| 32 | hdr->size = 2; |
| 33 | |
| 34 | msg.resource = resource; |
| 35 | |
| 36 | /* |
| 37 | * SCU firmware only returns value 0 or 1 |
| 38 | * for resource owned check which means not owned or owned. |
| 39 | * So it is always successful. |
| 40 | */ |
| 41 | imx_scu_call_rpc(ipc, &msg, true); |
| 42 | |
| 43 | return hdr->func; |
| 44 | } |
| 45 | EXPORT_SYMBOL(imx_sc_rm_is_resource_owned); |