diff options
author | Ramon Fried <ramon.fried@gmail.com> | 2018-07-02 02:57:55 +0300 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2018-07-19 16:31:37 -0400 |
commit | 7b384eccc785b596f68448b155cbda26df57fb23 (patch) | |
tree | 77d623c310e8050de65ecc655a46dee7b3f81933 /drivers | |
parent | b19886b9469174213877ef37670ce35c55acb456 (diff) | |
download | u-boot-7b384eccc785b596f68448b155cbda26df57fb23.zip u-boot-7b384eccc785b596f68448b155cbda26df57fb23.tar.gz u-boot-7b384eccc785b596f68448b155cbda26df57fb23.tar.bz2 |
dm: SMEM (Shared memory) uclass
This is a uclass for Shared memory manager drivers.
A Shared Memory Manager driver implements an interface for allocating
and accessing items in the memory area shared among all of the
processors.
Signed-off-by: Ramon Fried <ramon.fried@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/Makefile | 1 | ||||
-rw-r--r-- | drivers/smem/Kconfig | 2 | ||||
-rw-r--r-- | drivers/smem/Makefile | 5 | ||||
-rw-r--r-- | drivers/smem/smem-uclass.c | 45 |
4 files changed, 53 insertions, 0 deletions
diff --git a/drivers/Makefile b/drivers/Makefile index 66834c3..276e5ee 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -98,6 +98,7 @@ obj-y += pwm/ obj-y += reset/ obj-y += input/ # SOC specific infrastructure drivers. +obj-y += smem/ obj-y += soc/ obj-$(CONFIG_REMOTEPROC) += remoteproc/ obj-y += thermal/ diff --git a/drivers/smem/Kconfig b/drivers/smem/Kconfig new file mode 100644 index 0000000..64337a8 --- /dev/null +++ b/drivers/smem/Kconfig @@ -0,0 +1,2 @@ +menuconfig SMEM + bool "SMEM (Shared Memory mamanger) support" diff --git a/drivers/smem/Makefile b/drivers/smem/Makefile new file mode 100644 index 0000000..ca55c45 --- /dev/null +++ b/drivers/smem/Makefile @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# Makefile for the U-Boot SMEM interface drivers + +obj-$(CONFIG_SMEM) += smem-uclass.o diff --git a/drivers/smem/smem-uclass.c b/drivers/smem/smem-uclass.c new file mode 100644 index 0000000..ce7bf40 --- /dev/null +++ b/drivers/smem/smem-uclass.c @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2018 Ramon Fried <ramon.fried@gmail.com> + */ + +#include <common.h> +#include <dm.h> +#include <smem.h> + +int smem_alloc(struct udevice *dev, unsigned int host, + unsigned int item, size_t size) +{ + struct smem_ops *ops = smem_get_ops(dev); + + if (!ops->alloc) + return -ENOSYS; + + return ops->alloc(host, item, size); +} + +void *smem_get(struct udevice *dev, unsigned int host, + unsigned int item, size_t *size) +{ + struct smem_ops *ops = smem_get_ops(dev); + + if (!ops->get) + return NULL; + + return ops->get(host, item, size); +} + +int smem_get_free_space(struct udevice *dev, unsigned int host) +{ + struct smem_ops *ops = smem_get_ops(dev); + + if (!ops->get_free_space) + return -ENOSYS; + + return ops->get_free_space(host); +} + +UCLASS_DRIVER(smem) = { + .id = UCLASS_SMEM, + .name = "smem", +}; |