Loading include/sound/soc-dapm.h +2 −1 Original line number Original line Diff line number Diff line Loading @@ -450,7 +450,8 @@ enum snd_soc_dapm_type { snd_soc_dapm_aif_in, /* audio interface input */ snd_soc_dapm_aif_in, /* audio interface input */ snd_soc_dapm_aif_out, /* audio interface output */ snd_soc_dapm_aif_out, /* audio interface output */ snd_soc_dapm_siggen, /* signal generator */ snd_soc_dapm_siggen, /* signal generator */ snd_soc_dapm_dai, /* link to DAI structure */ snd_soc_dapm_dai_in, /* link to DAI structure */ snd_soc_dapm_dai_out, snd_soc_dapm_dai_link, /* link between two DAI structures */ snd_soc_dapm_dai_link, /* link between two DAI structures */ }; }; Loading sound/soc/soc-dapm.c +26 −23 Original line number Original line Diff line number Diff line Loading @@ -55,7 +55,8 @@ static int dapm_up_seq[] = { [snd_soc_dapm_clock_supply] = 1, [snd_soc_dapm_clock_supply] = 1, [snd_soc_dapm_micbias] = 2, [snd_soc_dapm_micbias] = 2, [snd_soc_dapm_dai_link] = 2, [snd_soc_dapm_dai_link] = 2, [snd_soc_dapm_dai] = 3, [snd_soc_dapm_dai_in] = 3, [snd_soc_dapm_dai_out] = 3, [snd_soc_dapm_aif_in] = 3, [snd_soc_dapm_aif_in] = 3, [snd_soc_dapm_aif_out] = 3, [snd_soc_dapm_aif_out] = 3, [snd_soc_dapm_mic] = 4, [snd_soc_dapm_mic] = 4, Loading Loading @@ -92,7 +93,8 @@ static int dapm_down_seq[] = { [snd_soc_dapm_value_mux] = 9, [snd_soc_dapm_value_mux] = 9, [snd_soc_dapm_aif_in] = 10, [snd_soc_dapm_aif_in] = 10, [snd_soc_dapm_aif_out] = 10, [snd_soc_dapm_aif_out] = 10, [snd_soc_dapm_dai] = 10, [snd_soc_dapm_dai_in] = 10, [snd_soc_dapm_dai_out] = 10, [snd_soc_dapm_dai_link] = 11, [snd_soc_dapm_dai_link] = 11, [snd_soc_dapm_clock_supply] = 12, [snd_soc_dapm_clock_supply] = 12, [snd_soc_dapm_regulator_supply] = 12, [snd_soc_dapm_regulator_supply] = 12, Loading Loading @@ -419,7 +421,8 @@ static void dapm_set_path_status(struct snd_soc_dapm_widget *w, case snd_soc_dapm_clock_supply: case snd_soc_dapm_clock_supply: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_out: case snd_soc_dapm_aif_out: case snd_soc_dapm_dai: case snd_soc_dapm_dai_in: case snd_soc_dapm_dai_out: case snd_soc_dapm_hp: case snd_soc_dapm_hp: case snd_soc_dapm_mic: case snd_soc_dapm_mic: case snd_soc_dapm_spk: case snd_soc_dapm_spk: Loading Loading @@ -820,7 +823,7 @@ static int is_connected_output_ep(struct snd_soc_dapm_widget *widget, switch (widget->id) { switch (widget->id) { case snd_soc_dapm_adc: case snd_soc_dapm_adc: case snd_soc_dapm_aif_out: case snd_soc_dapm_aif_out: case snd_soc_dapm_dai: case snd_soc_dapm_dai_out: if (widget->active) { if (widget->active) { widget->outputs = snd_soc_dapm_suspend_check(widget); widget->outputs = snd_soc_dapm_suspend_check(widget); return widget->outputs; return widget->outputs; Loading Loading @@ -916,7 +919,7 @@ static int is_connected_input_ep(struct snd_soc_dapm_widget *widget, switch (widget->id) { switch (widget->id) { case snd_soc_dapm_dac: case snd_soc_dapm_dac: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_in: case snd_soc_dapm_dai: case snd_soc_dapm_dai_in: if (widget->active) { if (widget->active) { widget->inputs = snd_soc_dapm_suspend_check(widget); widget->inputs = snd_soc_dapm_suspend_check(widget); return widget->inputs; return widget->inputs; Loading Loading @@ -1135,16 +1138,6 @@ static int dapm_generic_check_power(struct snd_soc_dapm_widget *w) return out != 0 && in != 0; return out != 0 && in != 0; } } static int dapm_dai_check_power(struct snd_soc_dapm_widget *w) { DAPM_UPDATE_STAT(w, power_checks); if (w->active) return w->active; return dapm_generic_check_power(w); } /* Check to see if an ADC has power */ /* Check to see if an ADC has power */ static int dapm_adc_check_power(struct snd_soc_dapm_widget *w) static int dapm_adc_check_power(struct snd_soc_dapm_widget *w) { { Loading Loading @@ -2318,7 +2311,8 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm, case snd_soc_dapm_clock_supply: case snd_soc_dapm_clock_supply: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_out: case snd_soc_dapm_aif_out: case snd_soc_dapm_dai: case snd_soc_dapm_dai_in: case snd_soc_dapm_dai_out: case snd_soc_dapm_dai_link: case snd_soc_dapm_dai_link: list_add(&path->list, &dapm->card->paths); list_add(&path->list, &dapm->card->paths); list_add(&path->list_sink, &wsink->sources); list_add(&path->list_sink, &wsink->sources); Loading Loading @@ -3129,10 +3123,12 @@ snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm, break; break; case snd_soc_dapm_adc: case snd_soc_dapm_adc: case snd_soc_dapm_aif_out: case snd_soc_dapm_aif_out: case snd_soc_dapm_dai_out: w->power_check = dapm_adc_check_power; w->power_check = dapm_adc_check_power; break; break; case snd_soc_dapm_dac: case snd_soc_dapm_dac: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_in: case snd_soc_dapm_dai_in: w->power_check = dapm_dac_check_power; w->power_check = dapm_dac_check_power; break; break; case snd_soc_dapm_pga: case snd_soc_dapm_pga: Loading @@ -3152,9 +3148,6 @@ snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm, case snd_soc_dapm_clock_supply: case snd_soc_dapm_clock_supply: w->power_check = dapm_supply_check_power; w->power_check = dapm_supply_check_power; break; break; case snd_soc_dapm_dai: w->power_check = dapm_dai_check_power; break; default: default: w->power_check = dapm_always_on_check_power; w->power_check = dapm_always_on_check_power; break; break; Loading Loading @@ -3375,7 +3368,7 @@ int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm, template.reg = SND_SOC_NOPM; template.reg = SND_SOC_NOPM; if (dai->driver->playback.stream_name) { if (dai->driver->playback.stream_name) { template.id = snd_soc_dapm_dai; template.id = snd_soc_dapm_dai_in; template.name = dai->driver->playback.stream_name; template.name = dai->driver->playback.stream_name; template.sname = dai->driver->playback.stream_name; template.sname = dai->driver->playback.stream_name; Loading @@ -3393,7 +3386,7 @@ int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm, } } if (dai->driver->capture.stream_name) { if (dai->driver->capture.stream_name) { template.id = snd_soc_dapm_dai; template.id = snd_soc_dapm_dai_out; template.name = dai->driver->capture.stream_name; template.name = dai->driver->capture.stream_name; template.sname = dai->driver->capture.stream_name; template.sname = dai->driver->capture.stream_name; Loading Loading @@ -3423,8 +3416,13 @@ int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card) /* For each DAI widget... */ /* For each DAI widget... */ list_for_each_entry(dai_w, &card->widgets, list) { list_for_each_entry(dai_w, &card->widgets, list) { if (dai_w->id != snd_soc_dapm_dai) switch (dai_w->id) { case snd_soc_dapm_dai_in: case snd_soc_dapm_dai_out: break; default: continue; continue; } dai = dai_w->priv; dai = dai_w->priv; Loading @@ -3433,8 +3431,13 @@ int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card) if (w->dapm != dai_w->dapm) if (w->dapm != dai_w->dapm) continue; continue; if (w->id == snd_soc_dapm_dai) switch (w->id) { case snd_soc_dapm_dai_in: case snd_soc_dapm_dai_out: continue; continue; default: break; } if (!w->sname) if (!w->sname) continue; continue; Loading sound/soc/soc-pcm.c +10 −3 Original line number Original line Diff line number Diff line Loading @@ -928,8 +928,13 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream, /* Create any new FE <--> BE connections */ /* Create any new FE <--> BE connections */ for (i = 0; i < list->num_widgets; i++) { for (i = 0; i < list->num_widgets; i++) { if (list->widgets[i]->id != snd_soc_dapm_dai) switch (list->widgets[i]->id) { case snd_soc_dapm_dai_in: case snd_soc_dapm_dai_out: break; default: continue; continue; } /* is there a valid BE rtd for this widget */ /* is there a valid BE rtd for this widget */ be = dpcm_get_be(card, list->widgets[i], stream); be = dpcm_get_be(card, list->widgets[i], stream); Loading Loading @@ -2011,9 +2016,11 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) if (cpu_dai->driver->capture.channels_min) if (cpu_dai->driver->capture.channels_min) capture = 1; capture = 1; } else { } else { if (codec_dai->driver->playback.channels_min) if (codec_dai->driver->playback.channels_min && cpu_dai->driver->playback.channels_min) playback = 1; playback = 1; if (codec_dai->driver->capture.channels_min) if (codec_dai->driver->capture.channels_min && cpu_dai->driver->capture.channels_min) capture = 1; capture = 1; } } Loading Loading
include/sound/soc-dapm.h +2 −1 Original line number Original line Diff line number Diff line Loading @@ -450,7 +450,8 @@ enum snd_soc_dapm_type { snd_soc_dapm_aif_in, /* audio interface input */ snd_soc_dapm_aif_in, /* audio interface input */ snd_soc_dapm_aif_out, /* audio interface output */ snd_soc_dapm_aif_out, /* audio interface output */ snd_soc_dapm_siggen, /* signal generator */ snd_soc_dapm_siggen, /* signal generator */ snd_soc_dapm_dai, /* link to DAI structure */ snd_soc_dapm_dai_in, /* link to DAI structure */ snd_soc_dapm_dai_out, snd_soc_dapm_dai_link, /* link between two DAI structures */ snd_soc_dapm_dai_link, /* link between two DAI structures */ }; }; Loading
sound/soc/soc-dapm.c +26 −23 Original line number Original line Diff line number Diff line Loading @@ -55,7 +55,8 @@ static int dapm_up_seq[] = { [snd_soc_dapm_clock_supply] = 1, [snd_soc_dapm_clock_supply] = 1, [snd_soc_dapm_micbias] = 2, [snd_soc_dapm_micbias] = 2, [snd_soc_dapm_dai_link] = 2, [snd_soc_dapm_dai_link] = 2, [snd_soc_dapm_dai] = 3, [snd_soc_dapm_dai_in] = 3, [snd_soc_dapm_dai_out] = 3, [snd_soc_dapm_aif_in] = 3, [snd_soc_dapm_aif_in] = 3, [snd_soc_dapm_aif_out] = 3, [snd_soc_dapm_aif_out] = 3, [snd_soc_dapm_mic] = 4, [snd_soc_dapm_mic] = 4, Loading Loading @@ -92,7 +93,8 @@ static int dapm_down_seq[] = { [snd_soc_dapm_value_mux] = 9, [snd_soc_dapm_value_mux] = 9, [snd_soc_dapm_aif_in] = 10, [snd_soc_dapm_aif_in] = 10, [snd_soc_dapm_aif_out] = 10, [snd_soc_dapm_aif_out] = 10, [snd_soc_dapm_dai] = 10, [snd_soc_dapm_dai_in] = 10, [snd_soc_dapm_dai_out] = 10, [snd_soc_dapm_dai_link] = 11, [snd_soc_dapm_dai_link] = 11, [snd_soc_dapm_clock_supply] = 12, [snd_soc_dapm_clock_supply] = 12, [snd_soc_dapm_regulator_supply] = 12, [snd_soc_dapm_regulator_supply] = 12, Loading Loading @@ -419,7 +421,8 @@ static void dapm_set_path_status(struct snd_soc_dapm_widget *w, case snd_soc_dapm_clock_supply: case snd_soc_dapm_clock_supply: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_out: case snd_soc_dapm_aif_out: case snd_soc_dapm_dai: case snd_soc_dapm_dai_in: case snd_soc_dapm_dai_out: case snd_soc_dapm_hp: case snd_soc_dapm_hp: case snd_soc_dapm_mic: case snd_soc_dapm_mic: case snd_soc_dapm_spk: case snd_soc_dapm_spk: Loading Loading @@ -820,7 +823,7 @@ static int is_connected_output_ep(struct snd_soc_dapm_widget *widget, switch (widget->id) { switch (widget->id) { case snd_soc_dapm_adc: case snd_soc_dapm_adc: case snd_soc_dapm_aif_out: case snd_soc_dapm_aif_out: case snd_soc_dapm_dai: case snd_soc_dapm_dai_out: if (widget->active) { if (widget->active) { widget->outputs = snd_soc_dapm_suspend_check(widget); widget->outputs = snd_soc_dapm_suspend_check(widget); return widget->outputs; return widget->outputs; Loading Loading @@ -916,7 +919,7 @@ static int is_connected_input_ep(struct snd_soc_dapm_widget *widget, switch (widget->id) { switch (widget->id) { case snd_soc_dapm_dac: case snd_soc_dapm_dac: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_in: case snd_soc_dapm_dai: case snd_soc_dapm_dai_in: if (widget->active) { if (widget->active) { widget->inputs = snd_soc_dapm_suspend_check(widget); widget->inputs = snd_soc_dapm_suspend_check(widget); return widget->inputs; return widget->inputs; Loading Loading @@ -1135,16 +1138,6 @@ static int dapm_generic_check_power(struct snd_soc_dapm_widget *w) return out != 0 && in != 0; return out != 0 && in != 0; } } static int dapm_dai_check_power(struct snd_soc_dapm_widget *w) { DAPM_UPDATE_STAT(w, power_checks); if (w->active) return w->active; return dapm_generic_check_power(w); } /* Check to see if an ADC has power */ /* Check to see if an ADC has power */ static int dapm_adc_check_power(struct snd_soc_dapm_widget *w) static int dapm_adc_check_power(struct snd_soc_dapm_widget *w) { { Loading Loading @@ -2318,7 +2311,8 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm, case snd_soc_dapm_clock_supply: case snd_soc_dapm_clock_supply: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_out: case snd_soc_dapm_aif_out: case snd_soc_dapm_dai: case snd_soc_dapm_dai_in: case snd_soc_dapm_dai_out: case snd_soc_dapm_dai_link: case snd_soc_dapm_dai_link: list_add(&path->list, &dapm->card->paths); list_add(&path->list, &dapm->card->paths); list_add(&path->list_sink, &wsink->sources); list_add(&path->list_sink, &wsink->sources); Loading Loading @@ -3129,10 +3123,12 @@ snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm, break; break; case snd_soc_dapm_adc: case snd_soc_dapm_adc: case snd_soc_dapm_aif_out: case snd_soc_dapm_aif_out: case snd_soc_dapm_dai_out: w->power_check = dapm_adc_check_power; w->power_check = dapm_adc_check_power; break; break; case snd_soc_dapm_dac: case snd_soc_dapm_dac: case snd_soc_dapm_aif_in: case snd_soc_dapm_aif_in: case snd_soc_dapm_dai_in: w->power_check = dapm_dac_check_power; w->power_check = dapm_dac_check_power; break; break; case snd_soc_dapm_pga: case snd_soc_dapm_pga: Loading @@ -3152,9 +3148,6 @@ snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm, case snd_soc_dapm_clock_supply: case snd_soc_dapm_clock_supply: w->power_check = dapm_supply_check_power; w->power_check = dapm_supply_check_power; break; break; case snd_soc_dapm_dai: w->power_check = dapm_dai_check_power; break; default: default: w->power_check = dapm_always_on_check_power; w->power_check = dapm_always_on_check_power; break; break; Loading Loading @@ -3375,7 +3368,7 @@ int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm, template.reg = SND_SOC_NOPM; template.reg = SND_SOC_NOPM; if (dai->driver->playback.stream_name) { if (dai->driver->playback.stream_name) { template.id = snd_soc_dapm_dai; template.id = snd_soc_dapm_dai_in; template.name = dai->driver->playback.stream_name; template.name = dai->driver->playback.stream_name; template.sname = dai->driver->playback.stream_name; template.sname = dai->driver->playback.stream_name; Loading @@ -3393,7 +3386,7 @@ int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm, } } if (dai->driver->capture.stream_name) { if (dai->driver->capture.stream_name) { template.id = snd_soc_dapm_dai; template.id = snd_soc_dapm_dai_out; template.name = dai->driver->capture.stream_name; template.name = dai->driver->capture.stream_name; template.sname = dai->driver->capture.stream_name; template.sname = dai->driver->capture.stream_name; Loading Loading @@ -3423,8 +3416,13 @@ int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card) /* For each DAI widget... */ /* For each DAI widget... */ list_for_each_entry(dai_w, &card->widgets, list) { list_for_each_entry(dai_w, &card->widgets, list) { if (dai_w->id != snd_soc_dapm_dai) switch (dai_w->id) { case snd_soc_dapm_dai_in: case snd_soc_dapm_dai_out: break; default: continue; continue; } dai = dai_w->priv; dai = dai_w->priv; Loading @@ -3433,8 +3431,13 @@ int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card) if (w->dapm != dai_w->dapm) if (w->dapm != dai_w->dapm) continue; continue; if (w->id == snd_soc_dapm_dai) switch (w->id) { case snd_soc_dapm_dai_in: case snd_soc_dapm_dai_out: continue; continue; default: break; } if (!w->sname) if (!w->sname) continue; continue; Loading
sound/soc/soc-pcm.c +10 −3 Original line number Original line Diff line number Diff line Loading @@ -928,8 +928,13 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream, /* Create any new FE <--> BE connections */ /* Create any new FE <--> BE connections */ for (i = 0; i < list->num_widgets; i++) { for (i = 0; i < list->num_widgets; i++) { if (list->widgets[i]->id != snd_soc_dapm_dai) switch (list->widgets[i]->id) { case snd_soc_dapm_dai_in: case snd_soc_dapm_dai_out: break; default: continue; continue; } /* is there a valid BE rtd for this widget */ /* is there a valid BE rtd for this widget */ be = dpcm_get_be(card, list->widgets[i], stream); be = dpcm_get_be(card, list->widgets[i], stream); Loading Loading @@ -2011,9 +2016,11 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) if (cpu_dai->driver->capture.channels_min) if (cpu_dai->driver->capture.channels_min) capture = 1; capture = 1; } else { } else { if (codec_dai->driver->playback.channels_min) if (codec_dai->driver->playback.channels_min && cpu_dai->driver->playback.channels_min) playback = 1; playback = 1; if (codec_dai->driver->capture.channels_min) if (codec_dai->driver->capture.channels_min && cpu_dai->driver->capture.channels_min) capture = 1; capture = 1; } } Loading