| /* SPDX-License-Identifier: GPL-2.0-or-later */ | 
 | /* | 
 |  * SLIM core rproc driver header | 
 |  * | 
 |  * Copyright (C) 2016 STMicroelectronics | 
 |  * | 
 |  * Author: Peter Griffin <peter.griffin@linaro.org> | 
 |  */ | 
 | #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 |