Merge 5be9ed037a on remote branch

Change-Id: I531284bb3f046870a309a4654a8245ad36e5acd7
This commit is contained in:
Linux Build Service Account 2022-10-07 02:59:54 -07:00
commit 3775ffedb5
9 changed files with 144 additions and 66 deletions

View File

@ -186,7 +186,7 @@ ifdef CONFIG_SND_SOC_SA8155
MACHINE_OBJS += sa8155.o
endif
# for gvmgh sound card driver
# for gvm sound card driver
ifdef CONFIG_SND_SOC_GVM_AUTO_SPF
SPF_MACHINE_OBJS += gvm_auto_spf_dummy.o
endif

View File

@ -2961,6 +2961,8 @@ static void wcd937x_soc_codec_remove(struct snd_soc_component *component)
wcd937x->register_notifier(wcd937x->handle,
&wcd937x->nblock,
false);
wcd937x_mbhc_deinit(component);
return;
}

View File

@ -3961,6 +3961,7 @@ static void wcd938x_soc_codec_remove(struct snd_soc_component *component)
wcd938x->register_notifier(wcd938x->handle,
&wcd938x->nblock,
false);
wcd938x_mbhc_deinit(component);
}
static int wcd938x_soc_codec_suspend(struct snd_soc_component *component)

View File

