mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-17 17:47:28 +00:00

DSP on i.MX8MP doesn't have a direct reset line so according to hardware design team in order to handle assert/deassert/reset functionality we need to use a combination of control bits from two modules. Audio block control module for Run/Stall control of the DSP and DAP module in order to do software reset. In a first step, for i.MX8MP we are switching on using the reset controller API to handle the DSP Run/Stall bits i.MX8MP. This comes with the advantage of offering a better probe ordering and a more natural way of abstracting the Audio block control bits. Reviewed-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com> Acked-by: Philipp Zabel <p.zabel@pengutronix.de> Link: https://lore.kernel.org/r/20250311085812.1296243-9-daniel.baluta@nxp.com Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
48 lines
996 B
C
48 lines
996 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2017 Pengutronix, Oleksij Rempel <kernel@pengutronix.de>
|
|
* Copyright 2021 NXP
|
|
*/
|
|
|
|
#ifndef _IMX_RPROC_H
|
|
#define _IMX_RPROC_H
|
|
|
|
/* address translation table */
|
|
struct imx_rproc_att {
|
|
u32 da; /* device address (From Cortex M4 view)*/
|
|
u32 sa; /* system bus address */
|
|
u32 size; /* size of reg range */
|
|
int flags;
|
|
};
|
|
|
|
/* Remote core start/stop method */
|
|
enum imx_rproc_method {
|
|
IMX_RPROC_NONE,
|
|
/* Through syscon regmap */
|
|
IMX_RPROC_MMIO,
|
|
/* Through ARM SMCCC */
|
|
IMX_RPROC_SMC,
|
|
/* Through System Control Unit API */
|
|
IMX_RPROC_SCU_API,
|
|
/* Through Reset Controller API */
|
|
IMX_RPROC_RESET_CONTROLLER,
|
|
};
|
|
|
|
/* dcfg flags */
|
|
#define IMX_RPROC_NEED_SYSTEM_OFF BIT(0)
|
|
|
|
struct imx_rproc_dcfg {
|
|
u32 src_reg;
|
|
u32 src_mask;
|
|
u32 src_start;
|
|
u32 src_stop;
|
|
u32 gpr_reg;
|
|
u32 gpr_wait;
|
|
const struct imx_rproc_att *att;
|
|
size_t att_size;
|
|
enum imx_rproc_method method;
|
|
u32 flags;
|
|
};
|
|
|
|
#endif /* _IMX_RPROC_H */
|