Skip to content

Commit

Permalink
ASoC: mxs-sgtl5000: add audio-routing support
Browse files Browse the repository at this point in the history
Add dapm_widgets to machine-driver (from imx-sgtl5000).
If the "audio-routing"-property is present at probing the dapm-widgets
getting linked to the card.

Signed-off-by: Christian Fischer <fischerc@swissphone.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Christian Fischer authored and Mark Brown committed Jan 12, 2018
1 parent 4fbd8d1 commit 949293d
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 4 deletions.
33 changes: 29 additions & 4 deletions Documentation/devicetree/bindings/sound/mxs-audio-sgtl5000.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,31 @@
* Freescale MXS audio complex with SGTL5000 codec

Required properties:
- compatible: "fsl,mxs-audio-sgtl5000"
- model: The user-visible name of this sound complex
- saif-controllers: The phandle list of the MXS SAIF controller
- audio-codec: The phandle of the SGTL5000 audio codec
- compatible : "fsl,mxs-audio-sgtl5000"
- model : The user-visible name of this sound complex
- saif-controllers : The phandle list of the MXS SAIF controller
- audio-codec : The phandle of the SGTL5000 audio codec
- audio-routing : A list of the connections between audio components.
Each entry is a pair of strings, the first being the
connection's sink, the second being the connection's
source. Valid names could be power supplies, SGTL5000
pins, and the jacks on the board:

Power supplies:
* Mic Bias

SGTL5000 pins:
* MIC_IN
* LINE_IN
* HP_OUT
* LINE_OUT

Board connectors:
* Mic Jack
* Line In Jack
* Headphone Jack
* Line Out Jack
* Ext Spk

Example:

Expand All @@ -14,4 +35,8 @@ sound {
model = "imx28-evk-sgtl5000";
saif-controllers = <&saif0 &saif1>;
audio-codec = <&sgtl5000>;
audio-routing =
"MIC_IN", "Mic Jack",
"Mic Jack", "Mic Bias",
"Headphone Jack", "HP_OUT";
};
20 changes: 20 additions & 0 deletions sound/soc/mxs/mxs-sgtl5000.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,14 @@ static struct snd_soc_dai_link mxs_sgtl5000_dai[] = {
},
};

static const struct snd_soc_dapm_widget mxs_sgtl5000_dapm_widgets[] = {
SND_SOC_DAPM_MIC("Mic Jack", NULL),
SND_SOC_DAPM_LINE("Line In Jack", NULL),
SND_SOC_DAPM_HP("Headphone Jack", NULL),
SND_SOC_DAPM_SPK("Line Out Jack", NULL),
SND_SOC_DAPM_SPK("Ext Spk", NULL),
};

static struct snd_soc_card mxs_sgtl5000 = {
.name = "mxs_sgtl5000",
.owner = THIS_MODULE,
Expand Down Expand Up @@ -141,6 +149,18 @@ static int mxs_sgtl5000_probe(struct platform_device *pdev)

card->dev = &pdev->dev;

if (of_find_property(np, "audio-routing", NULL)) {
card->dapm_widgets = mxs_sgtl5000_dapm_widgets;
card->num_dapm_widgets = ARRAY_SIZE(mxs_sgtl5000_dapm_widgets);

ret = snd_soc_of_parse_audio_routing(card, "audio-routing");
if (ret) {
dev_err(&pdev->dev, "failed to parse audio-routing (%d)\n",
ret);
return ret;
}
}

ret = devm_snd_soc_register_card(&pdev->dev, card);
if (ret) {
dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n",
Expand Down

0 comments on commit 949293d

Please sign in to comment.