mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 05:39:54 -04:00
Merge acc81179ef on remote branch
Change-Id: Id4ccca866ca5ad1d7e7cf715a539a64f4ccc3d47
This commit is contained in:
commit
d6c5b05fcc
22 changed files with 3111 additions and 2496 deletions
|
|
@ -76,8 +76,6 @@ static int audio_ext_clk_prepare(struct clk_hw *hw)
|
|||
if ((clk_priv->clk_src >= AUDIO_EXT_CLK_LPASS) &&
|
||||
(clk_priv->clk_src < AUDIO_EXT_CLK_LPASS_MAX)) {
|
||||
clk_priv->clk_cfg.enable = 1;
|
||||
trace_printk("%s: vote for %d clock\n",
|
||||
__func__, clk_priv->clk_src);
|
||||
ret = afe_set_lpass_clk_cfg(IDX_RSVD_3, &clk_priv->clk_cfg);
|
||||
if (ret < 0) {
|
||||
if (__ratelimit(&rtl))
|
||||
|
|
@ -122,8 +120,6 @@ static void audio_ext_clk_unprepare(struct clk_hw *hw)
|
|||
if ((clk_priv->clk_src >= AUDIO_EXT_CLK_LPASS) &&
|
||||
(clk_priv->clk_src < AUDIO_EXT_CLK_LPASS_MAX)) {
|
||||
clk_priv->clk_cfg.enable = 0;
|
||||
trace_printk("%s: unvote for %d clock\n",
|
||||
__func__, clk_priv->clk_src);
|
||||
ret = afe_set_lpass_clk_cfg(IDX_RSVD_3, &clk_priv->clk_cfg);
|
||||
if (ret < 0) {
|
||||
if (__ratelimit(&rtl))
|
||||
|
|
@ -161,7 +157,7 @@ static int lpass_hw_vote_prepare(struct clk_hw *hw)
|
|||
static DEFINE_RATELIMIT_STATE(rtl, 1 * HZ, 1);
|
||||
|
||||
if (clk_priv->clk_src == AUDIO_EXT_CLK_LPASS_CORE_HW_VOTE) {
|
||||
trace_printk("%s: vote for %d clock\n",
|
||||
pr_debug("%s: vote for %d clock\n",
|
||||
__func__, clk_priv->clk_src);
|
||||
ret = afe_vote_lpass_core_hw(AFE_LPASS_CORE_HW_MACRO_BLOCK,
|
||||
"LPASS_HW_MACRO",
|
||||
|
|
@ -174,7 +170,7 @@ static int lpass_hw_vote_prepare(struct clk_hw *hw)
|
|||
}
|
||||
|
||||
if (clk_priv->clk_src == AUDIO_EXT_CLK_LPASS_AUDIO_HW_VOTE) {
|
||||
trace_printk("%s: vote for %d clock\n",
|
||||
pr_debug("%s: vote for %d clock\n",
|
||||
__func__, clk_priv->clk_src);
|
||||
ret = afe_vote_lpass_core_hw(AFE_LPASS_CORE_HW_DCODEC_BLOCK,
|
||||
"LPASS_HW_DCODEC",
|
||||
|
|
@ -196,7 +192,7 @@ static void lpass_hw_vote_unprepare(struct clk_hw *hw)
|
|||
int ret = 0;
|
||||
|
||||
if (clk_priv->clk_src == AUDIO_EXT_CLK_LPASS_CORE_HW_VOTE) {
|
||||
trace_printk("%s: unvote for %d clock\n",
|
||||
pr_debug("%s: unvote for %d clock\n",
|
||||
__func__, clk_priv->clk_src);
|
||||
ret = afe_unvote_lpass_core_hw(
|
||||
AFE_LPASS_CORE_HW_MACRO_BLOCK,
|
||||
|
|
@ -208,7 +204,7 @@ static void lpass_hw_vote_unprepare(struct clk_hw *hw)
|
|||
}
|
||||
|
||||
if (clk_priv->clk_src == AUDIO_EXT_CLK_LPASS_AUDIO_HW_VOTE) {
|
||||
trace_printk("%s: unvote for %d clock\n",
|
||||
pr_debug("%s: unvote for %d clock\n",
|
||||
__func__, clk_priv->clk_src);
|
||||
ret = afe_unvote_lpass_core_hw(
|
||||
AFE_LPASS_CORE_HW_DCODEC_BLOCK,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/of_platform.h>
|
||||
|
|
@ -891,7 +892,7 @@ static int bolero_ssr_enable(struct device *dev, void *data)
|
|||
priv->component,
|
||||
BOLERO_MACRO_EVT_CLK_RESET, 0x0);
|
||||
}
|
||||
trace_printk("%s: clk count reset\n", __func__);
|
||||
pr_debug("%s: clk count reset\n", __func__);
|
||||
|
||||
if (priv->rsc_clk_cb)
|
||||
priv->rsc_clk_cb(priv->clk_dev, BOLERO_MACRO_EVT_SSR_GFMUX_UP);
|
||||
|
|
@ -914,7 +915,6 @@ static int bolero_ssr_enable(struct device *dev, void *data)
|
|||
/* Add a 100usec sleep to ensure last register write is done */
|
||||
usleep_range(100,110);
|
||||
bolero_clk_rsc_enable_all_clocks(priv->clk_dev, false);
|
||||
trace_printk("%s: regcache_sync done\n", __func__);
|
||||
/* call ssr event for supported macros */
|
||||
for (macro_idx = START_MACRO; macro_idx < MAX_MACRO; macro_idx++) {
|
||||
if (!priv->macro_params[macro_idx].event_handler)
|
||||
|
|
@ -923,7 +923,6 @@ static int bolero_ssr_enable(struct device *dev, void *data)
|
|||
priv->component,
|
||||
BOLERO_MACRO_EVT_SSR_UP, 0x0);
|
||||
}
|
||||
trace_printk("%s: SSR up events processed by all macros\n", __func__);
|
||||
bolero_cdc_notifier_call(priv, BOLERO_SLV_EVT_SSR_UP);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1469,8 +1468,6 @@ int bolero_runtime_resume(struct device *dev)
|
|||
}
|
||||
}
|
||||
priv->core_hw_vote_count++;
|
||||
trace_printk("%s: hw vote count %d\n",
|
||||
__func__, priv->core_hw_vote_count);
|
||||
|
||||
audio_vote:
|
||||
if (priv->lpass_audio_hw_vote == NULL) {
|
||||
|
|
@ -1488,8 +1485,6 @@ audio_vote:
|
|||
}
|
||||
}
|
||||
priv->core_audio_vote_count++;
|
||||
trace_printk("%s: audio vote count %d\n",
|
||||
__func__, priv->core_audio_vote_count);
|
||||
|
||||
done:
|
||||
mutex_unlock(&priv->vote_lock);
|
||||
|
|
@ -1513,7 +1508,7 @@ int bolero_runtime_suspend(struct device *dev)
|
|||
dev_dbg(dev, "%s: Invalid lpass core hw node\n",
|
||||
__func__);
|
||||
}
|
||||
trace_printk("%s: hw vote count %d\n",
|
||||
pr_debug("%s: hw vote count %d\n",
|
||||
__func__, priv->core_hw_vote_count);
|
||||
|
||||
if (priv->lpass_audio_hw_vote != NULL) {
|
||||
|
|
@ -1526,8 +1521,6 @@ int bolero_runtime_suspend(struct device *dev)
|
|||
dev_dbg(dev, "%s: Invalid lpass audio hw node\n",
|
||||
__func__);
|
||||
}
|
||||
trace_printk("%s: audio vote count %d\n",
|
||||
__func__, priv->core_audio_vote_count);
|
||||
|
||||
mutex_unlock(&priv->vote_lock);
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/of_platform.h>
|
||||
|
|
@ -136,7 +137,6 @@ int bolero_rsc_clk_reset(struct device *dev, int clk_id)
|
|||
dev_dbg(priv->dev,
|
||||
"%s: clock reset after ssr, count %d\n", __func__, count);
|
||||
|
||||
trace_printk("%s: clock reset after ssr, count %d\n", __func__, count);
|
||||
while (count--) {
|
||||
clk_prepare_enable(priv->clk[clk_id]);
|
||||
clk_prepare_enable(priv->clk[clk_id + NPL_CLK_OFFSET]);
|
||||
|
|
@ -297,8 +297,6 @@ static int bolero_clk_rsc_mux1_clk_request(struct bolero_clk_rsc *priv,
|
|||
if (priv->dev_up_gfmux) {
|
||||
iowrite32(0x1, clk_muxsel);
|
||||
muxsel = ioread32(clk_muxsel);
|
||||
trace_printk("%s: muxsel value after enable: %d\n",
|
||||
__func__, muxsel);
|
||||
}
|
||||
bolero_clk_rsc_mux0_clk_request(priv,
|
||||
default_clk_id,
|
||||
|
|
@ -330,8 +328,6 @@ static int bolero_clk_rsc_mux1_clk_request(struct bolero_clk_rsc *priv,
|
|||
if (priv->dev_up_gfmux) {
|
||||
iowrite32(0x0, clk_muxsel);
|
||||
muxsel = ioread32(clk_muxsel);
|
||||
trace_printk("%s: muxsel value after disable: %d\n",
|
||||
__func__, muxsel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -555,7 +551,6 @@ int bolero_clk_rsc_request_clock(struct device *dev,
|
|||
if (!priv->dev_up && enable) {
|
||||
dev_err_ratelimited(priv->dev, "%s: SSR is in progress..\n",
|
||||
__func__);
|
||||
trace_printk("%s: SSR is in progress..\n", __func__);
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
}
|
||||
|
|
@ -585,9 +580,6 @@ int bolero_clk_rsc_request_clock(struct device *dev,
|
|||
dev_dbg(priv->dev, "%s: clk_cnt: %d for requested clk: %d, enable: %d\n",
|
||||
__func__, priv->clk_cnt[clk_id_req], clk_id_req,
|
||||
enable);
|
||||
trace_printk("%s: clk_cnt: %d for requested clk: %d, enable: %d\n",
|
||||
__func__, priv->clk_cnt[clk_id_req], clk_id_req,
|
||||
enable);
|
||||
|
||||
mutex_unlock(&priv->rsc_clk_lock);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
|
@ -1396,7 +1397,7 @@ static int rx_macro_mclk_enable(struct rx_macro_priv *rx_priv,
|
|||
}
|
||||
}
|
||||
exit:
|
||||
trace_printk("%s: mclk_enable = %u, dapm = %d clk_users= %d\n",
|
||||
dev_dbg(rx_priv->dev, "%s: mclk_enable = %u, dapm = %d clk_users= %d\n",
|
||||
__func__, mclk_enable, dapm, rx_priv->rx_mclk_users);
|
||||
mutex_unlock(&rx_priv->mclk_lock);
|
||||
return ret;
|
||||
|
|
@ -1483,7 +1484,6 @@ static int rx_macro_event_handler(struct snd_soc_component *component,
|
|||
rx_macro_wcd_clsh_imped_config(component, data, false);
|
||||
break;
|
||||
case BOLERO_MACRO_EVT_SSR_DOWN:
|
||||
trace_printk("%s, enter SSR down\n", __func__);
|
||||
rx_priv->dev_up = false;
|
||||
if (rx_priv->swr_ctrl_data) {
|
||||
swrm_wcd_notify(
|
||||
|
|
@ -1518,7 +1518,6 @@ static int rx_macro_event_handler(struct snd_soc_component *component,
|
|||
rx_macro_core_vote(rx_priv, false);
|
||||
break;
|
||||
case BOLERO_MACRO_EVT_SSR_UP:
|
||||
trace_printk("%s, enter SSR up\n", __func__);
|
||||
rx_priv->dev_up = true;
|
||||
/* reset swr after ssr/pdr */
|
||||
rx_priv->reset_swr = true;
|
||||
|
|
@ -3827,8 +3826,6 @@ static int rx_swrm_clock(void *handle, bool enable)
|
|||
|
||||
mutex_lock(&rx_priv->swr_clk_lock);
|
||||
|
||||
trace_printk("%s: swrm clock %s\n",
|
||||
__func__, (enable ? "enable" : "disable"));
|
||||
dev_dbg(rx_priv->dev, "%s: swrm clock %s\n",
|
||||
__func__, (enable ? "enable" : "disable"));
|
||||
if (enable) {
|
||||
|
|
@ -3895,8 +3892,6 @@ static int rx_swrm_clock(void *handle, bool enable)
|
|||
}
|
||||
}
|
||||
}
|
||||
trace_printk("%s: swrm clock users %d\n",
|
||||
__func__, rx_priv->swr_clk_users);
|
||||
dev_dbg(rx_priv->dev, "%s: swrm clock users %d\n",
|
||||
__func__, rx_priv->swr_clk_users);
|
||||
exit:
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
|
@ -419,7 +420,6 @@ static int tx_macro_event_handler(struct snd_soc_component *component,
|
|||
|
||||
switch (event) {
|
||||
case BOLERO_MACRO_EVT_SSR_DOWN:
|
||||
trace_printk("%s, enter SSR down\n", __func__);
|
||||
if (tx_priv->swr_ctrl_data) {
|
||||
swrm_wcd_notify(
|
||||
tx_priv->swr_ctrl_data[0].tx_swr_pdev,
|
||||
|
|
@ -436,7 +436,6 @@ static int tx_macro_event_handler(struct snd_soc_component *component,
|
|||
}
|
||||
break;
|
||||
case BOLERO_MACRO_EVT_SSR_UP:
|
||||
trace_printk("%s, enter SSR up\n", __func__);
|
||||
/* reset swr after ssr/pdr */
|
||||
tx_priv->reset_swr = true;
|
||||
if (tx_priv->swr_ctrl_data)
|
||||
|
|
@ -2632,9 +2631,6 @@ static int tx_macro_tx_va_mclk_enable(struct tx_macro_priv *tx_priv,
|
|||
{
|
||||
int ret = 0, clk_tx_ret = 0;
|
||||
|
||||
trace_printk("%s: clock type %s, enable: %s tx_mclk_users: %d\n",
|
||||
__func__, (clk_type ? "VA_MCLK" : "TX_MCLK"),
|
||||
(enable ? "enable" : "disable"), tx_priv->tx_mclk_users);
|
||||
dev_dbg(tx_priv->dev,
|
||||
"%s: clock type %s, enable: %s tx_mclk_users: %d\n",
|
||||
__func__, (clk_type ? "VA_MCLK" : "TX_MCLK"),
|
||||
|
|
@ -2642,7 +2638,6 @@ static int tx_macro_tx_va_mclk_enable(struct tx_macro_priv *tx_priv,
|
|||
|
||||
if (enable) {
|
||||
if (tx_priv->swr_clk_users == 0) {
|
||||
trace_printk("%s: tx swr clk users 0\n", __func__);
|
||||
ret = msm_cdc_pinctrl_select_active_state(
|
||||
tx_priv->tx_swr_gpio_p);
|
||||
if (ret < 0) {
|
||||
|
|
@ -2660,7 +2655,6 @@ static int tx_macro_tx_va_mclk_enable(struct tx_macro_priv *tx_priv,
|
|||
TX_CORE_CLK,
|
||||
true);
|
||||
if (clk_type == TX_MCLK) {
|
||||
trace_printk("%s: requesting TX_MCLK\n", __func__);
|
||||
ret = tx_macro_mclk_enable(tx_priv, 1);
|
||||
if (ret < 0) {
|
||||
if (tx_priv->swr_clk_users == 0)
|
||||
|
|
@ -2673,7 +2667,6 @@ static int tx_macro_tx_va_mclk_enable(struct tx_macro_priv *tx_priv,
|
|||
}
|
||||
}
|
||||
if (clk_type == VA_MCLK) {
|
||||
trace_printk("%s: requesting VA_MCLK\n", __func__);
|
||||
ret = bolero_clk_rsc_request_clock(tx_priv->dev,
|
||||
TX_CORE_CLK,
|
||||
VA_CORE_CLK,
|
||||
|
|
@ -2707,8 +2700,6 @@ static int tx_macro_tx_va_mclk_enable(struct tx_macro_priv *tx_priv,
|
|||
if (tx_priv->swr_clk_users == 0) {
|
||||
dev_dbg(tx_priv->dev, "%s: reset_swr: %d\n",
|
||||
__func__, tx_priv->reset_swr);
|
||||
trace_printk("%s: reset_swr: %d\n",
|
||||
__func__, tx_priv->reset_swr);
|
||||
if (tx_priv->reset_swr)
|
||||
regmap_update_bits(regmap,
|
||||
BOLERO_CDC_TX_CLK_RST_CTRL_SWR_CONTROL,
|
||||
|
|
@ -2806,7 +2797,6 @@ done:
|
|||
TX_CORE_CLK,
|
||||
false);
|
||||
exit:
|
||||
trace_printk("%s: exit\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -2920,10 +2910,6 @@ static int tx_macro_swrm_clock(void *handle, bool enable)
|
|||
}
|
||||
|
||||
mutex_lock(&tx_priv->swr_clk_lock);
|
||||
trace_printk("%s: swrm clock %s tx_swr_clk_cnt: %d va_swr_clk_cnt: %d\n",
|
||||
__func__,
|
||||
(enable ? "enable" : "disable"),
|
||||
tx_priv->tx_swr_clk_cnt, tx_priv->va_swr_clk_cnt);
|
||||
dev_dbg(tx_priv->dev,
|
||||
"%s: swrm clock %s tx_swr_clk_cnt: %d va_swr_clk_cnt: %d\n",
|
||||
__func__, (enable ? "enable" : "disable"),
|
||||
|
|
@ -2986,9 +2972,6 @@ static int tx_macro_swrm_clock(void *handle, bool enable)
|
|||
}
|
||||
}
|
||||
|
||||
trace_printk("%s: swrm clock users %d tx_clk_sts_cnt: %d va_clk_sts_cnt: %d\n",
|
||||
__func__, tx_priv->swr_clk_users, tx_priv->tx_clk_status,
|
||||
tx_priv->va_clk_status);
|
||||
dev_dbg(tx_priv->dev,
|
||||
"%s: swrm clock users %d tx_clk_sts_cnt: %d va_clk_sts_cnt: %d\n",
|
||||
__func__, tx_priv->swr_clk_users, tx_priv->tx_clk_status,
|
||||
|
|
|
|||
|
|
@ -328,7 +328,6 @@ static int va_macro_event_handler(struct snd_soc_component *component,
|
|||
va_macro_core_vote(va_priv, false);
|
||||
break;
|
||||
case BOLERO_MACRO_EVT_SSR_UP:
|
||||
trace_printk("%s, enter SSR up\n", __func__);
|
||||
/* reset swr after ssr/pdr */
|
||||
va_priv->reset_swr = true;
|
||||
va_priv->dev_up = true;
|
||||
|
|
@ -341,7 +340,6 @@ static int va_macro_event_handler(struct snd_soc_component *component,
|
|||
bolero_rsc_clk_reset(va_dev, VA_CORE_CLK);
|
||||
break;
|
||||
case BOLERO_MACRO_EVT_SSR_DOWN:
|
||||
trace_printk("%s: BOLERO_MACRO_EVT_SSR_DOWN\n", __func__);
|
||||
va_priv->dev_up = false;
|
||||
if (va_priv->swr_ctrl_data) {
|
||||
swrm_wcd_notify(
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
|
@ -1014,7 +1015,6 @@ static int wsa_macro_event_handler(struct snd_soc_component *component,
|
|||
|
||||
switch (event) {
|
||||
case BOLERO_MACRO_EVT_SSR_DOWN:
|
||||
trace_printk("%s, enter SSR down\n", __func__);
|
||||
if (wsa_priv->swr_ctrl_data) {
|
||||
swrm_wcd_notify(
|
||||
wsa_priv->swr_ctrl_data[0].wsa_swr_pdev,
|
||||
|
|
@ -1047,7 +1047,6 @@ static int wsa_macro_event_handler(struct snd_soc_component *component,
|
|||
wsa_macro_core_vote(wsa_priv, false);
|
||||
break;
|
||||
case BOLERO_MACRO_EVT_SSR_UP:
|
||||
trace_printk("%s, enter SSR up\n", __func__);
|
||||
/* reset swr after ssr/pdr */
|
||||
wsa_priv->reset_swr = true;
|
||||
if (wsa_priv->swr_ctrl_data)
|
||||
|
|
@ -2930,9 +2929,6 @@ static int wsa_swrm_clock(void *handle, bool enable)
|
|||
|
||||
mutex_lock(&wsa_priv->swr_clk_lock);
|
||||
|
||||
trace_printk("%s: %s swrm clock %s\n",
|
||||
dev_name(wsa_priv->dev), __func__,
|
||||
(enable ? "enable" : "disable"));
|
||||
dev_dbg(wsa_priv->dev, "%s: swrm clock %s\n",
|
||||
__func__, (enable ? "enable" : "disable"));
|
||||
if (enable) {
|
||||
|
|
@ -2998,9 +2994,6 @@ static int wsa_swrm_clock(void *handle, bool enable)
|
|||
}
|
||||
}
|
||||
}
|
||||
trace_printk("%s: %s swrm clock users: %d\n",
|
||||
dev_name(wsa_priv->dev), __func__,
|
||||
wsa_priv->swr_clk_users);
|
||||
dev_dbg(wsa_priv->dev, "%s: swrm clock users %d\n",
|
||||
__func__, wsa_priv->swr_clk_users);
|
||||
exit:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
|
|
@ -655,7 +656,6 @@ static int swr_haptics_suspend(struct device *dev)
|
|||
dev_err(dev, "%s: no data for swr_hap\n", __func__);
|
||||
return -ENODEV;
|
||||
}
|
||||
trace_printk("%s: suspended\n", __func__);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
@ -670,7 +670,6 @@ static int swr_haptics_resume(struct device *dev)
|
|||
dev_err(dev, "%s: no data for swr_hap\n", __func__);
|
||||
return -ENODEV;
|
||||
}
|
||||
trace_printk("%s: resumed\n", __func__);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
|||
5
asoc/gvm_auto_spf_dummy.c
Executable file → Normal file
5
asoc/gvm_auto_spf_dummy.c
Executable file → Normal file
|
|
@ -858,7 +858,7 @@ static int msm_asoc_machine_probe(struct platform_device *pdev)
|
|||
struct msm_asoc_mach_data *pdata;
|
||||
int ret;
|
||||
|
||||
|
||||
place_marker("M - DRIVER Audio Init");
|
||||
|
||||
if (!pdev->dev.of_node) {
|
||||
dev_err(&pdev->dev, "No platform supplied from device tree\n");
|
||||
|
|
@ -910,7 +910,8 @@ static int msm_asoc_machine_probe(struct platform_device *pdev)
|
|||
}
|
||||
dev_info(&pdev->dev, "Sound card %s registered\n", card->name);
|
||||
pr_err("Sound card %s registered\n", card->name);
|
||||
place_marker("M - sound card init complete");
|
||||
|
||||
place_marker("M - DRIVER Audio Ready");
|
||||
|
||||
spdev = pdev;
|
||||
|
||||
|
|
|
|||
|
|
@ -1655,7 +1655,6 @@ static int msm_dai_q6_power_mode_put(struct snd_kcontrol *kcontrol,
|
|||
u16 port_id = (u16)kcontrol->private_value;
|
||||
|
||||
pr_debug("%s: power mode = %d\n", __func__, value);
|
||||
trace_printk("%s: power mode = %d\n", __func__, value);
|
||||
|
||||
afe_set_power_mode_cfg(port_id, value);
|
||||
return 0;
|
||||
|
|
@ -1732,7 +1731,6 @@ static int msm_dai_q6_island_mode_put(struct snd_kcontrol *kcontrol,
|
|||
u16 port_id = (u16)kcontrol->private_value;
|
||||
|
||||
pr_debug("%s: island mode = %d\n", __func__, value);
|
||||
trace_printk("%s: island mode = %d\n", __func__, value);
|
||||
|
||||
afe_set_island_mode_cfg(port_id, value);
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@
|
|||
/* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
/*
|
||||
* Add support for 24 and 32bit format for ASM loopback and playback session.
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/err.h>
|
||||
|
|
@ -302,6 +305,7 @@ static int msm_pcm_open(struct snd_pcm_substream *substream)
|
|||
struct asm_session_mtmx_strtr_param_window_v2_t asm_mtmx_strtr_window;
|
||||
uint32_t param_id;
|
||||
struct msm_pcm_pdata *pdata;
|
||||
uint16_t format = 0;
|
||||
|
||||
if (!component) {
|
||||
pr_err("%s: component is NULL\n", __func__);
|
||||
|
|
@ -349,6 +353,23 @@ static int msm_pcm_open(struct snd_pcm_substream *substream)
|
|||
pcm->audio_client->fedai_id = rtd->dai_link->id;
|
||||
pcm->audio_client->perf_mode = pdata->perf_mode;
|
||||
pcm->audio_client->stream_type = substream->stream;
|
||||
|
||||
format = msm_pcm_asm_cfg_get(rtd->dai_link->id, MSM_ASM_LOOPBACK_MODE);
|
||||
switch (format) {
|
||||
case SNDRV_PCM_FORMAT_S32_LE:
|
||||
bits_per_sample = 32;
|
||||
break;
|
||||
case SNDRV_PCM_FORMAT_S24_LE:
|
||||
case SNDRV_PCM_FORMAT_S24_3LE:
|
||||
bits_per_sample = 24;
|
||||
break;
|
||||
case SNDRV_PCM_FORMAT_S16_LE:
|
||||
default:
|
||||
bits_per_sample = 16;
|
||||
}
|
||||
pr_debug("%s: fe_id:%d, bits_per_sample:%d\n",__func__,
|
||||
rtd->dai_link->id,bits_per_sample);
|
||||
|
||||
ret = q6asm_open_loopback_with_retry(pcm->audio_client,
|
||||
bits_per_sample);
|
||||
pcm->session_id = pcm->audio_client->session;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@
|
|||
/* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
/*
|
||||
* Add support for 24 and 32bit format for ASM loopback and playback session.
|
||||
*/
|
||||
|
||||
|
||||
#include <linux/init.h>
|
||||
|
|
@ -273,19 +276,19 @@ static int msm_pcm_soft_volume_ctl_put(struct snd_kcontrol *kcontrol,
|
|||
|
||||
if ( prtd) {
|
||||
if ((ucontrol->value.integer.value[0] < 0) || (ucontrol->value.integer.value[0] > 15000)) {
|
||||
pr_err("%s : Ramp period range (0 to 15000), input value is out of range: %d",__func__,soft_params.period);
|
||||
pr_err("%s : Ramp period range (0 to 15000), input value is out of range: %d",__func__,ucontrol->value.integer.value[0]);
|
||||
goto exit;
|
||||
} else {
|
||||
soft_params.period = ucontrol->value.integer.value[0];
|
||||
}
|
||||
if ((ucontrol->value.integer.value[1] < 0) || (ucontrol->value.integer.value[1] > 15000000)) {
|
||||
pr_err("%s : Ramp step range (0 to 15000000), input value is out of range: %d",__func__,soft_params.step);
|
||||
pr_err("%s : Ramp step range (0 to 15000000), input value is out of range: %d",__func__,ucontrol->value.integer.value[1]);
|
||||
goto exit;
|
||||
} else {
|
||||
soft_params.step = ucontrol->value.integer.value[1];
|
||||
}
|
||||
if ((ucontrol->value.integer.value[2] < 0) || (ucontrol->value.integer.value[2] >= SOFT_VOLUME_CURVE_ENUM_MAX)) {
|
||||
pr_err("%s : Ramping curve range (0 to 2), input value is out of range: %d",__func__,soft_params.rampingcurve);
|
||||
pr_err("%s : Ramping curve range (0 to 2), input value is out of range: %d",__func__,ucontrol->value.integer.value[2]);
|
||||
goto exit;
|
||||
} else {
|
||||
soft_params.rampingcurve = ucontrol->value.integer.value[2];
|
||||
|
|
@ -557,6 +560,11 @@ static int msm_pcm_playback_prepare(struct snd_pcm_substream *substream)
|
|||
uint32_t fmt_type = FORMAT_LINEAR_PCM;
|
||||
uint16_t bits_per_sample;
|
||||
uint16_t sample_word_size;
|
||||
uint16_t format_blk_bits_per_sample = 0;
|
||||
uint16_t format_blk_sample_word_size = 0;
|
||||
uint16_t format = 0;
|
||||
uint16_t req_format = 0;
|
||||
uint16_t input_file_format = 0;
|
||||
|
||||
if (!component) {
|
||||
pr_err("%s: component is NULL\n", __func__);
|
||||
|
|
@ -598,7 +606,21 @@ static int msm_pcm_playback_prepare(struct snd_pcm_substream *substream)
|
|||
prtd->audio_client->stream_type = SNDRV_PCM_STREAM_PLAYBACK;
|
||||
prtd->audio_client->fedai_id = soc_prtd->dai_link->id;
|
||||
|
||||
switch (params_format(params)) {
|
||||
req_format = msm_pcm_asm_cfg_get(soc_prtd->dai_link->id, MSM_ASM_PLAYBACK_MODE);
|
||||
input_file_format = params_format(params);
|
||||
|
||||
pr_debug("%s: fe_id:%d, req_format:%d, input_file_format:%d\n",__func__,
|
||||
soc_prtd->dai_link->id, req_format, input_file_format);
|
||||
|
||||
if(req_format > input_file_format) {
|
||||
format = req_format;
|
||||
pr_debug("%s: enforce ASM bitwidth to %d from %d\n",__func__,
|
||||
format,input_file_format);
|
||||
}else {
|
||||
format = input_file_format;
|
||||
}
|
||||
|
||||
switch (format) {
|
||||
case SNDRV_PCM_FORMAT_S32_LE:
|
||||
bits_per_sample = 32;
|
||||
sample_word_size = 32;
|
||||
|
|
@ -617,6 +639,10 @@ static int msm_pcm_playback_prepare(struct snd_pcm_substream *substream)
|
|||
sample_word_size = 16;
|
||||
break;
|
||||
}
|
||||
|
||||
pr_debug("%s: fe_id:%d, bits_per_sample:%d, sample_word_size:%d\n",__func__,
|
||||
soc_prtd->dai_link->id, bits_per_sample, sample_word_size);
|
||||
|
||||
if (prtd->compress_enable) {
|
||||
fmt_type = FORMAT_GEN_COMPR;
|
||||
pr_debug("%s: Compressed enabled!\n", __func__);
|
||||
|
|
@ -664,11 +690,32 @@ static int msm_pcm_playback_prepare(struct snd_pcm_substream *substream)
|
|||
pr_err("%s: stream reg failed ret:%d\n", __func__, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*Format block is configure with input file bits_per_sample*/
|
||||
switch (input_file_format) {
|
||||
case SNDRV_PCM_FORMAT_S32_LE:
|
||||
format_blk_bits_per_sample = 32;
|
||||
format_blk_sample_word_size = 32;
|
||||
break;
|
||||
case SNDRV_PCM_FORMAT_S24_LE:
|
||||
format_blk_bits_per_sample = 24;
|
||||
format_blk_sample_word_size = 32;
|
||||
break;
|
||||
case SNDRV_PCM_FORMAT_S24_3LE:
|
||||
format_blk_bits_per_sample = 24;
|
||||
format_blk_sample_word_size = 24;
|
||||
break;
|
||||
case SNDRV_PCM_FORMAT_S16_LE:
|
||||
default:
|
||||
format_blk_bits_per_sample = 16;
|
||||
format_blk_sample_word_size = 16;
|
||||
break;
|
||||
}
|
||||
if (prtd->compress_enable) {
|
||||
ret = q6asm_media_format_block_gen_compr(
|
||||
prtd->audio_client, runtime->rate,
|
||||
runtime->channels, !prtd->set_channel_map,
|
||||
prtd->channel_map, bits_per_sample);
|
||||
prtd->channel_map, format_blk_bits_per_sample);
|
||||
} else {
|
||||
|
||||
if ((q6core_get_avcs_api_version_per_service(
|
||||
|
|
@ -678,15 +725,15 @@ static int msm_pcm_playback_prepare(struct snd_pcm_substream *substream)
|
|||
ret = q6asm_media_format_block_multi_ch_pcm_v5(
|
||||
prtd->audio_client, runtime->rate,
|
||||
runtime->channels, !chmap->set_channel_map,
|
||||
chmap->channel_map, bits_per_sample,
|
||||
sample_word_size, ASM_LITTLE_ENDIAN,
|
||||
chmap->channel_map, format_blk_bits_per_sample,
|
||||
format_blk_sample_word_size, ASM_LITTLE_ENDIAN,
|
||||
DEFAULT_QF);
|
||||
} else {
|
||||
ret = q6asm_media_format_block_multi_ch_pcm_v4(
|
||||
prtd->audio_client, runtime->rate,
|
||||
runtime->channels, !prtd->set_channel_map,
|
||||
prtd->channel_map, bits_per_sample,
|
||||
sample_word_size, ASM_LITTLE_ENDIAN,
|
||||
prtd->channel_map, format_blk_bits_per_sample,
|
||||
format_blk_sample_word_size, ASM_LITTLE_ENDIAN,
|
||||
DEFAULT_QF);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -2,6 +2,9 @@
|
|||
/* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
/*
|
||||
* Add support for 24 and 32bit format for ASM loopback and playback session.
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/err.h>
|
||||
|
|
@ -6347,6 +6350,294 @@ static int msm_routing_afe_lb_tx_port_put(struct snd_kcontrol *kcontrol,
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define ASM_CFG_PARAM_MAX 4
|
||||
static int asm_cfg_params[ASM_CFG_PARAM_MAX];
|
||||
|
||||
struct msm_asm_config loopback_cfg[] = {
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA1] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA2] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA3] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA4] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA5] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA6] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA7] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA8] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA9] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA10] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA11] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA12] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA13] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA14] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA15] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA16] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA17] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA18] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA19] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA20] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA21] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA22] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA23] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA24] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA25] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA26] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA27] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA28] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA29] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA30] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA31] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA32] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA33] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA34] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOIP] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_AFE_RX] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_AFE_TX] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICE_STUB] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_DTMF_RX] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_QCHAT] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOLTE_STUB] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM1] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM2] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM3] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM4] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM5] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM6] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM7] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM8] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICE2_STUB] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICEMMODE1] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICEMMODE2] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
};
|
||||
|
||||
struct msm_asm_config playback_cfg[] = {
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA1] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA2] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA3] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA4] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA5] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA6] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA7] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA8] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA9] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA10] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA11] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA12] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA13] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA14] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA15] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA16] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA17] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA18] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA19] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA20] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA21] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA22] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA23] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA24] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA25] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA26] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA27] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA28] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA29] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA30] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA31] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA32] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA33] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA34] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOIP] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_AFE_RX] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_AFE_TX] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICE_STUB] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_DTMF_RX] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_QCHAT] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOLTE_STUB] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM1] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM2] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM3] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM4] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM5] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM6] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM7] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM8] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICE2_STUB] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICEMMODE1] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICEMMODE2] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
};
|
||||
|
||||
struct msm_asm_config capture_cfg[] = {
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA1] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA2] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA3] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA4] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA5] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA6] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA7] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA8] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA9] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA10] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA11] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA12] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA13] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA14] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA15] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA16] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA17] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA18] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA19] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA20] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA21] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA22] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA23] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA24] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA25] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA26] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA27] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA28] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA29] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA30] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA31] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA32] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA33] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_MULTIMEDIA34] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOIP] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_AFE_RX] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_AFE_TX] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICE_STUB] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_DTMF_RX] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_QCHAT] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOLTE_STUB] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM1] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM2] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM3] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM4] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM5] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM6] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM7] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_LSM8] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICE2_STUB] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICEMMODE1] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
[MSM_FRONTEND_DAI_VOICEMMODE2] = {0, 0, SNDRV_PCM_FORMAT_S16_LE},
|
||||
};
|
||||
|
||||
int msm_pcm_asm_cfg_get(int fe_id, int mode)
|
||||
{
|
||||
int format = 0;
|
||||
if (mode == MSM_ASM_PLAYBACK_MODE) {
|
||||
format = playback_cfg[fe_id].bit_format;
|
||||
}
|
||||
else if(mode == MSM_ASM_CAPTURE_MODE) {
|
||||
format = capture_cfg[fe_id].bit_format;
|
||||
}
|
||||
else if (mode == MSM_ASM_LOOPBACK_MODE) {
|
||||
format = loopback_cfg[fe_id].bit_format;
|
||||
}
|
||||
return format;
|
||||
}
|
||||
EXPORT_SYMBOL(msm_pcm_asm_cfg_get);
|
||||
|
||||
static int msm_pcm_get_format(int value)
|
||||
{
|
||||
int format = 0;
|
||||
switch (value) {
|
||||
case 16:
|
||||
format = SNDRV_PCM_FORMAT_S16_LE;
|
||||
break;
|
||||
case 24:
|
||||
format = SNDRV_PCM_FORMAT_S24_LE;
|
||||
break;
|
||||
case 32:
|
||||
format = SNDRV_PCM_FORMAT_S32_LE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return format;
|
||||
}
|
||||
|
||||
static int msm_pcm_asm_format_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
int ret = 0;
|
||||
int fe_id = 0, mode = 0, format = 0, set = 0;
|
||||
|
||||
mutex_lock(&routing_lock);
|
||||
asm_cfg_params[0] = ucontrol->value.integer.value[0];
|
||||
asm_cfg_params[1] = ucontrol->value.integer.value[1];
|
||||
asm_cfg_params[2] = ucontrol->value.integer.value[2];
|
||||
set = ucontrol->value.integer.value[3];
|
||||
mutex_unlock(&routing_lock);
|
||||
|
||||
if(set) {
|
||||
fe_id = asm_cfg_params[0];
|
||||
mode = asm_cfg_params[1];
|
||||
format = msm_pcm_get_format(asm_cfg_params[2]);
|
||||
|
||||
pr_debug("%s: fe_id:%d, mode:%d, format:%d, set:%d\n",
|
||||
__func__,fe_id,mode,format,set);
|
||||
|
||||
if((fe_id < MSM_FRONTEND_DAI_MULTIMEDIA1) ||
|
||||
(fe_id >= MSM_FRONTEND_DAI_MAX)) {
|
||||
pr_err("%s: Received invalid fe_id %lu\n", __func__, fe_id);
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
if((mode < MSM_ASM_PLAYBACK_MODE) ||
|
||||
(mode >= MSM_ASM_MAX_MODE)) {
|
||||
pr_err("%s: Received invalid mode %lu\n", __func__, mode);
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
if((format == SNDRV_PCM_FORMAT_S16_LE) ||
|
||||
(format == SNDRV_PCM_FORMAT_S24_LE) ||
|
||||
(format == SNDRV_PCM_FORMAT_S32_LE)) {
|
||||
if(mode == MSM_ASM_PLAYBACK_MODE) {
|
||||
playback_cfg[fe_id].fe_id = fe_id;
|
||||
playback_cfg[fe_id].mode = mode;
|
||||
playback_cfg[fe_id].bit_format = format;
|
||||
} else if(mode == MSM_ASM_CAPTURE_MODE) {
|
||||
capture_cfg[fe_id].fe_id = fe_id;
|
||||
capture_cfg[fe_id].mode = mode;
|
||||
capture_cfg[fe_id].bit_format = format;
|
||||
} else if(mode == MSM_ASM_LOOPBACK_MODE) {
|
||||
loopback_cfg[fe_id].fe_id = fe_id;
|
||||
loopback_cfg[fe_id].mode = mode;
|
||||
loopback_cfg[fe_id].bit_format = format;
|
||||
}
|
||||
}else {
|
||||
pr_err("%s: Received invalid foramt %lu\n", __func__,
|
||||
asm_cfg_params[2]);
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
done:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int msm_pcm_asm_format_get(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
mutex_lock(&routing_lock);
|
||||
ucontrol->value.integer.value[0] = asm_cfg_params[0];
|
||||
ucontrol->value.integer.value[1] = asm_cfg_params[1];
|
||||
ucontrol->value.integer.value[2] = asm_cfg_params[2];
|
||||
ucontrol->value.integer.value[3] = 0;
|
||||
mutex_unlock(&routing_lock);
|
||||
|
||||
pr_debug("%s: fe_id:%d, mode:%d, format:%d, set:%d\n",__func__,
|
||||
ucontrol->value.integer.value[0],
|
||||
ucontrol->value.integer.value[1],
|
||||
ucontrol->value.integer.value[2],
|
||||
ucontrol->value.integer.value[3]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct snd_kcontrol_new msm_asm_format_controls[] = {
|
||||
SOC_SINGLE_MULTI_EXT("ASM Format", SND_SOC_NOPM,
|
||||
0, 0xFFFF, 0, 4,
|
||||
msm_pcm_asm_format_get,
|
||||
msm_pcm_asm_format_put),
|
||||
};
|
||||
|
||||
static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
|
||||
"24000", "32000", "44100", "48000", "96000", "192000", "384000"};
|
||||
|
||||
|
|
@ -43329,6 +43620,9 @@ static int msm_routing_probe(struct snd_soc_component *component)
|
|||
snd_soc_add_component_controls(component, adm_channel_config_controls,
|
||||
ARRAY_SIZE(adm_channel_config_controls));
|
||||
|
||||
snd_soc_add_component_controls(component, msm_asm_format_controls,
|
||||
ARRAY_SIZE(msm_asm_format_controls));
|
||||
|
||||
snd_soc_add_component_controls(component, aptx_dec_license_controls,
|
||||
ARRAY_SIZE(aptx_dec_license_controls));
|
||||
snd_soc_add_component_controls(component,
|
||||
|
|
|
|||
19
asoc/msm-pcm-routing-v2.h
Executable file → Normal file
19
asoc/msm-pcm-routing-v2.h
Executable file → Normal file
|
|
@ -2,6 +2,10 @@
|
|||
/* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
/*
|
||||
* Add support for 24 and 32bit format for ASM loopback and playback session.
|
||||
*/
|
||||
|
||||
#ifndef _MSM_PCM_ROUTING_H
|
||||
#define _MSM_PCM_ROUTING_H
|
||||
#include <dsp/apr_audio-v2.h>
|
||||
|
|
@ -757,6 +761,20 @@ struct msm_pcm_channel_mixer_v2 {
|
|||
int be_id;
|
||||
bool is_used;
|
||||
};
|
||||
|
||||
struct msm_asm_config {
|
||||
u8 fe_id;
|
||||
u8 mode; /* playback=0, capture=1,loopback=2 */
|
||||
u8 bit_format;
|
||||
};
|
||||
|
||||
enum {
|
||||
MSM_ASM_PLAYBACK_MODE = 0,
|
||||
MSM_ASM_CAPTURE_MODE,
|
||||
MSM_ASM_LOOPBACK_MODE,
|
||||
MSM_ASM_MAX_MODE
|
||||
};
|
||||
|
||||
/* dai_id: front-end ID,
|
||||
* dspst_id: DSP audio stream ID
|
||||
* stream_type: playback or capture
|
||||
|
|
@ -807,6 +825,7 @@ int msm_pcm_routing_set_channel_mixer_runtime(
|
|||
|
||||
int msm_pcm_routing_set_stream_ec_ref_chmix_cfg(
|
||||
int fedai_id, struct msm_pcm_channel_mixer *cfg_data);
|
||||
int msm_pcm_asm_cfg_get(int fe_id, int mode);
|
||||
|
||||
|
||||
/* array element of usr elem */
|
||||
|
|
|
|||
|
|
@ -4930,8 +4930,11 @@ static int sa6155_tdm_snd_startup(struct snd_pcm_substream *substream)
|
|||
*/
|
||||
intf_conf = &pdata->tdm_intf_conf[index];
|
||||
mutex_lock(&intf_conf->lock);
|
||||
|
||||
pr_debug("%s: intf_conf->ref_cnt = %d, index = %d\n", __func__, intf_conf->ref_cnt, index);
|
||||
|
||||
if (++intf_conf->ref_cnt == 1) {
|
||||
if (index == TDM_TERT || index == TDM_QUAT ||
|
||||
if (index == TDM_TERT || index == TDM_QUAT || index == TDM_SEC ||
|
||||
index == TDM_QUIN) {
|
||||
pinctrl_info = &pdata->pinctrl_info[index];
|
||||
if (pinctrl_info->pinctrl) {
|
||||
|
|
@ -4940,6 +4943,8 @@ static int sa6155_tdm_snd_startup(struct snd_pcm_substream *substream)
|
|||
if (ret_pinctrl)
|
||||
pr_err("%s: TDM TLMM pinctrl set failed with %d\n",
|
||||
__func__, ret_pinctrl);
|
||||
} else {
|
||||
pr_err("%s: No set_pinctrl entity for [%d]...\n", __func__, index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,19 +1,8 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
# Copyright (c) 2021, The Linux Foundation. All rights reserved.
|
||||
# Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
|
||||
ifeq ($(CONFIG_QGKI), y)
|
||||
export CONFIG_SND_SOC_GVM_AUTO_SPF=m
|
||||
export CONFIG_MSM_QDSP6_APRV2_VM=m
|
||||
export CONFIG_MSM_QDSP6_SSR=m
|
||||
export CONFIG_MSM_ADSP_LOADER=m
|
||||
export CONFIG_MSM_QDSP6_NOTIFIER=m
|
||||
export CONFIG_SND_SOC_MSM_QDSP6V2_VM=m
|
||||
export CONFIG_SND_SOC_QDSP6V2=m
|
||||
export CONFIG_QTI_PP=m
|
||||
export CONFIG_SND_HWDEP_ROUTING=m
|
||||
export CONFIG_SND_SOC_MSM_STUB=m
|
||||
export CONFIG_SND_SOC_MSM_HDMI_CODEC_RX=m
|
||||
export CONFIG_MSM_QDSP6V2_CODECS=m
|
||||
export CONFIG_SND_EVENT=m
|
||||
export CONFIG_SND_SOC_SA8155=m
|
||||
endif
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
/* Copyright (c) 2018-2019, 2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
|
@ -11,17 +12,5 @@
|
|||
*/
|
||||
|
||||
#define CONFIG_SND_SOC_GVM_AUTO_SPF 1
|
||||
#define CONFIG_MSM_QDSP6_APRV2_VM 1
|
||||
#define CONFIG_MSM_ADSP_LOADER 1
|
||||
#define CONFIG_MSM_QDSP6_SSR 1
|
||||
#define CONFIG_MSM_QDSP6_NOTIFIER 1
|
||||
#define CONFIG_SND_SOC_MSM_QDSP6V2_VM 1
|
||||
#define CONFIG_SND_SOC_QDSP6V2 1
|
||||
#define CONFIG_QTI_PP 1
|
||||
#define CONFIG_SND_HWDEP_ROUTING 1
|
||||
#define CONFIG_SND_SOC_MSM_STUB 1
|
||||
#define CONFIG_SND_SOC_MSM_HDMI_CODEC_RX 1
|
||||
#define CONFIG_MSM_QDSP6V2_CODECS 1
|
||||
#define CONFIG_SND_EVENT 1
|
||||
#define CONFIG_SND_SOC_SA8155 1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/clk.h>
|
||||
|
|
@ -33,7 +34,6 @@ int digital_cdc_rsc_mgr_hw_vote_enable(struct clk* vote_handle)
|
|||
mutex_unlock(&hw_vote_lock);
|
||||
|
||||
pr_debug("%s: return %d\n", __func__, ret);
|
||||
trace_printk("%s: return %d\n", __func__, ret);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(digital_cdc_rsc_mgr_hw_vote_enable);
|
||||
|
|
@ -55,7 +55,7 @@ void digital_cdc_rsc_mgr_hw_vote_disable(struct clk* vote_handle)
|
|||
mutex_lock(&hw_vote_lock);
|
||||
clk_disable_unprepare(vote_handle);
|
||||
mutex_unlock(&hw_vote_lock);
|
||||
trace_printk("%s\n", __func__);
|
||||
pr_debug("%s\n", __func__);
|
||||
}
|
||||
EXPORT_SYMBOL(digital_cdc_rsc_mgr_hw_vote_disable);
|
||||
|
||||
|
|
@ -79,7 +79,6 @@ void digital_cdc_rsc_mgr_hw_vote_reset(struct clk* vote_handle)
|
|||
count++;
|
||||
}
|
||||
pr_debug("%s: Vote count after SSR: %d\n", __func__, count);
|
||||
trace_printk("%s: Vote count after SSR: %d\n", __func__, count);
|
||||
|
||||
while (count--)
|
||||
clk_prepare_enable(vote_handle);
|
||||
|
|
|
|||
35
dsp/q6afe.c
35
dsp/q6afe.c
|
|
@ -1499,8 +1499,6 @@ static int afe_apr_send_pkt(void *data, wait_queue_head_t *wait)
|
|||
pr_err_ratelimited("%s: request timedout\n",
|
||||
__func__);
|
||||
ret = -ETIMEDOUT;
|
||||
trace_printk("%s: wait for ADSP response timed out\n",
|
||||
__func__);
|
||||
} else if (atomic_read(&this_afe.status) > 0) {
|
||||
pr_err("%s: DSP returned error[%s]\n", __func__,
|
||||
adsp_err_get_err_str(atomic_read(
|
||||
|
|
@ -3348,8 +3346,6 @@ int afe_send_port_power_mode(u16 port_id)
|
|||
}
|
||||
pr_debug("%s: AFE set power mode 0x%x enable for port 0x%x ret %d\n",
|
||||
__func__, power_mode, port_id, ret);
|
||||
trace_printk("%s: AFE set power mode 0x%x enable for port 0x%x ret %d\n",
|
||||
__func__, power_mode, port_id, ret);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(afe_send_port_power_mode);
|
||||
|
|
@ -3425,8 +3421,6 @@ int afe_send_port_island_mode(u16 port_id)
|
|||
}
|
||||
pr_debug("%s: AFE set island mode 0x%x enable for port 0x%x ret %d\n",
|
||||
__func__, island_mode, port_id, ret);
|
||||
trace_printk("%s: AFE set island mode 0x%x enable for port 0x%x ret %d\n",
|
||||
__func__, island_mode, port_id, ret);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(afe_send_port_island_mode);
|
||||
|
|
@ -4775,9 +4769,6 @@ void afe_set_island_mode_cfg(u16 port_id, u32 enable_flag)
|
|||
} else {
|
||||
port_index = afe_get_port_index(port_id);
|
||||
this_afe.island_mode[port_index] = enable_flag;
|
||||
|
||||
trace_printk("%s: set island mode cfg 0x%x for port 0x%x\n",
|
||||
__func__, this_afe.island_mode[port_index], port_id);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(afe_set_island_mode_cfg);
|
||||
|
|
@ -4825,8 +4816,6 @@ int afe_set_power_mode_cfg(u16 port_id, u32 enable_flag)
|
|||
}
|
||||
this_afe.power_mode[port_index] = enable_flag;
|
||||
|
||||
trace_printk("%s: set power mode cfg 0x%x for port 0x%x\n",
|
||||
__func__, this_afe.power_mode[port_index], port_id);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(afe_set_power_mode_cfg);
|
||||
|
|
@ -9556,15 +9545,6 @@ int afe_set_lpass_clock(u16 port_id, struct afe_clk_cfg *cfg)
|
|||
cfg->clk_root, cfg->clk_set_mode,
|
||||
cfg->reserved, q6audio_get_port_id(port_id));
|
||||
|
||||
trace_printk("%s: Minor version =0x%x clk val1 = %d\n"
|
||||
"clk val2 = %d, clk src = 0x%x\n"
|
||||
"clk root = 0x%x clk mode = 0x%x resrv = 0x%x\n"
|
||||
"port id = 0x%x\n",
|
||||
__func__, cfg->i2s_cfg_minor_version,
|
||||
cfg->clk_val1, cfg->clk_val2, cfg->clk_src,
|
||||
cfg->clk_root, cfg->clk_set_mode,
|
||||
cfg->reserved, q6audio_get_port_id(port_id));
|
||||
|
||||
ret = q6afe_pack_and_set_param_in_band(port_id,
|
||||
q6audio_get_port_index(port_id),
|
||||
param_hdr, (u8 *) &clk_cfg);
|
||||
|
|
@ -9976,21 +9956,12 @@ int afe_set_lpass_clk_cfg(int index, struct afe_clk_set *cfg)
|
|||
cfg->clk_id, cfg->clk_freq_in_hz, cfg->clk_attri,
|
||||
cfg->clk_root, cfg->enable);
|
||||
|
||||
trace_printk("%s: Minor version =0x%x clk id = %d\n"
|
||||
"clk freq (Hz) = %d, clk attri = 0x%x\n"
|
||||
"clk root = 0x%x clk enable = 0x%x\n",
|
||||
__func__, cfg->clk_set_minor_version,
|
||||
cfg->clk_id, cfg->clk_freq_in_hz, cfg->clk_attri,
|
||||
cfg->clk_root, cfg->enable);
|
||||
|
||||
ret = q6afe_svc_pack_and_set_param_in_band(index, param_hdr,
|
||||
(u8 *) cfg);
|
||||
if (ret < 0) {
|
||||
if (__ratelimit(&rtl))
|
||||
pr_err_ratelimited("%s: AFE clk cfg failed with ret %d\n",
|
||||
__func__, ret);
|
||||
trace_printk("%s: AFE clk cfg failed with ret %d\n",
|
||||
__func__, ret);
|
||||
}
|
||||
mutex_unlock(&this_afe.afe_clk_lock);
|
||||
return ret;
|
||||
|
|
@ -12054,8 +12025,6 @@ int afe_vote_lpass_core_hw(uint32_t hw_block_id, char *client_name,
|
|||
pr_debug("%s: lpass core hw vote opcode[0x%x] hw id[0x%x]\n",
|
||||
__func__, cmd_ptr->hdr.opcode, cmd_ptr->hw_block_id);
|
||||
|
||||
trace_printk("%s: lpass core hw vote opcode[0x%x] hw id[0x%x]\n",
|
||||
__func__, cmd_ptr->hdr.opcode, cmd_ptr->hw_block_id);
|
||||
*client_handle = 0;
|
||||
|
||||
ret = afe_apr_send_clk_pkt((uint32_t *)cmd_ptr,
|
||||
|
|
@ -12095,7 +12064,6 @@ int afe_unvote_lpass_core_hw(uint32_t hw_block_id, uint32_t client_handle)
|
|||
|
||||
if (!this_afe.lpass_hw_core_client_hdl[hw_block_id]) {
|
||||
pr_debug("%s: SSR in progress, return\n", __func__);
|
||||
trace_printk("%s: SSR in progress, return\n", __func__);
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
|
@ -12115,9 +12083,6 @@ int afe_unvote_lpass_core_hw(uint32_t hw_block_id, uint32_t client_handle)
|
|||
pr_debug("%s: lpass core hw unvote opcode[0x%x] hw id[0x%x]\n",
|
||||
__func__, cmd_ptr->hdr.opcode, cmd_ptr->hw_block_id);
|
||||
|
||||
trace_printk("%s: lpass core hw unvote opcode[0x%x] hw id[0x%x]\n",
|
||||
__func__, cmd_ptr->hdr.opcode, cmd_ptr->hw_block_id);
|
||||
|
||||
if (cmd_ptr->client_handle <= 0) {
|
||||
pr_err("%s: invalid client handle\n", __func__);
|
||||
ret = -EINVAL;
|
||||
|
|
|
|||
|
|
@ -520,7 +520,6 @@ int lpi_pinctrl_suspend(struct device *dev)
|
|||
{
|
||||
int ret = 0;
|
||||
|
||||
trace_printk("%s: system suspend\n", __func__);
|
||||
dev_dbg(dev, "%s: system suspend\n", __func__);
|
||||
|
||||
if ((!pm_runtime_enabled(dev) || !pm_runtime_suspended(dev))) {
|
||||
|
|
@ -557,7 +556,6 @@ static struct notifier_block service_nb = {
|
|||
|
||||
static void lpi_pinctrl_ssr_disable(struct device *dev, void *data)
|
||||
{
|
||||
trace_printk("%s: enter\n", __func__);
|
||||
lpi_dev_up = false;
|
||||
lpi_pinctrl_suspend(dev);
|
||||
}
|
||||
|
|
@ -882,7 +880,6 @@ int lpi_pinctrl_runtime_resume(struct device *dev)
|
|||
int ret = 0;
|
||||
struct clk *hw_vote = state->lpass_core_hw_vote;
|
||||
|
||||
trace_printk("%s: enter\n", __func__);
|
||||
if (state->lpass_core_hw_vote == NULL) {
|
||||
dev_dbg(dev, "%s: Invalid core hw node\n", __func__);
|
||||
if (state->lpass_audio_hw_vote == NULL) {
|
||||
|
|
@ -908,7 +905,6 @@ int lpi_pinctrl_runtime_resume(struct device *dev)
|
|||
|
||||
exit:
|
||||
mutex_unlock(&state->core_hw_vote_lock);
|
||||
trace_printk("%s: exit\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -917,7 +913,6 @@ int lpi_pinctrl_runtime_suspend(struct device *dev)
|
|||
struct lpi_gpio_state *state = dev_get_drvdata(dev);
|
||||
struct clk *hw_vote = state->lpass_core_hw_vote;
|
||||
|
||||
trace_printk("%s: enter\n", __func__);
|
||||
if (state->lpass_core_hw_vote == NULL) {
|
||||
dev_dbg(dev, "%s: Invalid core hw node\n", __func__);
|
||||
if (state->lpass_audio_hw_vote == NULL) {
|
||||
|
|
@ -933,7 +928,6 @@ int lpi_pinctrl_runtime_suspend(struct device *dev)
|
|||
state->core_hw_vote_status = false;
|
||||
}
|
||||
mutex_unlock(&state->core_hw_vote_lock);
|
||||
trace_printk("%s: exit\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -421,8 +421,6 @@ static int swrm_request_hw_vote(struct swr_mstr_ctrl *swrm,
|
|||
if (!swrm->dev_up) {
|
||||
dev_dbg(swrm->dev, "%s: device is down or SSR state\n",
|
||||
__func__);
|
||||
trace_printk("%s: device is down or SSR state\n",
|
||||
__func__);
|
||||
mutex_unlock(&swrm->devlock);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
|
@ -453,8 +451,6 @@ static int swrm_request_hw_vote(struct swr_mstr_ctrl *swrm,
|
|||
if (!swrm->dev_up) {
|
||||
dev_dbg(swrm->dev, "%s: device is down or SSR state\n",
|
||||
__func__);
|
||||
trace_printk("%s: device is down or SSR state\n",
|
||||
__func__);
|
||||
mutex_unlock(&swrm->devlock);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
|
@ -483,8 +479,6 @@ static int swrm_request_hw_vote(struct swr_mstr_ctrl *swrm,
|
|||
mutex_unlock(&swrm->devlock);
|
||||
dev_dbg(swrm->dev, "%s: hw_clk_en: %d audio_core_clk_en: %d\n",
|
||||
__func__, swrm->hw_core_clk_en, swrm->aud_core_clk_en);
|
||||
trace_printk("%s: hw_clk_en: %d audio_core_clk_en: %d\n",
|
||||
__func__, swrm->hw_core_clk_en, swrm->aud_core_clk_en);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -550,8 +544,6 @@ static int swrm_clk_request(struct swr_mstr_ctrl *swrm, bool enable)
|
|||
}
|
||||
swrm->clk_ref_count++;
|
||||
if (swrm->clk_ref_count == 1) {
|
||||
trace_printk("%s: clock enable count %d",
|
||||
__func__, swrm->clk_ref_count);
|
||||
ret = swrm->clk(swrm->handle, true);
|
||||
if (ret) {
|
||||
dev_err_ratelimited(swrm->dev,
|
||||
|
|
@ -561,8 +553,6 @@ static int swrm_clk_request(struct swr_mstr_ctrl *swrm, bool enable)
|
|||
}
|
||||
}
|
||||
} else if (--swrm->clk_ref_count == 0) {
|
||||
trace_printk("%s: clock disable count %d",
|
||||
__func__, swrm->clk_ref_count);
|
||||
swrm->clk(swrm->handle, false);
|
||||
complete(&swrm->clk_off_complete);
|
||||
}
|
||||
|
|
@ -984,6 +974,7 @@ static int swrm_cmd_fifo_wr_cmd(struct swr_mstr_ctrl *swrm, u8 cmd_data,
|
|||
* Check for outstanding cmd wrt. write fifo depth to avoid
|
||||
* overflow.
|
||||
*/
|
||||
usleep_range(500, 550);
|
||||
swrm_wait_for_fifo_avail(swrm, SWRM_WR_CHECK_AVAIL);
|
||||
swr_master_write(swrm, SWRM_CMD_FIFO_WR_CMD, val);
|
||||
/*
|
||||
|
|
@ -2010,7 +2001,6 @@ static irqreturn_t swr_mstr_interrupt(int irq, void *dev)
|
|||
struct swr_master *mstr = &swrm->master;
|
||||
int retry = 5;
|
||||
|
||||
trace_printk("%s enter\n", __func__);
|
||||
if (unlikely(swrm_lock_sleep(swrm) == false)) {
|
||||
dev_err(swrm->dev, "%s Failed to hold suspend\n", __func__);
|
||||
return IRQ_NONE;
|
||||
|
|
@ -2037,7 +2027,6 @@ static irqreturn_t swr_mstr_interrupt(int irq, void *dev)
|
|||
intr_sts_masked = intr_sts & swrm->intr_mask;
|
||||
|
||||
dev_dbg(swrm->dev, "%s: status: 0x%x \n", __func__, intr_sts_masked);
|
||||
trace_printk("%s: status: 0x%x \n", __func__, intr_sts_masked);
|
||||
handle_irq:
|
||||
for (i = 0; i < SWRM_INTERRUPT_MAX; i++) {
|
||||
value = intr_sts_masked & (1 << i);
|
||||
|
|
@ -2254,7 +2243,6 @@ err_audio_hw_vote:
|
|||
exit:
|
||||
mutex_unlock(&swrm->reslock);
|
||||
swrm_unlock_sleep(swrm);
|
||||
trace_printk("%s exit\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -2268,7 +2256,6 @@ static irqreturn_t swrm_wakeup_interrupt(int irq, void *dev)
|
|||
return IRQ_NONE;
|
||||
}
|
||||
|
||||
trace_printk("%s enter\n", __func__);
|
||||
mutex_lock(&swrm->devlock);
|
||||
if (swrm->state == SWR_MSTR_SSR || !swrm->dev_up) {
|
||||
if (swrm->wake_irq > 0) {
|
||||
|
|
@ -2307,7 +2294,6 @@ static irqreturn_t swrm_wakeup_interrupt(int irq, void *dev)
|
|||
pm_runtime_put_autosuspend(swrm->dev);
|
||||
swrm_unlock_sleep(swrm);
|
||||
exit:
|
||||
trace_printk("%s exit\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -2322,7 +2308,6 @@ static void swrm_wakeup_work(struct work_struct *work)
|
|||
return;
|
||||
}
|
||||
|
||||
trace_printk("%s enter\n", __func__);
|
||||
mutex_lock(&swrm->devlock);
|
||||
if (!swrm->dev_up) {
|
||||
mutex_unlock(&swrm->devlock);
|
||||
|
|
@ -2338,7 +2323,6 @@ static void swrm_wakeup_work(struct work_struct *work)
|
|||
pm_runtime_put_autosuspend(swrm->dev);
|
||||
swrm_unlock_sleep(swrm);
|
||||
exit:
|
||||
trace_printk("%s exit\n", __func__);
|
||||
pm_relax(swrm->dev);
|
||||
}
|
||||
|
||||
|
|
@ -3106,8 +3090,6 @@ static int swrm_runtime_resume(struct device *dev)
|
|||
|
||||
dev_dbg(dev, "%s: pm_runtime: resume, state:%d\n",
|
||||
__func__, swrm->state);
|
||||
trace_printk("%s: pm_runtime: resume, state:%d\n",
|
||||
__func__, swrm->state);
|
||||
mutex_lock(&swrm->reslock);
|
||||
|
||||
if (swrm_request_hw_vote(swrm, LPASS_HW_CORE, true)) {
|
||||
|
|
@ -3164,9 +3146,6 @@ static int swrm_runtime_resume(struct device *dev)
|
|||
dev_dbg(dev,
|
||||
"%s slave device up not implemented\n",
|
||||
__func__);
|
||||
trace_printk(
|
||||
"%s slave device up not implemented\n",
|
||||
__func__);
|
||||
ret = 0;
|
||||
} else if (ret) {
|
||||
dev_err(dev,
|
||||
|
|
@ -3231,8 +3210,6 @@ exit:
|
|||
swrm->req_clk_switch = false;
|
||||
mutex_unlock(&swrm->reslock);
|
||||
|
||||
trace_printk("%s: pm_runtime: resume done, state:%d\n",
|
||||
__func__, swrm->state);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -3247,8 +3224,6 @@ static int swrm_runtime_suspend(struct device *dev)
|
|||
int current_state = 0;
|
||||
struct irq_data *irq_data = NULL;
|
||||
|
||||
trace_printk("%s: pm_runtime: suspend state: %d\n",
|
||||
__func__, swrm->state);
|
||||
dev_dbg(dev, "%s: pm_runtime: suspend state: %d\n",
|
||||
__func__, swrm->state);
|
||||
if (swrm->state == SWR_MSTR_SSR_RESET) {
|
||||
|
|
@ -3274,7 +3249,6 @@ static int swrm_runtime_suspend(struct device *dev)
|
|||
if ((current_state != SWR_MSTR_SSR) &&
|
||||
swrm_is_port_en(&swrm->master)) {
|
||||
dev_dbg(dev, "%s ports are enabled\n", __func__);
|
||||
trace_printk("%s ports are enabled\n", __func__);
|
||||
ret = -EBUSY;
|
||||
goto exit;
|
||||
}
|
||||
|
|
@ -3292,22 +3266,14 @@ static int swrm_runtime_suspend(struct device *dev)
|
|||
dev_dbg_ratelimited(dev,
|
||||
"%s slave device down not implemented\n",
|
||||
__func__);
|
||||
trace_printk(
|
||||
"%s slave device down not implemented\n",
|
||||
__func__);
|
||||
ret = 0;
|
||||
} else if (ret) {
|
||||
dev_err(dev,
|
||||
"%s: failed to shutdown swr dev %d\n",
|
||||
__func__, swr_dev->dev_num);
|
||||
trace_printk(
|
||||
"%s: failed to shutdown swr dev %d\n",
|
||||
__func__, swr_dev->dev_num);
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
trace_printk("%s: clk stop mode not supported or SSR exit\n",
|
||||
__func__);
|
||||
} else {
|
||||
/* Mask bus clash interrupt */
|
||||
swrm->intr_mask &= ~((u32)0x08);
|
||||
|
|
@ -3361,8 +3327,6 @@ exit:
|
|||
if (!hw_core_err)
|
||||
swrm_request_hw_vote(swrm, LPASS_HW_CORE, false);
|
||||
mutex_unlock(&swrm->reslock);
|
||||
trace_printk("%s: pm_runtime: suspend done state: %d\n",
|
||||
__func__, swrm->state);
|
||||
return ret;
|
||||
}
|
||||
#endif /* CONFIG_PM */
|
||||
|
|
@ -3374,7 +3338,6 @@ static int swrm_device_suspend(struct device *dev)
|
|||
int ret = 0;
|
||||
|
||||
dev_dbg(dev, "%s: swrm state: %d\n", __func__, swrm->state);
|
||||
trace_printk("%s: swrm state: %d\n", __func__, swrm->state);
|
||||
if (!pm_runtime_enabled(dev) || !pm_runtime_suspended(dev)) {
|
||||
ret = swrm_runtime_suspend(dev);
|
||||
if (!ret) {
|
||||
|
|
@ -3393,7 +3356,6 @@ static int swrm_device_down(struct device *dev)
|
|||
struct swr_mstr_ctrl *swrm = platform_get_drvdata(pdev);
|
||||
|
||||
dev_dbg(dev, "%s: swrm state: %d\n", __func__, swrm->state);
|
||||
trace_printk("%s: swrm state: %d\n", __func__, swrm->state);
|
||||
|
||||
mutex_lock(&swrm->force_down_lock);
|
||||
swrm->state = SWR_MSTR_SSR;
|
||||
|
|
@ -3571,7 +3533,6 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data)
|
|||
}
|
||||
break;
|
||||
case SWR_DEVICE_SSR_DOWN:
|
||||
trace_printk("%s: swr device down called\n", __func__);
|
||||
mutex_lock(&swrm->mlock);
|
||||
if (swrm->state == SWR_MSTR_DOWN)
|
||||
dev_dbg(swrm->dev, "%s:SWR master is already Down:%d\n",
|
||||
|
|
@ -3590,7 +3551,6 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data)
|
|||
break;
|
||||
case SWR_DEVICE_SSR_UP:
|
||||
/* wait for clk voting to be zero */
|
||||
trace_printk("%s: swr device up called\n", __func__);
|
||||
reinit_completion(&swrm->clk_off_complete);
|
||||
if (swrm->clk_ref_count &&
|
||||
!wait_for_completion_timeout(&swrm->clk_off_complete,
|
||||
|
|
@ -3616,7 +3576,6 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data)
|
|||
break;
|
||||
case SWR_DEVICE_DOWN:
|
||||
dev_dbg(swrm->dev, "%s: swr master down called\n", __func__);
|
||||
trace_printk("%s: swr master down called\n", __func__);
|
||||
mutex_lock(&swrm->mlock);
|
||||
if (swrm->state == SWR_MSTR_DOWN)
|
||||
dev_dbg(swrm->dev, "%s:SWR master is already Down:%d\n",
|
||||
|
|
@ -3627,7 +3586,6 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data)
|
|||
break;
|
||||
case SWR_DEVICE_UP:
|
||||
dev_dbg(swrm->dev, "%s: swr master up called\n", __func__);
|
||||
trace_printk("%s: swr master up called\n", __func__);
|
||||
mutex_lock(&swrm->devlock);
|
||||
if (!swrm->dev_up) {
|
||||
dev_dbg(swrm->dev, "SSR not complete yet\n");
|
||||
|
|
|
|||
Loading…
Reference in a new issue