u-boot/include/tee/optee_service.h
Etienne Carriere 94ccfb78a4 drivers: tee: optee: discover OP-TEE services
This change defines resources for OP-TEE service drivers to register
themselves for being bound to when OP-TEE firmware reports the related
service is supported. OP-TEE services are discovered during optee
driver probe sequence which mandates optee driver is always probe once
bound.

Discovery of optee services and binding to related U-Boot drivers is
embedded upon configuration switch CONFIG_OPTEE_SERVICE_DISCOVERY.

Cc: Jens Wiklander <jens.wiklander@linaro.org>
Cc: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2022-09-14 15:23:03 -04:00

35 lines
920 B
C

/* SPDX-License-Identifier: BSD-2-Clause */
/*
* (C) Copyright 2022 Linaro Limited
*/
#ifndef _OPTEE_SERVICE_H
#define _OPTEE_SERVICE_H
/*
* struct optee_service - Discoverable OP-TEE service
*
* @driver_name - Name of the related driver
* @uuid - UUID of the OP-TEE service related to the driver
*
* Use macro OPTEE_SERVICE_DRIVER() to register a driver related to an
* OP-TEE service discovered when driver asks OP-TEE services enumaration.
*/
struct optee_service {
const char *driver_name;
const struct tee_optee_ta_uuid uuid;
};
#ifdef CONFIG_OPTEE_SERVICE_DISCOVERY
#define OPTEE_SERVICE_DRIVER(__name, __uuid, __drv_name) \
ll_entry_declare(struct optee_service, __name, optee_service) = { \
.uuid = __uuid, \
.driver_name = __drv_name, \
}
#else
#define OPTEE_SERVICE_DRIVER(__name, __uuid, __drv_name) \
static int __name##__COUNTER__ __always_unused
#endif
#endif /* _OPTEE_SERVICE_H */