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

Commit 70090bbb authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Mark Brown
Browse files

ASoC: Move component->probed check into soc_{remove,probe}_component()



Having the check in a centralized place makes the code a bit cleaner and
shorter.

Note: There is a slight semantic change in this patch. soc_probe_aux_dev() will
no longer return -EBUSY if the AUX dev has already been probed before. This is
fine though since it will simply do nothing in that case and return success.

Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 57bf7726
Loading
Loading
Loading
Loading
+12 −17
Original line number Diff line number Diff line
@@ -1004,6 +1004,9 @@ static int soc_bind_dai_link(struct snd_soc_card *card, int num)

static void soc_remove_component(struct snd_soc_component *component)
{
	if (!component->probed)
		return;

	/* This is a HACK and will be removed soon */
	if (component->codec)
		list_del(&component->codec->card_list);
@@ -1079,22 +1082,19 @@ static void soc_remove_link_components(struct snd_soc_card *card, int num,
	int i;

	/* remove the platform */
	if (platform && platform->component.probed &&
	    platform->component.driver->remove_order == order)
	if (platform && platform->component.driver->remove_order == order)
		soc_remove_component(&platform->component);

	/* remove the CODEC-side CODEC */
	for (i = 0; i < rtd->num_codecs; i++) {
		component = rtd->codec_dais[i]->component;
		if (component->probed &&
		    component->driver->remove_order == order)
		if (component->driver->remove_order == order)
			soc_remove_component(component);
	}

	/* remove any CPU-side CODEC */
	if (cpu_dai) {
		if (cpu_dai->component->probed &&
		    cpu_dai->component->driver->remove_order == order)
		if (cpu_dai->component->driver->remove_order == order)
			soc_remove_component(cpu_dai->component);
	}
}
@@ -1145,6 +1145,9 @@ static int soc_probe_component(struct snd_soc_card *card,
	struct snd_soc_dai *dai;
	int ret;

	if (component->probed)
		return 0;

	component->card = card;
	dapm->card = card;
	soc_set_name_prefix(card, component);
@@ -1306,8 +1309,7 @@ static int soc_probe_link_components(struct snd_soc_card *card, int num,

	/* probe the CPU-side component, if it is a CODEC */
	component = rtd->cpu_dai->component;
	if (!component->probed &&
	    component->driver->probe_order == order) {
	if (component->driver->probe_order == order) {
		ret = soc_probe_component(card, component);
		if (ret < 0)
			return ret;
@@ -1316,8 +1318,7 @@ static int soc_probe_link_components(struct snd_soc_card *card, int num,
	/* probe the CODEC-side components */
	for (i = 0; i < rtd->num_codecs; i++) {
		component = rtd->codec_dais[i]->component;
		if (!component->probed &&
		    component->driver->probe_order == order) {
		if (component->driver->probe_order == order) {
			ret = soc_probe_component(card, component);
			if (ret < 0)
				return ret;
@@ -1325,8 +1326,7 @@ static int soc_probe_link_components(struct snd_soc_card *card, int num,
	}

	/* probe the platform */
	if (!platform->component.probed &&
	    platform->component.driver->probe_order == order) {
	if (platform->component.driver->probe_order == order) {
		ret = soc_probe_component(card, &platform->component);
		if (ret < 0)
			return ret;
@@ -1621,11 +1621,6 @@ static int soc_probe_aux_dev(struct snd_soc_card *card, int num)
	struct snd_soc_aux_dev *aux_dev = &card->aux_dev[num];
	int ret;

	if (rtd->component->probed) {
		dev_err(rtd->dev, "ASoC: codec already probed\n");
		return -EBUSY;
	}

	ret = soc_probe_component(card, rtd->component);
	if (ret < 0)
		return ret;