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

Commit 068147d6 authored by Sudheer Papothi's avatar Sudheer Papothi Committed by Gerrit - the friendly Code Review server
Browse files

ASoC: swr-dmic: Update soundwire mic probe sequence



Avoid notification registration during soundwire dmic device
probe sequence.

Change-Id: I6c489334b555bc0113b98533ac5af0b68ad4e566
Signed-off-by: default avatarSudheer Papothi <spapothi@codeaurora.org>
parent b2ab0d89
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -94,6 +94,9 @@ const char *aif_name_list[] = {
static int swr_dmic_reset(struct swr_device *pdev);
static int swr_dmic_up(struct swr_device *pdev);
static int swr_dmic_down(struct swr_device *pdev);
static int swr_dmic_event_notify(struct notifier_block *block,
				unsigned long val,
				void *data);

static inline int swr_dmic_tx_get_slave_port_type_idx(const char *wname,
				      unsigned int *port_idx)
@@ -324,6 +327,10 @@ static int swr_dmic_codec_probe(struct snd_soc_component *component)

	snd_soc_dapm_sync(dapm);

	swr_dmic->nblock.notifier_call = swr_dmic_event_notify;
	wcd938x_swr_dmic_register_notifier(swr_dmic->supply_component,
					&swr_dmic->nblock, true);

	return 0;
}

@@ -472,6 +479,8 @@ static int swr_dmic_probe(struct swr_device *pdev)
		ret = enable_wcd_codec_supply(swr_dmic, true);
		if (ret) {
			ret = -EPROBE_DEFER;
			swr_dmic->is_wcd_supply = false;
			swr_dmic->wcd_handle = NULL;
			goto err;
		}
		++swr_dmic->is_en_supply;
@@ -516,11 +525,17 @@ static int swr_dmic_probe(struct swr_device *pdev)
			"%s get devnum %d for dev addr %llx failed\n",
			__func__, swr_devnum, pdev->addr);
		ret = -EPROBE_DEFER;
		goto dev_err;

		if (swr_dmic->is_en_supply == 1) {
			enable_wcd_codec_supply(swr_dmic, false);
			--swr_dmic->is_en_supply;
		}
		swr_dmic->is_wcd_supply = false;
		swr_dmic->wcd_handle = NULL;
		goto err;
	}
	pdev->dev_num = swr_devnum;


	swr_dmic->driver = devm_kzalloc(&pdev->dev,
			sizeof(struct snd_soc_component_driver), GFP_KERNEL);
	if (!swr_dmic->driver) {
@@ -586,10 +601,6 @@ static int swr_dmic_probe(struct swr_device *pdev)
			strlen(swr_dmic_name_prefix_of) + 1);
	component->name_prefix = prefix_name;

	swr_dmic->nblock.notifier_call = swr_dmic_event_notify;
	wcd938x_swr_dmic_register_notifier(swr_dmic->supply_component,
					&swr_dmic->nblock, true);

	return 0;

dev_err: