mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-27 07:01:24 +00:00
7b384eccc7
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>
45 lines
846 B
C
45 lines
846 B
C
// 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",
|
|
};
|