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

Commit aaf3be5b authored by Simmi Pateriya's avatar Simmi Pateriya
Browse files

ASoc: wcd9335: update sequence for afe config and online status



When online status is updated as soon as codec is reset after ssr,
afe port start for sva case may fail. Update the sequence to handle
this scenario.

Signed-off-by: default avatarSimmi Pateriya <simmip@codeaurora.org>
Change-Id: Ifd71df1ca2e5ac88ae952dd191374c6dbecac848
parent 90c540cd
Loading
Loading
Loading
Loading
+10 −11
Original line number Diff line number Diff line
@@ -9745,10 +9745,19 @@ static int tasha_post_reset_cb(struct wcd9xxx *wcd9xxx)
	wcd9xxx_set_power_state(tasha->wcd9xxx,
				WCD_REGION_POWER_COLLAPSE_REMOVE,
				WCD9XXX_DIG_CORE_REGION_1);
	snd_soc_card_change_online_state(codec->component.card, 1);

	mutex_lock(&codec->mutex);

	tasha_slimbus_slave_port_cfg.slave_dev_intfdev_la =
		control->slim_slave->laddr;
	tasha_slimbus_slave_port_cfg.slave_dev_pgd_la =
		control->slim->laddr;
	tasha_init_slim_slave_cfg(codec);
	if (tasha->machine_codec_event_cb)
		tasha->machine_codec_event_cb(codec,
				WCD9335_CODEC_EVENT_CODEC_UP);
	snd_soc_card_change_online_state(codec->component.card, 1);

	/* Class-H Init*/
	wcd_clsh_init(&tasha->clsh_d);
	/* Default HPH Mode to Class-H HiFi */
@@ -9779,12 +9788,6 @@ static int tasha_post_reset_cb(struct wcd9xxx *wcd9xxx)
	if (IS_ERR_VALUE(ret))
		dev_err(codec->dev, "%s: invalid pdata\n", __func__);

	tasha_slimbus_slave_port_cfg.slave_dev_intfdev_la =
		control->slim_slave->laddr;
	tasha_slimbus_slave_port_cfg.slave_dev_pgd_la =
		control->slim->laddr;
	tasha_init_slim_slave_cfg(codec);

	wcd_resmgr_post_ssr_v2(tasha->resmgr);

	/* MBHC Init */
@@ -9800,10 +9803,6 @@ static int tasha_post_reset_cb(struct wcd9xxx *wcd9xxx)
	else
		tasha_mbhc_hs_detect(codec, tasha->mbhc.mbhc_cfg);

	if (tasha->machine_codec_event_cb)
		tasha->machine_codec_event_cb(codec,
				       WCD9335_CODEC_EVENT_CODEC_UP);

	tasha_cleanup_irqs(tasha);
	ret = tasha_setup_irqs(tasha);
	if (ret) {