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