| /* |
| * SLIM core rproc driver header |
| * |
| * Copyright (C) 2016 STMicroelectronics |
| * |
| * Author: Peter Griffin <peter.griffin@linaro.org> |
| * |
| * 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. |
| */ |
| #ifndef _ST_REMOTEPROC_SLIM_H |
| #define _ST_REMOTEPROC_SLIM_H |
| |
| #define ST_SLIM_MEM_MAX 2 |
| #define ST_SLIM_MAX_CLK 4 |
| |
| enum { |
| ST_SLIM_DMEM, |
| ST_SLIM_IMEM, |
| }; |
| |
| /** |
| * struct st_slim_mem - slim internal memory structure |
| * @cpu_addr: MPU virtual address of the memory region |
| * @bus_addr: Bus address used to access the memory region |
| * @size: Size of the memory region |
| */ |
| struct st_slim_mem { |
| void __iomem *cpu_addr; |
| phys_addr_t bus_addr; |
| size_t size; |
| }; |
| |
| /** |
| * struct st_slim_rproc - SLIM slim core |
| * @rproc: rproc handle |
| * @mem: slim memory information |
| * @slimcore: slim slimcore regs |
| * @peri: slim peripheral regs |
| * @clks: slim clocks |
| */ |
| struct st_slim_rproc { |
| struct rproc *rproc; |
| struct st_slim_mem mem[ST_SLIM_MEM_MAX]; |
| void __iomem *slimcore; |
| void __iomem *peri; |
| |
| /* st_slim_rproc private */ |
| struct clk *clks[ST_SLIM_MAX_CLK]; |
| }; |
| |
| struct st_slim_rproc *st_slim_rproc_alloc(struct platform_device *pdev, |
| char *fw_name); |
| void st_slim_rproc_put(struct st_slim_rproc *slim_rproc); |
| |
| #endif |