static int asoc_simple_card_dai_init(struct snd_soc_pcm_runtime *rtd) { struct asoc_simple_card_info *info = asoc_simple_get_card_info(rtd); struct snd_soc_dai *codec = rtd->codec_dai; struct snd_soc_dai *cpu = rtd->cpu_dai; unsigned int daifmt = info->daifmt; int ret; ret = __asoc_simple_card_dai_init(codec, &info->codec_dai, daifmt); if (ret < 0) return ret; ret = __asoc_simple_card_dai_init(cpu, &info->cpu_dai, daifmt); if (ret < 0) return ret; return 0; }
static int asoc_simple_card_dai_init(struct snd_soc_pcm_runtime *rtd) { struct simple_card_data *priv = snd_soc_card_get_drvdata(rtd->card); struct snd_soc_dai *codec = rtd->codec_dai; struct snd_soc_dai *cpu = rtd->cpu_dai; struct simple_dai_props *dai_props; int num, ret; num = rtd - rtd->card->rtd; dai_props = &priv->dai_props[num]; ret = __asoc_simple_card_dai_init(codec, &dai_props->codec_dai); if (ret < 0) return ret; ret = __asoc_simple_card_dai_init(cpu, &dai_props->cpu_dai); if (ret < 0) return ret; if (gpio_is_valid(priv->gpio_hp_det)) { snd_soc_card_jack_new(rtd->card, "Headphones", SND_JACK_HEADPHONE, &simple_card_hp_jack, simple_card_hp_jack_pins, ARRAY_SIZE(simple_card_hp_jack_pins)); simple_card_hp_jack_gpio.gpio = priv->gpio_hp_det; simple_card_hp_jack_gpio.invert = priv->gpio_hp_det_invert; snd_soc_jack_add_gpios(&simple_card_hp_jack, 1, &simple_card_hp_jack_gpio); } if (gpio_is_valid(priv->gpio_mic_det)) { snd_soc_card_jack_new(rtd->card, "Mic Jack", SND_JACK_MICROPHONE, &simple_card_mic_jack, simple_card_mic_jack_pins, ARRAY_SIZE(simple_card_mic_jack_pins)); simple_card_mic_jack_gpio.gpio = priv->gpio_mic_det; simple_card_mic_jack_gpio.invert = priv->gpio_mic_det_invert; snd_soc_jack_add_gpios(&simple_card_mic_jack, 1, &simple_card_mic_jack_gpio); } return 0; }