198f87d851
Move header files to /soc/qcom so that any kernel client could use that and add Auto-generated header files. export method for get client env so that kernel client can use the api to get root env object. Change-Id: Iec6492144602cf09892be5912079056a5970ee85 Signed-off-by: Nitin LNU <quic_nlakra@quicinc.com>
124 lines
2.8 KiB
C
124 lines
2.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only
|
|
*
|
|
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
|
|
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __ICLIENT_ENV_H
|
|
#define __ICLIENT_ENV_H
|
|
|
|
#include "smcinvoke_object.h"
|
|
|
|
#define IClientEnv_OP_open 0
|
|
#define IClientEnv_OP_registerLegacy 1
|
|
#define IClientEnv_OP_register 2
|
|
#define IClientEnv_OP_registerWithWhitelist 3
|
|
#define IClientEnv_OP_notifyDomainChange 4
|
|
#define IClientEnv_OP_registerWithCredentials 5
|
|
|
|
static inline int32_t
|
|
IClientEnv_release(struct Object self)
|
|
{
|
|
return Object_invoke(self, Object_OP_release, 0, 0);
|
|
}
|
|
|
|
static inline int32_t
|
|
IClientEnv_retain(struct Object self)
|
|
{
|
|
return Object_invoke(self, Object_OP_retain, 0, 0);
|
|
}
|
|
|
|
static inline int32_t
|
|
IClientEnv_open(struct Object self, uint32_t uid_val, struct Object *obj_ptr)
|
|
{
|
|
union ObjectArg a[2];
|
|
int32_t result;
|
|
|
|
a[0].b = (struct ObjectBuf) { &uid_val, sizeof(uint32_t) };
|
|
|
|
result = Object_invoke(self, IClientEnv_OP_open, a, ObjectCounts_pack(1, 0, 0, 1));
|
|
|
|
*obj_ptr = a[1].o;
|
|
|
|
return result;
|
|
}
|
|
|
|
static inline int32_t
|
|
IClientEnv_registerLegacy(struct Object self, const void *credentials_ptr, size_t credentials_len,
|
|
struct Object *clientEnv_ptr)
|
|
{
|
|
union ObjectArg a[2];
|
|
int32_t result;
|
|
|
|
a[0].bi = (struct ObjectBufIn) { credentials_ptr, credentials_len * 1 };
|
|
|
|
result = Object_invoke(self, IClientEnv_OP_registerLegacy, a,
|
|
ObjectCounts_pack(1, 0, 0, 1));
|
|
|
|
*clientEnv_ptr = a[1].o;
|
|
|
|
return result;
|
|
}
|
|
|
|
static inline int32_t
|
|
IClientEnv_register(struct Object self, struct Object credentials_val,
|
|
struct Object *clientEnv_ptr)
|
|
{
|
|
union ObjectArg a[2];
|
|
int32_t result;
|
|
|
|
a[0].o = credentials_val;
|
|
|
|
result = Object_invoke(self, IClientEnv_OP_register, a,
|
|
ObjectCounts_pack(0, 0, 1, 1));
|
|
|
|
*clientEnv_ptr = a[1].o;
|
|
|
|
return result;
|
|
}
|
|
|
|
static inline int32_t
|
|
IClientEnv_registerWithWhitelist(struct Object self,
|
|
struct Object credentials_val, const uint32_t *uids_ptr,
|
|
size_t uids_len, struct Object *clientEnv_ptr)
|
|
{
|
|
union ObjectArg a[3];
|
|
int32_t result;
|
|
|
|
a[1].o = credentials_val;
|
|
a[0].bi = (struct ObjectBufIn) { uids_ptr, uids_len *
|
|
sizeof(uint32_t) };
|
|
|
|
result = Object_invoke(self, IClientEnv_OP_registerWithWhitelist, a,
|
|
ObjectCounts_pack(1, 0, 1, 1));
|
|
|
|
*clientEnv_ptr = a[2].o;
|
|
|
|
return result;
|
|
}
|
|
|
|
static inline int32_t
|
|
IClientEnv_notifyDomainChange(struct Object self)
|
|
{
|
|
return Object_invoke(self, IClientEnv_OP_notifyDomainChange, 0, 0);
|
|
}
|
|
|
|
static inline int32_t
|
|
IClientEnv_registerWithCredentials(struct Object self, struct Object
|
|
credentials_val, struct Object *clientEnv_ptr)
|
|
{
|
|
union ObjectArg a[2] = {{{0, 0}}};
|
|
int32_t result;
|
|
|
|
a[0].o = credentials_val;
|
|
|
|
result = Object_invoke(self, IClientEnv_OP_registerWithCredentials, a,
|
|
ObjectCounts_pack(0, 0, 1, 1));
|
|
|
|
*clientEnv_ptr = a[1].o;
|
|
|
|
return result;
|
|
}
|
|
|
|
#endif /* __ICLIENT_ENV_H */
|