We can Run/Stall the DSP via audio block control bits found in audiomix.
Implement this functionality using the reset controller and use assert
for Stall and deassert for Run.

Signed-off-by: Daniel Baluta <daniel.bal...@nxp.com>
---
 drivers/reset/reset-imx8mp-audiomix.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/reset/reset-imx8mp-audiomix.c 
b/drivers/reset/reset-imx8mp-audiomix.c
index 8cc0a6b58cbc..ee56d52a7278 100644
--- a/drivers/reset/reset-imx8mp-audiomix.c
+++ b/drivers/reset/reset-imx8mp-audiomix.c
@@ -15,10 +15,14 @@
 #define IMX8MP_AUDIOMIX_EARC_RESET_MASK                0x1
 #define IMX8MP_AUDIOMIX_EARC_PHY_RESET_MASK    0x2
 
+#define IMX8MP_AUDIOMIX_DSP_OFFSET             0x108
+#define IMX8MP_AUDIOMIX_DSP_RUNSTALL_MASK      0x20
+
 #define IMX8MP_AUDIOMIX_EARC           0
 #define IMX8MP_AUDIOMIX_EARC_PHY       1
+#define IMX8MP_AUDIOMIX_DSP            2
 
-#define IMX8MP_AUDIOMIX_RESET_NUM      2
+#define IMX8MP_AUDIOMIX_RESET_NUM      3
 
 struct imx8mp_reset_map {
        unsigned int offset;
@@ -37,7 +41,11 @@ static const struct imx8mp_reset_map 
reset_map[IMX8MP_AUDIOMIX_RESET_NUM] = {
                .mask   = IMX8MP_AUDIOMIX_EARC_PHY_RESET_MASK,
                .active_low = true,
        },
-
+       [IMX8MP_AUDIOMIX_DSP] = {
+               .offset = IMX8MP_AUDIOMIX_DSP_OFFSET,
+               .mask   = IMX8MP_AUDIOMIX_DSP_RUNSTALL_MASK,
+               .active_low = false,
+       },
 };
 
 struct imx8mp_audiomix_reset {
-- 
2.25.1


Reply via email to