@ -19,6 +19,7 @@
#include <linux/slab.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/miscdevice.h>
#include <linux/input.h>
#include <linux/of_device.h>
#include <linux/pm_qos.h>
@ -30,8 +31,6 @@
#include <sound/info.h>
#include <dsp/audio_notifier.h>
#include "msm_dailink.h"
#include <soc/qcom/subsystem_restart.h>
#include <soc/qcom/subsystem_notif.h>
#include <soc/qcom/boot_stats.h>
@ -324,7 +323,7 @@ static struct snd_soc_dai_link msm_common_dai_links[] = {
},
};
static struct snd_soc_dai_link msm_gvm8295_dai_links[] = {
static struct snd_soc_dai_link msm_gvm_auto_dai_links[] = {
/* BackEnd DAI Links */
{
.name = "PRI_TDM_RX_0_DUMMY",
@ -467,6 +466,26 @@ static struct snd_soc_dai_link msm_gvm8295_dai_links[] = {
SND_SOC_DAILINK_REG(sep_tdm_tx_0_dummy),
},
{
.name = "OCT_TDM_RX_0_DUMMY",
.stream_name = "TDM-LPAIF_WSA2-RX-PRIMARY",
.dpcm_playback = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(oct_tdm_rx_0_dummy),
},
{
.name = "OCT_TDM_TX_0_DUMMY",
.stream_name = "TDM-LPAIF_WSA2-TX-PRIMARY",
.dpcm_capture = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(oct_tdm_tx_0_dummy),
},
{
.name = "HS_IF0_TDM_RX_0_DUMMY",
.stream_name = "TDM-LPAIF_SDR-RX-PRIMARY",
.dpcm_playback = 1,
@ -526,6 +545,46 @@ static struct snd_soc_dai_link msm_gvm8295_dai_links[] = {
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(hs_if2_tdm_tx_0_dummy),
},
{
.name = "HS_IF3_TDM_RX_0",
.stream_name = "TDM-LPAIF_SDR-RX-QUATERNARY",
.dpcm_playback = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(hs_if3_tdm_rx_0_dummy),
},
{
.name = "HS_IF3_TDM_TX_0",
.stream_name = "TDM-LPAIF_SDR-TX-QUATERNARY",
.dpcm_capture = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(hs_if3_tdm_tx_0_dummy),
},
{
.name = "HS_IF4_TDM_RX_0",
.stream_name = "TDM-LPAIF_SDR-RX-QUINARY",
.dpcm_playback = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(hs_if4_tdm_rx_0_dummy),
},
{
.name = "HS_IF4_TDM_TX_0",
.stream_name = "TDM-LPAIF_SDR-TX-QUINARY",
.dpcm_capture = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(hs_if4_tdm_tx_0_dummy),
},
};
static struct snd_soc_dai_link msm_talos_dai_links[] = {
@ -632,17 +691,7 @@ static struct snd_soc_dai_link msm_talos_dai_links[] = {
},
};
struct snd_soc_card snd_soc_card_auto_hana_dummy_msm = {
.name = "gvmauto-8155-snd-card",
};
struct snd_soc_card snd_soc_card_auto_talos_dummy_msm = {
.name = "gvmauto-6155-snd-card",
};
struct snd_soc_card snd_soc_card_auto_makena_dummy_msm = {
.name = "gvmauto-8295-snd-card",
};
struct snd_soc_card snd_soc_card_gvm_auto_dummy_msm;
static int msm_populate_dai_link_component_of_node(
struct snd_soc_card *card)
@ -751,21 +800,11 @@ static const struct of_device_id gvm_asoc_machine_of_match[] = {
.data = "adp_star_codec"},
{},
};
static struct snd_soc_dai_link msm_auto_dai_links[
ARRAY_SIZE(msm_common_dai_links)];
static struct snd_soc_dai_link msm_auto_talos_dai_links[
ARRAY_SIZE(msm_talos_dai_links)];
static struct snd_soc_dai_link msm_auto_gvm8295_dai_links[
ARRAY_SIZE(msm_gvm8295_dai_links)];
static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev)
{
struct snd_soc_card *card = NULL;
struct snd_soc_dai_link *dailink;
int total_links;
const struct of_device_id *match;
const struct of_device_id *match = NULL;
match = of_match_node(gvm_asoc_machine_of_match, dev->of_node);
if (!match) {
@ -774,34 +813,18 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev)
return NULL;
}
card = &snd_soc_card_gvm_auto_dummy_msm;
if (!strcmp(match->compatible, "qcom,8155-spf-asoc-snd-adp-star")) {
card = &snd_soc_card_auto_hana_dummy_msm;
total_links = ARRAY_SIZE(msm_common_dai_links);
memcpy(msm_auto_dai_links,
msm_common_dai_links,
sizeof(msm_common_dai_links));
dailink = msm_auto_dai_links;
card->dai_link = msm_common_dai_links;
card->num_links = ARRAY_SIZE(msm_common_dai_links);
} else if (!strcmp(match->compatible, "qcom,6155-spf-asoc-snd-adp-star")) {
card = &snd_soc_card_auto_talos_dummy_msm;
total_links = ARRAY_SIZE(msm_talos_dai_links);
memcpy(msm_auto_talos_dai_links,
msm_talos_dai_links,
sizeof(msm_talos_dai_links));
dailink = msm_auto_talos_dai_links;
card->dai_link = msm_talos_dai_links;
card->num_links = ARRAY_SIZE(msm_talos_dai_links);
} else if (!strcmp(match->compatible, "qcom,gvm-auto-spf-asoc-snd-adp-star")) {
card = &snd_soc_card_auto_makena_dummy_msm;
total_links = ARRAY_SIZE(msm_gvm8295_dai_links);
memcpy(msm_auto_gvm8295_dai_links,
msm_gvm8295_dai_links,
sizeof(msm_gvm8295_dai_links));
dailink = msm_auto_gvm8295_dai_links;
}
if (card) {
card->dai_link = dailink;
card->num_links = total_links;
}
card->dai_link = msm_gvm_auto_dai_links;
card->num_links = ARRAY_SIZE(msm_gvm_auto_dai_links);
}
return card;
}
@ -827,29 +850,42 @@ void msm_common_set_pdata(struct snd_soc_card *card,
pdata->common_pdata = common_pdata;
}
static int auto_spf_dummy_ssr_cb(struct notifier_block *this,
unsigned long code,
void *data)
#define AUTO_VIRT_SNDCARD_ONLINE 0
#define AUTO_VIRT_SNDCARD_OFFLINE 1
static long virt_sndcard_ioctl(struct file *f,
unsigned int cmd, unsigned long arg)
{
int ret = 0;
struct snd_soc_card *card = platform_get_drvdata(spdev);
switch (code) {
case SUBSYS_BEFORE_SHUTDOWN:
switch (cmd) {
case AUTO_VIRT_SNDCARD_OFFLINE:
snd_soc_card_change_online_state(card, 0); // change sndcard status to OFFLINE
dev_info(&spdev->dev, "ssr restart, mark sndcard offline\n");
break;
case SUBSYS_AFTER_POWERUP:
case AUTO_VIRT_SNDCARD_ONLINE:
snd_soc_card_change_online_state(card, 1); // change sndcard status to ONLINE
dev_info(&spdev->dev, "ssr complete, mark sndcard online\n");
break;
default:
pr_err("%s: ioctl not found\n", __func__);
ret = -EFAULT;
break;
}
return 0;
return ret;
}
static struct notifier_block auto_spf_dummy_ssr_notifier = {
.notifier_call = auto_spf_dummy_ssr_cb,
static const struct file_operations virt_sndcard_ctl_fops = {
.owner = THIS_MODULE,
.unlocked_ioctl = virt_sndcard_ioctl,
};
static struct miscdevice virt_sndcard_ctl_misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = "virt_sndcard_ctl",
.fops = &virt_sndcard_ctl_fops,
};
static int msm_asoc_machine_probe(struct platform_device *pdev)
@ -915,8 +951,11 @@ static int msm_asoc_machine_probe(struct platform_device *pdev)
spdev = pdev;
subsys_notif_register_notifier("adsp", &auto_spf_dummy_ssr_notifier);
dev_info(&pdev->dev, "Audio driver register for SSR complete\n");
ret = misc_register(&virt_sndcard_ctl_misc);
if (ret) {
pr_err("Audio virtual sndcard ctrl register fail, ret=%d\n", ret);
}
dev_info(&pdev->dev, "Audio virtual sndcard ctrl register complete\n");
return 0;
err:
@ -926,7 +965,7 @@ static int msm_asoc_machine_probe(struct platform_device *pdev)
static int msm_asoc_machine_remove(struct platform_device *pdev)
{
misc_deregister(&virt_sndcard_ctl_misc);
return 0;
}

View File

@ -14416,6 +14416,11 @@ static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
};
static const struct snd_kcontrol_new quat_tdm_rx_7_port_mixer_controls[] = {
SOC_DOUBLE_EXT("TERT_TDM_TX_7", SND_SOC_NOPM,
MSM_BACKEND_DAI_QUAT_TDM_RX_7,
MSM_BACKEND_DAI_TERT_TDM_TX_7, 1, 0,
msm_routing_get_port_mixer,
msm_routing_put_port_mixer),
SOC_DOUBLE_EXT("QUAT_TDM_TX_7", SND_SOC_NOPM,
MSM_BACKEND_DAI_QUAT_TDM_RX_7,
MSM_BACKEND_DAI_QUAT_TDM_TX_7, 1, 0,
@ -29209,6 +29214,7 @@ static const struct snd_soc_dapm_route intercon_tdm[] = {
{"QUAT_TDM_RX_3 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"},
{"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
{"QUAT_TDM_RX_7 Port Mixer", "TERT_TDM_TX_7", "TERT_TDM_TX_7"},
{"QUAT_TDM_RX_7 Port Mixer", "QUAT_TDM_TX_7", "QUAT_TDM_TX_7"},
{"QUAT_TDM_RX_7 Port Mixer", "QUIN_TDM_TX_7", "QUIN_TDM_TX_7"},
{"QUAT_TDM_RX_7", NULL, "QUAT_TDM_RX_7 Port Mixer"},

View File

@ -1392,6 +1392,16 @@ SND_SOC_DAILINK_DEFS(sep_tdm_tx_0_dummy,
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(oct_tdm_rx_0_dummy,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(oct_tdm_tx_0_dummy,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(hs_if0_tdm_rx_0_dummy,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
@ -1422,6 +1432,26 @@ SND_SOC_DAILINK_DEFS(hs_if2_tdm_tx_0_dummy,
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(hs_if3_tdm_rx_0_dummy,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(hs_if3_tdm_tx_0_dummy,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(hs_if4_tdm_rx_0_dummy,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(hs_if4_tdm_tx_0_dummy,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(voicemmode1_hostless,
DAILINK_COMP_ARRAY(COMP_CPU("VoiceMMode1")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),

View File

@ -5503,7 +5503,7 @@ static int msm_pinctrl_mclk_enable(struct platform_device *pdev)
np = of_parse_phandle(pdev->dev.of_node, mclk_gpio_phandle[i], 0);
if (!np) {
pr_err("%s: device node %s is null\n", __func__, mclk_gpio_phandle[i]);
pr_debug("%s: device node %s is null\n", __func__, mclk_gpio_phandle[i]);
continue;
}
pdev_np = of_find_device_by_node(np);

View File

@ -423,7 +423,7 @@ static int audio_notifier_convert_opcode(unsigned long opcode,
int ret = 0;
switch (opcode) {
case SUBSYS_BEFORE_SHUTDOWN:
case SUBSYS_AFTER_SHUTDOWN:
case SERVREG_NOTIF_SERVICE_STATE_DOWN_V01:
*notifier_opcode = AUDIO_NOTIFIER_SERVICE_DOWN;
break;

View File

@ -11362,7 +11362,7 @@ static int q6asm_get_asm_topology_apptype(struct q6asm_cal_info *cal_info, struc
goto unlock;
}
} else {
cal_block = q6asm_find_cal_by_buf_number(ASM_TOPOLOGY_CAL, 0, 0, ac->fedai_id);
cal_block = q6asm_find_cal_by_buf_number(ASM_TOPOLOGY_CAL, 0, 0, path);
if (cal_block == NULL) {
pr_debug("%s: Couldn't find cal_block with buf_number, re-routing "
"search using CAL type only\n", __func__);