[PATCH v2 1/8] drivers: introduce Secure Monitor uclass
Simon Glass
sjg at google.com
Thu Sep 21 03:03:08 CEST 2023
Hi Alexey,
On Mon, 11 Sept 2023 at 10:35, Alexey Romanov
<avromanov at salutedevices.com> wrote:
>
> At the moment, we don't have a common API for working with
> SM, only the smc_call() function. This approach is not generic
> and difficult to configure and maintain.
>
> This patch adds UCLASS_SM with the generic API:
>
> - sm_call()
> - sm_call_write()
> - sm_call_read()
>
> These functions operate with struct pt_regs, which describes
> Secure Monitor arguments.
>
> Signed-off-by: Alexey Romanov <avromanov at salutedevices.com>
> ---
> drivers/Kconfig | 2 ++
> drivers/Makefile | 1 +
> drivers/sm/Kconfig | 2 ++
> drivers/sm/Makefile | 3 ++
> drivers/sm/sm-uclass.c | 55 ++++++++++++++++++++++++++++++++
> include/dm/uclass-id.h | 1 +
> include/sm-uclass.h | 72 ++++++++++++++++++++++++++++++++++++++++++
> include/sm.h | 67 +++++++++++++++++++++++++++++++++++++++
> 8 files changed, 203 insertions(+)
> create mode 100644 drivers/sm/Kconfig
> create mode 100644 drivers/sm/Makefile
> create mode 100644 drivers/sm/sm-uclass.c
> create mode 100644 include/sm-uclass.h
> create mode 100644 include/sm.h
Reviewed-by: Simon Glass <sjg at chromium.org>
nit below
>
> diff --git a/drivers/Kconfig b/drivers/Kconfig
> index 75ac149d31..72e6405322 100644
> --- a/drivers/Kconfig
> +++ b/drivers/Kconfig
> @@ -112,6 +112,8 @@ source "drivers/scsi/Kconfig"
>
> source "drivers/serial/Kconfig"
>
> +source "drivers/sm/Kconfig"
> +
> source "drivers/smem/Kconfig"
>
> source "drivers/sound/Kconfig"
> diff --git a/drivers/Makefile b/drivers/Makefile
> index 6f1de58e00..b7bd3633b1 100644
> --- a/drivers/Makefile
> +++ b/drivers/Makefile
> @@ -124,3 +124,4 @@ obj-$(CONFIG_DM_RNG) += rng/
> endif
>
> obj-y += soc/
> +obj-y += sm/
> diff --git a/drivers/sm/Kconfig b/drivers/sm/Kconfig
> new file mode 100644
> index 0000000000..6cc6d55578
> --- /dev/null
> +++ b/drivers/sm/Kconfig
> @@ -0,0 +1,2 @@
> +config SM
> + bool "Enable Secure Monitor driver support"
> diff --git a/drivers/sm/Makefile b/drivers/sm/Makefile
> new file mode 100644
> index 0000000000..9f4683ba06
> --- /dev/null
> +++ b/drivers/sm/Makefile
> @@ -0,0 +1,3 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +
> +obj-y += sm-uclass.o
> diff --git a/drivers/sm/sm-uclass.c b/drivers/sm/sm-uclass.c
> new file mode 100644
> index 0000000000..78af857026
> --- /dev/null
> +++ b/drivers/sm/sm-uclass.c
> @@ -0,0 +1,55 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (c) 2023 SberDevices, Inc.
> + *
> + * Author: Alexey Romanov <avromanov at salutedevices.com>
> + */
> +
> +#include <common.h>
> +#include <dm.h>
> +#include <errno.h>
> +#include <sm-uclass.h>
> +
> +static const struct sm_ops *get_sm_ops(struct udevice *dev)
> +{
> + return (const struct sm_ops *)dev->driver->ops;
> +}
> +
> +int sm_call(struct udevice *dev, u32 cmd, s32 *ret, struct pt_regs *args)
> +{
> + const struct sm_ops *ops = get_sm_ops(dev);
> +
> + if (ops->sm_call)
> + return ops->sm_call(dev, cmd, ret, args);
> +
> + return -EPROTONOSUPPORT;
We normally use -ENOSYS in U-Boot
Regards,
Simon
More information about the U-Boot
mailing list