Loading asoc/codecs/bolero/va-macro.c +2 −19 Original line number Diff line number Diff line Loading @@ -509,7 +509,6 @@ static int va_macro_mclk_event(struct snd_soc_dapm_widget *w, int ret = 0; struct device *va_dev = NULL; struct va_macro_priv *va_priv = NULL; int clk_src = 0; if (!va_macro_get_data(component, &va_dev, &va_priv, __func__)) return -EINVAL; Loading @@ -531,22 +530,6 @@ static int va_macro_mclk_event(struct snd_soc_dapm_widget *w, break; case SND_SOC_DAPM_POST_PMD: if (va_priv->lpi_enable) { if (va_priv->version == BOLERO_VERSION_2_1) { if (va_priv->swr_ctrl_data) { clk_src = CLK_SRC_TX_RCG; ret = swrm_wcd_notify( va_priv->swr_ctrl_data[0].va_swr_pdev, SWR_REQ_CLK_SWITCH, &clk_src); if (ret) dev_dbg(va_dev, "%s: clock switch failed\n", __func__); } } else if (bolero_tx_clk_switch(component, CLK_SRC_TX_RCG)) { dev_dbg(va_dev, "%s: clock switch failed\n", __func__); } va_macro_mclk_enable(va_priv, 0, true); } else { bolero_tx_mclk_enable(component, 0); Loading Loading @@ -1919,7 +1902,7 @@ static const struct snd_soc_dapm_widget va_macro_dapm_widgets_v2[] = { VA_MACRO_AIF3_CAP, 0, va_aif3_cap_mixer_v2, ARRAY_SIZE(va_aif3_cap_mixer_v2)), SND_SOC_DAPM_SUPPLY_S("VA_SWR_PWR", -1, SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_SUPPLY_S("VA_SWR_PWR", -2, SND_SOC_NOPM, 0, 0, va_macro_swr_pwr_event_v2, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), Loading Loading @@ -1961,7 +1944,7 @@ static const struct snd_soc_dapm_widget va_macro_dapm_widgets_v3[] = { SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SUPPLY_S("VA_SWR_PWR", -1, SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_SUPPLY_S("VA_SWR_PWR", -2, SND_SOC_NOPM, 0, 0, va_macro_swr_pwr_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), }; Loading dsp/q6core.c +31 −2 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #include <linux/kernel.h> Loading Loading @@ -33,6 +33,8 @@ #define ADSP_STATE_READY_TIMEOUT_MS 3000 #define ADSP_MODULES_READY_AVS_STATE 5 #define APR_ENOTREADY 10 #define MEMPOOL_ID_MASK 0xFF #define MDF_MAP_TOKEN 0xF000 Loading Loading @@ -935,12 +937,39 @@ int32_t q6core_avcs_load_unload_modules(struct avcs_load_unload_modules_payload size_t packet_size = 0, payload_size = 0; struct avcs_cmd_dynamic_modules *mod = NULL; int num_modules; unsigned long timeout; if (payload == NULL) { pr_err("%s: payload is null\n", __func__); return -EINVAL; } if ((q6core_lcl.avs_state != ADSP_MODULES_READY_AVS_STATE) && (preload_type == AVCS_LOAD_MODULES)) { timeout = jiffies + msecs_to_jiffies(ADSP_STATE_READY_TIMEOUT_MS); do { q6core_is_adsp_ready(); if (q6core_lcl.param == ADSP_MODULES_READY_AVS_STATE) { pr_debug("%s: ADSP state up with all modules loaded\n", __func__); q6core_lcl.avs_state = ADSP_MODULES_READY_AVS_STATE; break; } /* * ADSP will be coming up after boot up and AVS might * not be fully up with all modules when the control reaches here. * So, wait for 50msec before checking ADSP state again. */ msleep(50); } while (time_after(timeout, jiffies)); if (q6core_lcl.param != ADSP_MODULES_READY_AVS_STATE) pr_err("%s: all modules might be not loaded yet on ADSP\n", __func__); } mutex_lock(&(q6core_lcl.cmd_lock)); num_modules = payload->num_modules; ocm_core_open(); Loading Loading @@ -1951,7 +1980,7 @@ static int q6core_is_avs_up(int32_t *avs_state) msleep(50); } while (time_after(timeout, jiffies)); *avs_state = adsp_ready; *avs_state = q6core_lcl.param; pr_debug("%s: ADSP Audio is %s\n", __func__, adsp_ready ? "ready" : "not ready"); Loading Loading
asoc/codecs/bolero/va-macro.c +2 −19 Original line number Diff line number Diff line Loading @@ -509,7 +509,6 @@ static int va_macro_mclk_event(struct snd_soc_dapm_widget *w, int ret = 0; struct device *va_dev = NULL; struct va_macro_priv *va_priv = NULL; int clk_src = 0; if (!va_macro_get_data(component, &va_dev, &va_priv, __func__)) return -EINVAL; Loading @@ -531,22 +530,6 @@ static int va_macro_mclk_event(struct snd_soc_dapm_widget *w, break; case SND_SOC_DAPM_POST_PMD: if (va_priv->lpi_enable) { if (va_priv->version == BOLERO_VERSION_2_1) { if (va_priv->swr_ctrl_data) { clk_src = CLK_SRC_TX_RCG; ret = swrm_wcd_notify( va_priv->swr_ctrl_data[0].va_swr_pdev, SWR_REQ_CLK_SWITCH, &clk_src); if (ret) dev_dbg(va_dev, "%s: clock switch failed\n", __func__); } } else if (bolero_tx_clk_switch(component, CLK_SRC_TX_RCG)) { dev_dbg(va_dev, "%s: clock switch failed\n", __func__); } va_macro_mclk_enable(va_priv, 0, true); } else { bolero_tx_mclk_enable(component, 0); Loading Loading @@ -1919,7 +1902,7 @@ static const struct snd_soc_dapm_widget va_macro_dapm_widgets_v2[] = { VA_MACRO_AIF3_CAP, 0, va_aif3_cap_mixer_v2, ARRAY_SIZE(va_aif3_cap_mixer_v2)), SND_SOC_DAPM_SUPPLY_S("VA_SWR_PWR", -1, SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_SUPPLY_S("VA_SWR_PWR", -2, SND_SOC_NOPM, 0, 0, va_macro_swr_pwr_event_v2, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), Loading Loading @@ -1961,7 +1944,7 @@ static const struct snd_soc_dapm_widget va_macro_dapm_widgets_v3[] = { SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SUPPLY_S("VA_SWR_PWR", -1, SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_SUPPLY_S("VA_SWR_PWR", -2, SND_SOC_NOPM, 0, 0, va_macro_swr_pwr_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), }; Loading
dsp/q6core.c +31 −2 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #include <linux/kernel.h> Loading Loading @@ -33,6 +33,8 @@ #define ADSP_STATE_READY_TIMEOUT_MS 3000 #define ADSP_MODULES_READY_AVS_STATE 5 #define APR_ENOTREADY 10 #define MEMPOOL_ID_MASK 0xFF #define MDF_MAP_TOKEN 0xF000 Loading Loading @@ -935,12 +937,39 @@ int32_t q6core_avcs_load_unload_modules(struct avcs_load_unload_modules_payload size_t packet_size = 0, payload_size = 0; struct avcs_cmd_dynamic_modules *mod = NULL; int num_modules; unsigned long timeout; if (payload == NULL) { pr_err("%s: payload is null\n", __func__); return -EINVAL; } if ((q6core_lcl.avs_state != ADSP_MODULES_READY_AVS_STATE) && (preload_type == AVCS_LOAD_MODULES)) { timeout = jiffies + msecs_to_jiffies(ADSP_STATE_READY_TIMEOUT_MS); do { q6core_is_adsp_ready(); if (q6core_lcl.param == ADSP_MODULES_READY_AVS_STATE) { pr_debug("%s: ADSP state up with all modules loaded\n", __func__); q6core_lcl.avs_state = ADSP_MODULES_READY_AVS_STATE; break; } /* * ADSP will be coming up after boot up and AVS might * not be fully up with all modules when the control reaches here. * So, wait for 50msec before checking ADSP state again. */ msleep(50); } while (time_after(timeout, jiffies)); if (q6core_lcl.param != ADSP_MODULES_READY_AVS_STATE) pr_err("%s: all modules might be not loaded yet on ADSP\n", __func__); } mutex_lock(&(q6core_lcl.cmd_lock)); num_modules = payload->num_modules; ocm_core_open(); Loading Loading @@ -1951,7 +1980,7 @@ static int q6core_is_avs_up(int32_t *avs_state) msleep(50); } while (time_after(timeout, jiffies)); *avs_state = adsp_ready; *avs_state = q6core_lcl.param; pr_debug("%s: ADSP Audio is %s\n", __func__, adsp_ready ? "ready" : "not ready"); Loading