| /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ |
| /* |
| * Copyright (c) 2019 Amlogic, Inc. All rights reserved. |
| */ |
| |
| #ifndef __LINUX_VMEM_H |
| #define __LINUX_VMEM_H |
| |
| struct vmem_controller; |
| struct vmem_device; |
| |
| struct vmem_controller { |
| struct device dev; |
| struct list_head list; |
| struct list_head device_list; |
| int bus_num; |
| int (*setup)(struct vmem_device *vmemdev); |
| int (*cleanup)(struct vmem_device *vmemdev); |
| }; |
| |
| struct vmem_device { |
| struct device dev; |
| struct vmem_controller *vmemctlr; |
| struct list_head list; |
| u8 dev_num; |
| u8 *mem; |
| int size; |
| int (*cmd_notify)(u8 cmd_val, int offset, int size); |
| int (*data_notify)(u8 cmd_val, int offset, int size); |
| }; |
| |
| struct vmem_controller *vmem_get_controller(int bus_num); |
| struct vmem_controller * |
| vmem_create_controller(struct device *dev, int size); |
| void vmem_destroy_controller(struct vmem_controller *vmemctlr); |
| |
| struct vmem_device * |
| vmem_get_device(struct vmem_controller *vmemctlr, int dev_num); |
| struct vmem_device * |
| vmem_create_device(struct vmem_controller *vmemctlr, int dev_num, int mem_size); |
| void vmem_destroy_device(struct vmem_device *vmemdev); |
| |
| int vmem_setup(struct vmem_device *vmemdev); |
| int vmem_cleanup(struct vmem_device *vmemdev); |
| |
| #endif /* __LINUX_VMEM_H */ |