Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56f1275b authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'asoc/fix/core' into asoc-linus

parents 97e0002a 4616274d
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -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 */
};
};


+26 −23
Original line number Original line Diff line number Diff line
@@ -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,
@@ -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,
@@ -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:
@@ -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;
@@ -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;
@@ -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)
{
{
@@ -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);
@@ -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:
@@ -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;
@@ -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;


@@ -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;


@@ -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;


@@ -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;
+10 −3
Original line number Original line Diff line number Diff line
@@ -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);
@@ -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;
	}
	}