From: Daniel Baluta <daniel.baluta@xxxxxxx>
There are two types of clocks:
* DSP IP clocks
* DAI clocks
This clocks are necessary in order to power up DSP and DAIs.
We choose to enable DAI clocks here because of the way i.MX8/i.MX8X
design handles resources (including clocks).
All clocks are managed by a separate core (named SCU) which communicates
with Linux managed ARM core via a well known API.
We parse and enable the clocks in probe function and disable them in
remove function.
Future patches will introduce Power Management support so that we
disable clocks while DSP is not used or system enters power save.
Signed-off-by: Daniel Baluta <daniel.baluta@xxxxxxx>
---
sound/soc/sof/imx/imx-common.c | 77 ++++++++++++++++++++++++++++++++++
sound/soc/sof/imx/imx-common.h | 16 +++++++
sound/soc/sof/imx/imx8.c | 32 ++++++++++++++
sound/soc/sof/imx/imx8m.c | 33 +++++++++++++++
4 files changed, 158 insertions(+)
diff --git a/sound/soc/sof/imx/imx8m.c b/sound/soc/sof/imx/imx8m.c
index 30624fafc632..482c25ab15ce 100644
--- a/sound/soc/sof/imx/imx8m.c
+++ b/sound/soc/sof/imx/imx8m.c
@@ -23,6 +23,20 @@
#define MBOX_OFFSET 0x800000
#define MBOX_SIZE 0x1000
+#define IMX8M_DSP_CLK_NUM 3
+static const char *imx8m_dsp_clks_names[IMX8M_DSP_CLK_NUM] = {