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

Commit 77b9c287 authored by Erin Yan's avatar Erin Yan Committed by Gerrit - the friendly Code Review server
Browse files

ASoC: msm: handle SSR event



Change sound card status when got SSR event notification, so that usespace
can be aware of SSR start and complete by detect sound card status.

Change-Id: Ic6b931b8ffca06881016bc1a063d11164a1233bf
Signed-off-by: default avatarErin Yan <xinyey@codeaurora.org>
parent 58a9174f
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -170,6 +170,7 @@ static int msm_tdm_num_slots = 8;

static void *adsp_state_notifier;
static bool dummy_device_registered;
static struct snd_soc_card  *sndcard;

enum {
	QUATERNARY_TDM_RX_0,
@@ -6902,6 +6903,7 @@ static int apq8096_asoc_machine_probe(struct platform_device *pdev)
	}
	dev_info(&pdev->dev, "Sound card %s registered\n", card->name);
	place_marker("M - DRIVER Audio Ready");
	sndcard = card;
	return 0;

err:
@@ -6912,6 +6914,7 @@ static int apq8096_asoc_machine_remove(struct platform_device *pdev)
{
	struct snd_soc_card *card = platform_get_drvdata(pdev);

	sndcard = NULL;
	snd_soc_unregister_card(card);

	return 0;
@@ -6959,6 +6962,22 @@ static int apq8096_adsp_state_callback(struct notifier_block *nb,
		platform_device_register(&dummy_machine_device);
		dummy_device_registered = true;
	}
	if (sndcard) {
		switch (value) {
		case SUBSYS_AFTER_POWERUP:
			pr_debug("%s:SSR complete, set sndcard state as ONLINE\n",
				__func__);
			snd_soc_card_change_online_state(sndcard, 1);
			break;
		case SUBSYS_AFTER_SHUTDOWN:
			pr_debug("%s:SSR start, set sndcard state as OFFLINE\n",
				__func__);
			snd_soc_card_change_online_state(sndcard, 0);
			break;
		default:
			pr_debug("%s: unsupport value\n", __func__);
		}
	}

	return NOTIFY_OK;
}