1/* 2 * SLIM core rproc driver header 3 * 4 * Copyright (C) 2016 STMicroelectronics 5 * 6 * Author: Peter Griffin <peter.griffin@linaro.org> 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 */ 13#ifndef _ST_REMOTEPROC_SLIM_H 14#define _ST_REMOTEPROC_SLIM_H 15 16#define ST_SLIM_MEM_MAX 2 17#define ST_SLIM_MAX_CLK 4 18 19enum { 20 ST_SLIM_DMEM, 21 ST_SLIM_IMEM, 22}; 23 24/** 25 * struct st_slim_mem - slim internal memory structure 26 * @cpu_addr: MPU virtual address of the memory region 27 * @bus_addr: Bus address used to access the memory region 28 * @size: Size of the memory region 29 */ 30struct st_slim_mem { 31 void __iomem *cpu_addr; 32 phys_addr_t bus_addr; 33 size_t size; 34}; 35 36/** 37 * struct st_slim_rproc - SLIM slim core 38 * @rproc: rproc handle 39 * @mem: slim memory information 40 * @slimcore: slim slimcore regs 41 * @peri: slim peripheral regs 42 * @clks: slim clocks 43 */ 44struct st_slim_rproc { 45 struct rproc *rproc; 46 struct st_slim_mem mem[ST_SLIM_MEM_MAX]; 47 void __iomem *slimcore; 48 void __iomem *peri; 49 50 /* st_slim_rproc private */ 51 struct clk *clks[ST_SLIM_MAX_CLK]; 52}; 53 54struct st_slim_rproc *st_slim_rproc_alloc(struct platform_device *pdev, 55 char *fw_name); 56void st_slim_rproc_put(struct st_slim_rproc *slim_rproc); 57 58#endif 59