1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * Copyright (c) 2018 Ramon Fried <ramon.fried@gmail.com> 4 */ 5 6 #include <common.h> 7 #include <dm.h> 8 #include <smem.h> 9 10 int smem_alloc(struct udevice *dev, unsigned int host, 11 unsigned int item, size_t size) 12 { 13 struct smem_ops *ops = smem_get_ops(dev); 14 15 if (!ops->alloc) 16 return -ENOSYS; 17 18 return ops->alloc(host, item, size); 19 } 20 21 void *smem_get(struct udevice *dev, unsigned int host, 22 unsigned int item, size_t *size) 23 { 24 struct smem_ops *ops = smem_get_ops(dev); 25 26 if (!ops->get) 27 return NULL; 28 29 return ops->get(host, item, size); 30 } 31 32 int smem_get_free_space(struct udevice *dev, unsigned int host) 33 { 34 struct smem_ops *ops = smem_get_ops(dev); 35 36 if (!ops->get_free_space) 37 return -ENOSYS; 38 39 return ops->get_free_space(host); 40 } 41 42 UCLASS_DRIVER(smem) = { 43 .id = UCLASS_SMEM, 44 .name = "smem", 45 }; 46