xref: /linux/drivers/remoteproc/imx_rproc.h (revision e637b37a520513a04d00f4add07ec25f357e6c6d)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2017 Pengutronix, Oleksij Rempel <kernel@pengutronix.de>
4  * Copyright 2021 NXP
5  */
6 
7 #ifndef _IMX_RPROC_H
8 #define _IMX_RPROC_H
9 
10 /* address translation table */
11 struct imx_rproc_att {
12 	u32 da;	/* device address (From Cortex M4 view)*/
13 	u32 sa;	/* system bus address */
14 	u32 size; /* size of reg range */
15 	int flags;
16 };
17 
18 /* dcfg flags */
19 #define IMX_RPROC_NEED_SYSTEM_OFF	BIT(0)
20 #define IMX_RPROC_NEED_CLKS		BIT(1)
21 
22 struct imx_rproc_plat_ops {
23 	int (*start)(struct rproc *rproc);
24 	int (*stop)(struct rproc *rproc);
25 	int (*detach)(struct rproc *rproc);
26 	int (*detect_mode)(struct rproc *rproc);
27 };
28 
29 struct imx_rproc_dcfg {
30 	u32				src_reg;
31 	u32				src_mask;
32 	u32				src_start;
33 	u32				src_stop;
34 	u32				gpr_reg;
35 	u32				gpr_wait;
36 	const struct imx_rproc_att	*att;
37 	size_t				att_size;
38 	u32				flags;
39 	const struct imx_rproc_plat_ops	*ops;
40 };
41 
42 #endif /* _IMX_RPROC_H */
43