|  | /* 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 |