mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-23 22:34:21 +08:00
ASoC: mxs-sgtl5000: add audio-routing support
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>
This commit is contained in:
parent
4fbd8d194f
commit
949293d45d
@ -1,10 +1,31 @@
|
|||||||
* Freescale MXS audio complex with SGTL5000 codec
|
* Freescale MXS audio complex with SGTL5000 codec
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "fsl,mxs-audio-sgtl5000"
|
- compatible : "fsl,mxs-audio-sgtl5000"
|
||||||
- model: The user-visible name of this sound complex
|
- model : The user-visible name of this sound complex
|
||||||
- saif-controllers: The phandle list of the MXS SAIF controller
|
- saif-controllers : The phandle list of the MXS SAIF controller
|
||||||
- audio-codec: The phandle of the SGTL5000 audio codec
|
- 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:
|
Example:
|
||||||
|
|
||||||
@ -14,4 +35,8 @@ sound {
|
|||||||
model = "imx28-evk-sgtl5000";
|
model = "imx28-evk-sgtl5000";
|
||||||
saif-controllers = <&saif0 &saif1>;
|
saif-controllers = <&saif0 &saif1>;
|
||||||
audio-codec = <&sgtl5000>;
|
audio-codec = <&sgtl5000>;
|
||||||
|
audio-routing =
|
||||||
|
"MIC_IN", "Mic Jack",
|
||||||
|
"Mic Jack", "Mic Bias",
|
||||||
|
"Headphone Jack", "HP_OUT";
|
||||||
};
|
};
|
||||||
|
@ -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 = {
|
static struct snd_soc_card mxs_sgtl5000 = {
|
||||||
.name = "mxs_sgtl5000",
|
.name = "mxs_sgtl5000",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
@ -141,6 +149,18 @@ static int mxs_sgtl5000_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
card->dev = &pdev->dev;
|
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);
|
ret = devm_snd_soc_register_card(&pdev->dev, card);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n",
|
dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user