summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-06-18 16:40:17 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-06-18 16:40:17 -0700
commit753ed36d6af3e312d3f0aff67a89786a8190b110 (patch)
tree8392bbf66002a45e41786d54117a05de31298870
parent2763b994a1a1145eb8d538b35e7bab5156e1e351 (diff)
parent62d95ed05bd257d99d95a2d41e3959c7e77d3c19 (diff)
Merge "ASoC: apr: Add separate initial boot flag for ADSP and Modem"
-rw-r--r--drivers/soc/qcom/qdsp6v2/apr.c31
1 files changed, 20 insertions, 11 deletions
diff --git a/drivers/soc/qcom/qdsp6v2/apr.c b/drivers/soc/qcom/qdsp6v2/apr.c
index fefc348c0027..8cd86915be98 100644
--- a/drivers/soc/qcom/qdsp6v2/apr.c
+++ b/drivers/soc/qcom/qdsp6v2/apr.c
@@ -45,7 +45,8 @@ static void *apr_pkt_ctx;
static wait_queue_head_t dsp_wait;
static wait_queue_head_t modem_wait;
static bool is_modem_up;
-static bool is_initial_boot;
+static bool is_initial_modem_boot;
+static bool is_initial_adsp_boot;
/* Subsystem restart: QDSP6 data, functions */
static struct workqueue_struct *apr_reset_workqueue;
static void apr_reset_deregister(struct work_struct *work);
@@ -909,21 +910,28 @@ static int apr_notifier_service_cb(struct notifier_block *this,
* recovery notifications during initial boot
* up since everything is expected to be down.
*/
- if (is_initial_boot) {
- is_initial_boot = false;
- break;
- }
- if (cb_data->domain == AUDIO_NOTIFIER_MODEM_DOMAIN)
+ if (cb_data->domain == AUDIO_NOTIFIER_MODEM_DOMAIN) {
+ if (is_initial_modem_boot) {
+ is_initial_modem_boot = false;
+ break;
+ }
apr_modem_down(opcode);
- else
+ } else {
+ if (is_initial_adsp_boot) {
+ is_initial_adsp_boot = false;
+ break;
+ }
apr_adsp_down(opcode);
+ }
break;
case AUDIO_NOTIFIER_SERVICE_UP:
- is_initial_boot = false;
- if (cb_data->domain == AUDIO_NOTIFIER_MODEM_DOMAIN)
+ if (cb_data->domain == AUDIO_NOTIFIER_MODEM_DOMAIN) {
+ is_initial_modem_boot = false;
apr_modem_up();
- else
+ } else {
+ is_initial_adsp_boot = false;
apr_adsp_up();
+ }
break;
default:
break;
@@ -965,7 +973,8 @@ static int __init apr_init(void)
if (!apr_pkt_ctx)
pr_err("%s: Unable to create ipc log context\n", __func__);
- is_initial_boot = true;
+ is_initial_modem_boot = true;
+ is_initial_adsp_boot = true;
subsys_notif_register("apr_adsp", AUDIO_NOTIFIER_ADSP_DOMAIN,
&adsp_service_nb);
subsys_notif_register("apr_modem", AUDIO_NOTIFIER_MODEM_DOMAIN,