|
@@ -1104,9 +1104,19 @@ static struct snd_soc_card *sun4i_codec_create_card(struct device *dev)
|
|
|
return card;
|
|
|
};
|
|
|
|
|
|
+static const struct snd_soc_dapm_widget sun6i_codec_card_dapm_widgets[] = {
|
|
|
+ SND_SOC_DAPM_HP("Headphone", NULL),
|
|
|
+ SND_SOC_DAPM_LINE("Line In", NULL),
|
|
|
+ SND_SOC_DAPM_LINE("Line Out", NULL),
|
|
|
+ SND_SOC_DAPM_MIC("Headset Mic", NULL),
|
|
|
+ SND_SOC_DAPM_MIC("Mic", NULL),
|
|
|
+ SND_SOC_DAPM_SPK("Speaker", sun4i_codec_spk_event),
|
|
|
+};
|
|
|
+
|
|
|
static struct snd_soc_card *sun6i_codec_create_card(struct device *dev)
|
|
|
{
|
|
|
struct snd_soc_card *card;
|
|
|
+ int ret;
|
|
|
|
|
|
card = devm_kzalloc(dev, sizeof(*card), GFP_KERNEL);
|
|
|
if (!card)
|
|
@@ -1116,8 +1126,15 @@ static struct snd_soc_card *sun6i_codec_create_card(struct device *dev)
|
|
|
if (!card->dai_link)
|
|
|
return ERR_PTR(-ENOMEM);
|
|
|
|
|
|
- card->dev = dev;
|
|
|
- card->name = "A31 Audio Codec";
|
|
|
+ card->dev = dev;
|
|
|
+ card->name = "A31 Audio Codec";
|
|
|
+ card->dapm_widgets = sun6i_codec_card_dapm_widgets;
|
|
|
+ card->num_dapm_widgets = ARRAY_SIZE(sun6i_codec_card_dapm_widgets);
|
|
|
+ card->fully_routed = true;
|
|
|
+
|
|
|
+ ret = snd_soc_of_parse_audio_routing(card, "allwinner,audio-routing");
|
|
|
+ if (ret)
|
|
|
+ dev_warn(dev, "failed to parse audio-routing: %d\n", ret);
|
|
|
|
|
|
return card;
|
|
|
};
|