Merge "asoc: codecs: Update va_macro fix for SVA for bolero 2.1"
diff --git a/asoc/codecs/bolero/tx-macro.c b/asoc/codecs/bolero/tx-macro.c
index a9efa30..be98f03 100644
--- a/asoc/codecs/bolero/tx-macro.c
+++ b/asoc/codecs/bolero/tx-macro.c
@@ -2330,7 +2330,8 @@
"%s: priv is null for macro!\n", __func__);
return -EINVAL;
}
- if (tx_priv->swr_ctrl_data && !tx_priv->tx_swr_clk_cnt) {
+ if (tx_priv->swr_ctrl_data &&
+ (!tx_priv->tx_swr_clk_cnt || !tx_priv->va_swr_clk_cnt)) {
if (enable) {
ret = swrm_wcd_notify(
tx_priv->swr_ctrl_data[0].tx_swr_pdev,
@@ -2711,7 +2712,7 @@
}
static const struct tx_macro_reg_mask_val tx_macro_reg_init[] = {
- {BOLERO_CDC_TX0_TX_PATH_SEC7, 0x3F, 0x02},
+ {BOLERO_CDC_TX0_TX_PATH_SEC7, 0x3F, 0x0A},
};
static int tx_macro_init(struct snd_soc_component *component)
diff --git a/asoc/codecs/wcd-mbhc-v2.c b/asoc/codecs/wcd-mbhc-v2.c
index fd55715..f0c0ce7 100644
--- a/asoc/codecs/wcd-mbhc-v2.c
+++ b/asoc/codecs/wcd-mbhc-v2.c
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only
-/* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
*/
#include <linux/module.h>
#include <linux/init.h>
@@ -732,6 +732,10 @@
mbhc->hph_status |= jack_type;
+ if (jack_type == SND_JACK_HEADPHONE &&
+ mbhc->mbhc_cb->mbhc_micb_ramp_control)
+ mbhc->mbhc_cb->mbhc_micb_ramp_control(component, false);
+
pr_debug("%s: Reporting insertion %d(%x)\n", __func__,
jack_type, mbhc->hph_status);
wcd_mbhc_jack_report(mbhc, &mbhc->headset_jack,
@@ -922,6 +926,10 @@
else
pr_info("%s: hs_detect_plug work not cancelled\n", __func__);
+ /* Enable micbias ramp */
+ if (mbhc->mbhc_cb->mbhc_micb_ramp_control)
+ mbhc->mbhc_cb->mbhc_micb_ramp_control(component, true);
+
if (mbhc->mbhc_cb->micbias_enable_status)
micbias1 = mbhc->mbhc_cb->micbias_enable_status(mbhc,
MIC_BIAS_1);
@@ -1417,9 +1425,6 @@
/* Button Debounce set to 16ms */
WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_BTN_DBNC, 2);
- /* Enable micbias ramp */
- if (mbhc->mbhc_cb->mbhc_micb_ramp_control)
- mbhc->mbhc_cb->mbhc_micb_ramp_control(component, true);
/* enable bias */
mbhc->mbhc_cb->mbhc_bias(component, true);
/* enable MBHC clock */
diff --git a/asoc/codecs/wcd938x/wcd938x.c b/asoc/codecs/wcd938x/wcd938x.c
index 191db8d..faa264f 100644
--- a/asoc/codecs/wcd938x/wcd938x.c
+++ b/asoc/codecs/wcd938x/wcd938x.c
@@ -265,6 +265,9 @@
WCD938X_MICB4_TEST_CTL_1, 0xE0, 0xE0);
snd_soc_component_update_bits(component,
WCD938X_TX_3_4_TEST_BLK_EN2, 0x01, 0x00);
+ snd_soc_component_update_bits(component, WCD938X_SLEEP_CTL, 0x0E,
+ ((snd_soc_component_read32(component,
+ WCD938X_DIGITAL_EFUSE_REG_30) & 0x07) << 1));
return 0;
}
diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c
index 2c7bcba..39ed0d5 100644
--- a/asoc/msm-pcm-routing-v2.c
+++ b/asoc/msm-pcm-routing-v2.c
@@ -22974,6 +22974,9 @@
.info = msm_source_tracking_info,
.get = msm_audio_source_tracking_get,
},
+};
+
+static const struct snd_kcontrol_new msm_source_doa_tracking_controls[] = {
{
.access = SNDRV_CTL_ELEM_ACCESS_READ,
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -29716,6 +29719,20 @@
.prepare = msm_pcm_routing_prepare,
};
+#ifdef CONFIG_DOA_PARAMS_ENABLED
+void msm_routing_add_doa_control(struct snd_soc_component *component)
+{
+ snd_soc_add_component_controls(component,
+ msm_source_doa_tracking_controls,
+ ARRAY_SIZE(msm_source_doa_tracking_controls));
+}
+#else
+void msm_routing_add_doa_control(struct snd_soc_component *component)
+{
+ return;
+}
+#endif
+
/* Not used but frame seems to require it */
static int msm_routing_probe(struct snd_soc_component *component)
{
@@ -29785,6 +29802,8 @@
msm_routing_be_dai_name_table_mixer_controls,
ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
+ /* Add doa control based on config */
+ msm_routing_add_doa_control(component);
snd_soc_add_component_controls(component, msm_source_tracking_controls,
ARRAY_SIZE(msm_source_tracking_controls));
snd_soc_add_component_controls(component, adm_channel_config_controls,
diff --git a/asoc/sa6155.c b/asoc/sa6155.c
index a69005c..d242738 100644
--- a/asoc/sa6155.c
+++ b/asoc/sa6155.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2014-2020, The Linux Foundation. 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
@@ -266,7 +266,7 @@
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_7 */
},
{ /* QUAT TDM */
- {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 16}, /* TX_0 */
+ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 8}, /* TX_0 */
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_1 */
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_2 */
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_3 */
@@ -469,8 +469,7 @@
{28, 0xFFFF},
},
{/* QUAT TDM */
- {0, 4, 8, 12, 16, 20, 24, 28,
- 32, 36, 40, 44, 48, 52, 56, 60, 0xFFFF},/*MIC ARR*/
+ {0, 8, 16, 24, 4, 12, 20, 28, 0xFFFF}, /*8 CH MIC ARR*/
{0xFFFF}, /* not used */
{0xFFFF}, /* not used */
{0xFFFF}, /* not used */
diff --git a/asoc/sa8155.c b/asoc/sa8155.c
index 17cc775..2e54447 100644
--- a/asoc/sa8155.c
+++ b/asoc/sa8155.c
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only
-/* Copyright (c) 2014-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2014-2020, The Linux Foundation. All rights reserved.
*/
/*
* Copyright 2011, The Android Open Source Project
@@ -258,7 +258,7 @@
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_7 */
},
{ /* QUAT TDM */
- {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 16}, /* TX_0 */
+ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 8}, /* TX_0 */
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_1 */
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_2 */
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_3 */
@@ -268,7 +268,7 @@
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_7 */
},
{ /* QUIN TDM */
- {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 16}, /* TX_0 */
+ {SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 8}, /* TX_0 */
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_1 */
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_2 */
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_3 */
@@ -417,8 +417,8 @@
{60,0xFFFF},
},
{/* QUIN TDM */
- {0, 8, 16, 24, 32, 40, 48, 56,
- 4, 12, 20, 28, 36, 44, 52, 60, 0xFFFF}, /*16 CH SPKR*/
+ {0, 4, 8, 12, 16, 20, 24, 28,
+ 32, 36, 40, 44, 48, 52, 56, 60, 0xFFFF}, /*16 CH SPKR*/
{0xFFFF}, /* not used */
{0xFFFF}, /* not used */
{0xFFFF}, /* not used */
@@ -462,8 +462,7 @@
{28, 0xFFFF},
},
{/* QUAT TDM */
- {0, 4, 8, 12, 16, 20, 24, 28,
- 32, 36, 40, 44, 48, 52, 56, 60, 0xFFFF},/*16 CH MIC ARR1*/
+ {0, 8, 16, 24, 4, 12, 20, 28, 0xFFFF}, /*8 CH MIC ARR1*/
{0xFFFF}, /* not used */
{0xFFFF}, /* not used */
{0xFFFF}, /* not used */
@@ -473,8 +472,7 @@
{60,0xFFFF},
},
{/* QUIN TDM */
- {0, 4, 8, 12, 16, 20, 24, 28,
- 32, 36, 40, 44, 48, 52, 56, 60, 0xFFFF},/*16 CH MIC ARR2*/
+ {0, 4, 8, 12, 16, 20, 24, 28, 0xFFFF}, /*8 CH MIC ARR2*/
{0xFFFF}, /* not used */
{0xFFFF}, /* not used */
{0xFFFF}, /* not used */
diff --git a/dsp/q6adm.c b/dsp/q6adm.c
index 7dfb35c..9a4a7f9 100644
--- a/dsp/q6adm.c
+++ b/dsp/q6adm.c
@@ -1,6 +1,6 @@
// 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/module.h>
#include <linux/slab.h>
@@ -513,6 +513,17 @@
pr_err("%s: Invalid port_id %#x\n", __func__, port_id);
return -EINVAL;
}
+
+ /*
+ * check if PSPD is already configured
+ * if it is configured already, return 0 without applying PSPD.
+ */
+ if (atomic_read(&this_adm.copp.cnt[port_idx][copp_idx]) > 1) {
+ pr_debug("%s: copp.cnt:%#x\n", __func__,
+ atomic_read(&this_adm.copp.cnt[port_idx][copp_idx]));
+ return 0;
+ }
+
/*
* First 8 bytes are 4 bytes as rule number, 2 bytes as output
* channel and 2 bytes as input channel.