Merge 5be9ed037a
on remote branch
Change-Id: I531284bb3f046870a309a4654a8245ad36e5acd7
This commit is contained in:
commit
3775ffedb5
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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"},
|
||||
|
@ -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")),
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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__);
|
||||
|
Loading…
Reference in New Issue
Block a user