mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 20:46:48 +02:00
Merge pull request #894 from plbossart/merge/backport-v5.0-intel-audio-v20190430
Merge/backport v5.0 intel audio v20190430
This commit is contained in:
commit
3f6a2dfc6b
|
|
@ -713,8 +713,11 @@ snd_info_create_entry(const char *name, struct snd_info_entry *parent,
|
|||
INIT_LIST_HEAD(&entry->list);
|
||||
entry->parent = parent;
|
||||
entry->module = module;
|
||||
if (parent)
|
||||
if (parent) {
|
||||
mutex_lock(&parent->access);
|
||||
list_add_tail(&entry->list, &parent->children);
|
||||
mutex_unlock(&parent->access);
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
|
||||
|
|
@ -792,7 +795,12 @@ void snd_info_free_entry(struct snd_info_entry * entry)
|
|||
list_for_each_entry_safe(p, n, &entry->children, list)
|
||||
snd_info_free_entry(p);
|
||||
|
||||
list_del(&entry->list);
|
||||
p = entry->parent;
|
||||
if (p) {
|
||||
mutex_lock(&p->access);
|
||||
list_del(&entry->list);
|
||||
mutex_unlock(&p->access);
|
||||
}
|
||||
kfree(entry->name);
|
||||
if (entry->private_free)
|
||||
entry->private_free(entry);
|
||||
|
|
|
|||
|
|
@ -382,14 +382,7 @@ int snd_card_disconnect(struct snd_card *card)
|
|||
card->shutdown = 1;
|
||||
spin_unlock(&card->files_lock);
|
||||
|
||||
/* phase 1: disable fops (user space) operations for ALSA API */
|
||||
mutex_lock(&snd_card_mutex);
|
||||
snd_cards[card->number] = NULL;
|
||||
clear_bit(card->number, snd_cards_lock);
|
||||
mutex_unlock(&snd_card_mutex);
|
||||
|
||||
/* phase 2: replace file->f_op with special dummy operations */
|
||||
|
||||
/* replace file->f_op with special dummy operations */
|
||||
spin_lock(&card->files_lock);
|
||||
list_for_each_entry(mfile, &card->files_list, list) {
|
||||
/* it's critical part, use endless loop */
|
||||
|
|
@ -405,7 +398,7 @@ int snd_card_disconnect(struct snd_card *card)
|
|||
}
|
||||
spin_unlock(&card->files_lock);
|
||||
|
||||
/* phase 3: notify all connected devices about disconnection */
|
||||
/* notify all connected devices about disconnection */
|
||||
/* at this point, they cannot respond to any calls except release() */
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_MIXER_OSS)
|
||||
|
|
@ -421,6 +414,13 @@ int snd_card_disconnect(struct snd_card *card)
|
|||
device_del(&card->card_dev);
|
||||
card->registered = false;
|
||||
}
|
||||
|
||||
/* disable fops (user space) operations for ALSA API */
|
||||
mutex_lock(&snd_card_mutex);
|
||||
snd_cards[card->number] = NULL;
|
||||
clear_bit(card->number, snd_cards_lock);
|
||||
mutex_unlock(&snd_card_mutex);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
wake_up(&card->power_sleep);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ enum {
|
|||
|
||||
static unsigned long quirk;
|
||||
|
||||
static int quirk_override;
|
||||
static int quirk_override = -1;
|
||||
module_param_named(quirk, quirk_override, int, 0444);
|
||||
MODULE_PARM_DESC(quirk, "Board-specific quirk override");
|
||||
|
||||
|
|
@ -516,7 +516,7 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
|
|||
quirk = BYT_CHT_ES8316_INTMIC_IN1_MAP |
|
||||
BYT_CHT_ES8316_MONO_SPEAKER;
|
||||
}
|
||||
if (quirk_override) {
|
||||
if (quirk_override != -1) {
|
||||
dev_info(dev, "Overriding quirk 0x%x => 0x%x\n",
|
||||
(unsigned int)quirk,
|
||||
quirk_override);
|
||||
|
|
|
|||
|
|
@ -98,8 +98,8 @@ struct byt_rt5640_private {
|
|||
static bool is_bytcr;
|
||||
|
||||
static unsigned long byt_rt5640_quirk = BYT_RT5640_MCLK_EN;
|
||||
static unsigned int quirk_override;
|
||||
module_param_named(quirk, quirk_override, uint, 0444);
|
||||
static int quirk_override = -1;
|
||||
module_param_named(quirk, quirk_override, int, 0444);
|
||||
MODULE_PARM_DESC(quirk, "Board-specific quirk override");
|
||||
|
||||
static void log_quirks(struct device *dev)
|
||||
|
|
@ -1254,7 +1254,7 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev)
|
|||
dmi_id = dmi_first_match(byt_rt5640_quirk_table);
|
||||
if (dmi_id)
|
||||
byt_rt5640_quirk = (unsigned long)dmi_id->driver_data;
|
||||
if (quirk_override) {
|
||||
if (quirk_override != -1) {
|
||||
dev_info(&pdev->dev, "Overriding quirk 0x%x => 0x%x\n",
|
||||
(unsigned int)byt_rt5640_quirk, quirk_override);
|
||||
byt_rt5640_quirk = quirk_override;
|
||||
|
|
|
|||
|
|
@ -102,8 +102,8 @@ static const struct acpi_gpio_mapping *byt_rt5651_gpios;
|
|||
static unsigned long byt_rt5651_quirk = BYT_RT5651_DEFAULT_QUIRKS |
|
||||
BYT_RT5651_IN2_MAP;
|
||||
|
||||
static unsigned int quirk_override;
|
||||
module_param_named(quirk, quirk_override, uint, 0444);
|
||||
static int quirk_override = -1;
|
||||
module_param_named(quirk, quirk_override, int, 0444);
|
||||
MODULE_PARM_DESC(quirk, "Board-specific quirk override");
|
||||
|
||||
static void log_quirks(struct device *dev)
|
||||
|
|
@ -987,7 +987,7 @@ static int snd_byt_rt5651_mc_probe(struct platform_device *pdev)
|
|||
/* check quirks before creating card */
|
||||
dmi_check_system(byt_rt5651_quirk_table);
|
||||
|
||||
if (quirk_override) {
|
||||
if (quirk_override != -1) {
|
||||
dev_info(&pdev->dev, "Overriding quirk 0x%x => 0x%x\n",
|
||||
(unsigned int)byt_rt5651_quirk, quirk_override);
|
||||
byt_rt5651_quirk = quirk_override;
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@
|
|||
#define SOF_RT5682_SSP_AMP_MASK (GENMASK(8, 6))
|
||||
#define SOF_RT5682_SSP_AMP_SHIFT 6
|
||||
|
||||
|
||||
/* Default: MCLK on, MCLK 19.2M, SSP0 */
|
||||
static unsigned long sof_rt5682_quirk = SOF_RT5682_MCLK_EN |
|
||||
SOF_RT5682_SSP_CODEC(0);
|
||||
|
|
@ -431,14 +430,15 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
|||
if (!links[id].cpu_dai_name)
|
||||
goto devm_err;
|
||||
|
||||
idisp_components[i-1].name = "ehdaudio0D2";
|
||||
idisp_components[i-1].dai_name = devm_kasprintf(dev, GFP_KERNEL,
|
||||
"intel-hdmi-"
|
||||
"hifi%d", i);
|
||||
if (!idisp_components[i-1].dai_name)
|
||||
idisp_components[i - 1].name = "ehdaudio0D2";
|
||||
idisp_components[i - 1].dai_name = devm_kasprintf(dev,
|
||||
GFP_KERNEL,
|
||||
"intel-hdmi-hifi%d",
|
||||
i);
|
||||
if (!idisp_components[i - 1].dai_name)
|
||||
goto devm_err;
|
||||
|
||||
links[id].codecs = &idisp_components[i-1];
|
||||
links[id].codecs = &idisp_components[i - 1];
|
||||
links[id].num_codecs = 1;
|
||||
links[id].platforms = platform_component;
|
||||
links[id].num_platforms = ARRAY_SIZE(platform_component);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user