| /* |
| * include/linux/amlogic/vmem.h |
| * |
| * Copyright (C) 2017 Amlogic, Inc. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| * more details. |
| * |
| */ |
| |
| #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 */ |