ASoC: cs35l45: Connect DSP to the monitoring signals
authorVlad Karpovich <vkarpovi@opensource.cirrus.com>
Thu, 31 Aug 2023 16:20:41 +0000 (11:20 -0500)
committerMark Brown <broonie@kernel.org>
Mon, 11 Sep 2023 00:30:04 +0000 (01:30 +0100)
Link VMON, IMON, TEMPMON, VDD_BSTMON and VDD_BATTMON
to DSP1. The CSPL firmware uses them for the speaker calibration
and monitoring.

Signed-off-by: Vlad Karpovich <vkarpovi@opensource.cirrus.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Acked-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230831162042.471801-3-vkarpovi@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs35l45.c
sound/soc/codecs/cs35l45.h

index fd30cf94dd73c0334784f23b7c45be7fd7df9dcc..52d58b61372e914c6fb9e1b33e3e396958604d81 100644 (file)
@@ -433,17 +433,25 @@ static const struct snd_soc_dapm_widget cs35l45_dapm_widgets[] = {
 
        SND_SOC_DAPM_SIGGEN("VMON_SRC"),
        SND_SOC_DAPM_SIGGEN("IMON_SRC"),
+       SND_SOC_DAPM_SIGGEN("TEMPMON_SRC"),
        SND_SOC_DAPM_SIGGEN("VDD_BATTMON_SRC"),
        SND_SOC_DAPM_SIGGEN("VDD_BSTMON_SRC"),
        SND_SOC_DAPM_SIGGEN("ERR_VOL"),
        SND_SOC_DAPM_SIGGEN("AMP_INTP"),
        SND_SOC_DAPM_SIGGEN("IL_TARGET"),
-       SND_SOC_DAPM_ADC("VMON", NULL, CS35L45_BLOCK_ENABLES, CS35L45_VMON_EN_SHIFT, 0),
-       SND_SOC_DAPM_ADC("IMON", NULL, CS35L45_BLOCK_ENABLES, CS35L45_IMON_EN_SHIFT, 0),
-       SND_SOC_DAPM_ADC("VDD_BATTMON", NULL, CS35L45_BLOCK_ENABLES,
-                        CS35L45_VDD_BATTMON_EN_SHIFT, 0),
-       SND_SOC_DAPM_ADC("VDD_BSTMON", NULL, CS35L45_BLOCK_ENABLES,
-                        CS35L45_VDD_BSTMON_EN_SHIFT, 0),
+
+       SND_SOC_DAPM_SUPPLY("VMON_EN", CS35L45_BLOCK_ENABLES, CS35L45_VMON_EN_SHIFT, 0, NULL, 0),
+       SND_SOC_DAPM_SUPPLY("IMON_EN", CS35L45_BLOCK_ENABLES, CS35L45_IMON_EN_SHIFT, 0, NULL, 0),
+       SND_SOC_DAPM_SUPPLY("TEMPMON_EN", CS35L45_BLOCK_ENABLES, CS35L45_TEMPMON_EN_SHIFT, 0, NULL, 0),
+       SND_SOC_DAPM_SUPPLY("VDD_BATTMON_EN", CS35L45_BLOCK_ENABLES, CS35L45_VDD_BATTMON_EN_SHIFT, 0, NULL, 0),
+       SND_SOC_DAPM_SUPPLY("VDD_BSTMON_EN", CS35L45_BLOCK_ENABLES, CS35L45_VDD_BSTMON_EN_SHIFT, 0, NULL, 0),
+
+       SND_SOC_DAPM_ADC("VMON", NULL, SND_SOC_NOPM, 0, 0),
+       SND_SOC_DAPM_ADC("IMON", NULL, SND_SOC_NOPM, 0, 0),
+       SND_SOC_DAPM_ADC("TEMPMON", NULL, SND_SOC_NOPM, 0, 0),
+       SND_SOC_DAPM_ADC("VDD_BATTMON", NULL, SND_SOC_NOPM, 0, 0),
+       SND_SOC_DAPM_ADC("VDD_BSTMON", NULL, SND_SOC_NOPM, 0, 0),
+
 
        SND_SOC_DAPM_AIF_IN("ASP_RX1", NULL, 0, CS35L45_ASP_ENABLES1, CS35L45_ASP_RX1_EN_SHIFT, 0),
        SND_SOC_DAPM_AIF_IN("ASP_RX2", NULL, 1, CS35L45_ASP_ENABLES1, CS35L45_ASP_RX2_EN_SHIFT, 0),
@@ -503,9 +511,16 @@ static const struct snd_soc_dapm_route cs35l45_dapm_routes[] = {
        /* Feedback */
        { "VMON", NULL, "VMON_SRC" },
        { "IMON", NULL, "IMON_SRC" },
+       { "TEMPMON", NULL, "TEMPMON_SRC" },
        { "VDD_BATTMON", NULL, "VDD_BATTMON_SRC" },
        { "VDD_BSTMON", NULL, "VDD_BSTMON_SRC" },
 
+       { "VMON", NULL, "VMON_EN" },
+       { "IMON", NULL, "IMON_EN" },
+       { "TEMPMON", NULL, "TEMPMON_EN" },
+       { "VDD_BATTMON", NULL, "VDD_BATTMON_EN" },
+       { "VDD_BSTMON", NULL, "VDD_BSTMON_EN" },
+
        { "Capture", NULL, "ASP_TX1"},
        { "Capture", NULL, "ASP_TX2"},
        { "Capture", NULL, "ASP_TX3"},
@@ -560,6 +575,12 @@ static const struct snd_soc_dapm_route cs35l45_dapm_routes[] = {
        {"DSP1", NULL, "DSP_RX7 Source"},
        {"DSP1", NULL, "DSP_RX8 Source"},
 
+       {"DSP1", NULL, "VMON_EN"},
+       {"DSP1", NULL, "IMON_EN"},
+       {"DSP1", NULL, "VDD_BATTMON_EN"},
+       {"DSP1", NULL, "VDD_BSTMON_EN"},
+       {"DSP1", NULL, "TEMPMON_EN"},
+
        {"DSP1 Preload", NULL, "DSP1 Preloader"},
        {"DSP1", NULL, "DSP1 Preloader"},
 
index 16857321d945ceead57bee3245c66e4f2975053c..e2ebcf58d7e03f4e1603e5a88d47bbb924e5dff1 100644 (file)
 /* BLOCK_ENABLES */
 #define CS35L45_IMON_EN_SHIFT                  13
 #define CS35L45_VMON_EN_SHIFT                  12
+#define CS35L45_TEMPMON_EN_SHIFT               10
 #define CS35L45_VDD_BSTMON_EN_SHIFT            9
 #define CS35L45_VDD_BATTMON_EN_SHIFT           8
 #define CS35L45_BST_EN_SHIFT                   4