summaryrefslogtreecommitdiff
path: root/drivers/smem/smem-uclass.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/smem/smem-uclass.c')
-rw-r--r--drivers/smem/smem-uclass.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/drivers/smem/smem-uclass.c b/drivers/smem/smem-uclass.c
new file mode 100644
index 00000000000..ce7bf40656e
--- /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",
+};