diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-09-24 19:46:16 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-09-24 19:46:16 -0400 |
commit | 3cf7487c5de713b706ca2e1f66ec5f9b27fe265a (patch) | |
tree | dbcd20fa8457fbf5b3cc0e004e830ef69f8dd8ab /sound | |
parent | b6cb84b4fc580098a5934078e4c8dc39e3925f07 (diff) | |
parent | f41f900568d9ffd896cc941db7021eb14bd55910 (diff) |
Merge tag 'sound-fix-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai:
"A few small remaining wrap-up for this merge window.
Most of patches are device-specific (HD-audio and USB-audio quirks,
FireWire, pcm316a, fsl, rsnd, Atmel, and TI fixes), while there is a
simple fix (actually two commits) for ASoC core"
* tag 'sound-fix-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: usb-audio: Add DSD support for EVGA NU Audio
ALSA: hda - Add laptop imic fixup for ASUS M9V laptop
ASoC: ti: fix SND_SOC_DM365_VOICE_CODEC dependencies
ASoC: pcm3168a: The codec does not support S32_LE
ASoC: core: use list_del_init and move it back to soc_cleanup_component
ALSA: hda/realtek - PCI quirk for Medion E4254
ALSA: hda - Apply AMD controller workaround for Raven platform
ASoC: rsnd: do error check after rsnd_channel_normalization()
ASoC: atmel_ssc_dai: Remove wrong spinlock usage
ASoC: core: delete component->card_list in soc_remove_component only
ASoC: fsl_sai: Fix noise when using EDMA
ALSA: usb-audio: Add Hiby device family to quirks for native DSD support
ALSA: hda/realtek - Fix alienware headset mic
ALSA: dice: fix wrong packet parameter for Alesis iO26
Diffstat (limited to 'sound')
-rw-r--r-- | sound/firewire/dice/dice-alesis.c | 2 | ||||
-rw-r--r-- | sound/pci/hda/hda_intel.c | 3 | ||||
-rw-r--r-- | sound/pci/hda/patch_analog.c | 1 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 28 | ||||
-rw-r--r-- | sound/soc/atmel/atmel_ssc_dai.c | 12 | ||||
-rw-r--r-- | sound/soc/atmel/atmel_ssc_dai.h | 1 | ||||
-rw-r--r-- | sound/soc/codecs/pcm3168a.c | 3 | ||||
-rw-r--r-- | sound/soc/fsl/fsl_sai.c | 15 | ||||
-rw-r--r-- | sound/soc/fsl/fsl_sai.h | 1 | ||||
-rw-r--r-- | sound/soc/sh/rcar/ssi.c | 10 | ||||
-rw-r--r-- | sound/soc/soc-core.c | 2 | ||||
-rw-r--r-- | sound/soc/ti/Kconfig | 11 | ||||
-rw-r--r-- | sound/usb/quirks.c | 2 |
13 files changed, 67 insertions, 24 deletions
diff --git a/sound/firewire/dice/dice-alesis.c b/sound/firewire/dice/dice-alesis.c index 218292bdace6..f5b325263b67 100644 --- a/sound/firewire/dice/dice-alesis.c +++ b/sound/firewire/dice/dice-alesis.c | |||
@@ -15,7 +15,7 @@ alesis_io14_tx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT] = { | |||
15 | 15 | ||
16 | static const unsigned int | 16 | static const unsigned int |
17 | alesis_io26_tx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT] = { | 17 | alesis_io26_tx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT] = { |
18 | {10, 10, 8}, /* Tx0 = Analog + S/PDIF. */ | 18 | {10, 10, 4}, /* Tx0 = Analog + S/PDIF. */ |
19 | {16, 8, 0}, /* Tx1 = ADAT1 + ADAT2. */ | 19 | {16, 8, 0}, /* Tx1 = ADAT1 + ADAT2. */ |
20 | }; | 20 | }; |
21 | 21 | ||
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 91e71be42fa4..240f4ca76391 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
@@ -2485,8 +2485,7 @@ static const struct pci_device_id azx_ids[] = { | |||
2485 | AZX_DCAPS_PM_RUNTIME }, | 2485 | AZX_DCAPS_PM_RUNTIME }, |
2486 | /* AMD Raven */ | 2486 | /* AMD Raven */ |
2487 | { PCI_DEVICE(0x1022, 0x15e3), | 2487 | { PCI_DEVICE(0x1022, 0x15e3), |
2488 | .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_ATI_SB | | 2488 | .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_AMD_SB }, |
2489 | AZX_DCAPS_PM_RUNTIME }, | ||
2490 | /* ATI HDMI */ | 2489 | /* ATI HDMI */ |
2491 | { PCI_DEVICE(0x1002, 0x0002), | 2490 | { PCI_DEVICE(0x1002, 0x0002), |
2492 | .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, | 2491 | .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, |
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index e283966bdbb1..bc9dd8e6fd86 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
@@ -357,6 +357,7 @@ static const struct hda_fixup ad1986a_fixups[] = { | |||
357 | 357 | ||
358 | static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { | 358 | static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { |
359 | SND_PCI_QUIRK(0x103c, 0x30af, "HP B2800", AD1986A_FIXUP_LAPTOP_IMIC), | 359 | SND_PCI_QUIRK(0x103c, 0x30af, "HP B2800", AD1986A_FIXUP_LAPTOP_IMIC), |
360 | SND_PCI_QUIRK(0x1043, 0x1153, "ASUS M9V", AD1986A_FIXUP_LAPTOP_IMIC), | ||
360 | SND_PCI_QUIRK(0x1043, 0x1443, "ASUS Z99He", AD1986A_FIXUP_EAPD), | 361 | SND_PCI_QUIRK(0x1043, 0x1443, "ASUS Z99He", AD1986A_FIXUP_EAPD), |
361 | SND_PCI_QUIRK(0x1043, 0x1447, "ASUS A8JN", AD1986A_FIXUP_EAPD), | 362 | SND_PCI_QUIRK(0x1043, 0x1447, "ASUS A8JN", AD1986A_FIXUP_EAPD), |
362 | SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8100, "ASUS P5", AD1986A_FIXUP_3STACK), | 363 | SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8100, "ASUS P5", AD1986A_FIXUP_3STACK), |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index da1695418731..b000b36ac3c6 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -5817,6 +5817,7 @@ enum { | |||
5817 | ALC292_FIXUP_DELL_E7X, | 5817 | ALC292_FIXUP_DELL_E7X, |
5818 | ALC292_FIXUP_DISABLE_AAMIX, | 5818 | ALC292_FIXUP_DISABLE_AAMIX, |
5819 | ALC293_FIXUP_DISABLE_AAMIX_MULTIJACK, | 5819 | ALC293_FIXUP_DISABLE_AAMIX_MULTIJACK, |
5820 | ALC298_FIXUP_ALIENWARE_MIC_NO_PRESENCE, | ||
5820 | ALC298_FIXUP_DELL1_MIC_NO_PRESENCE, | 5821 | ALC298_FIXUP_DELL1_MIC_NO_PRESENCE, |
5821 | ALC298_FIXUP_DELL_AIO_MIC_NO_PRESENCE, | 5822 | ALC298_FIXUP_DELL_AIO_MIC_NO_PRESENCE, |
5822 | ALC275_FIXUP_DELL_XPS, | 5823 | ALC275_FIXUP_DELL_XPS, |
@@ -5871,6 +5872,7 @@ enum { | |||
5871 | ALC256_FIXUP_ASUS_MIC_NO_PRESENCE, | 5872 | ALC256_FIXUP_ASUS_MIC_NO_PRESENCE, |
5872 | ALC299_FIXUP_PREDATOR_SPK, | 5873 | ALC299_FIXUP_PREDATOR_SPK, |
5873 | ALC294_FIXUP_ASUS_INTSPK_HEADSET_MIC, | 5874 | ALC294_FIXUP_ASUS_INTSPK_HEADSET_MIC, |
5875 | ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE, | ||
5874 | }; | 5876 | }; |
5875 | 5877 | ||
5876 | static const struct hda_fixup alc269_fixups[] = { | 5878 | static const struct hda_fixup alc269_fixups[] = { |
@@ -6506,6 +6508,15 @@ static const struct hda_fixup alc269_fixups[] = { | |||
6506 | .chained = true, | 6508 | .chained = true, |
6507 | .chain_id = ALC292_FIXUP_DISABLE_AAMIX | 6509 | .chain_id = ALC292_FIXUP_DISABLE_AAMIX |
6508 | }, | 6510 | }, |
6511 | [ALC298_FIXUP_ALIENWARE_MIC_NO_PRESENCE] = { | ||
6512 | .type = HDA_FIXUP_PINS, | ||
6513 | .v.pins = (const struct hda_pintbl[]) { | ||
6514 | { 0x18, 0x01a1913c }, /* headset mic w/o jack detect */ | ||
6515 | { } | ||
6516 | }, | ||
6517 | .chained_before = true, | ||
6518 | .chain_id = ALC269_FIXUP_HEADSET_MODE, | ||
6519 | }, | ||
6509 | [ALC298_FIXUP_DELL1_MIC_NO_PRESENCE] = { | 6520 | [ALC298_FIXUP_DELL1_MIC_NO_PRESENCE] = { |
6510 | .type = HDA_FIXUP_PINS, | 6521 | .type = HDA_FIXUP_PINS, |
6511 | .v.pins = (const struct hda_pintbl[]) { | 6522 | .v.pins = (const struct hda_pintbl[]) { |
@@ -6927,6 +6938,16 @@ static const struct hda_fixup alc269_fixups[] = { | |||
6927 | .chained = true, | 6938 | .chained = true, |
6928 | .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC | 6939 | .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC |
6929 | }, | 6940 | }, |
6941 | [ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE] = { | ||
6942 | .type = HDA_FIXUP_PINS, | ||
6943 | .v.pins = (const struct hda_pintbl[]) { | ||
6944 | { 0x19, 0x04a11040 }, | ||
6945 | { 0x21, 0x04211020 }, | ||
6946 | { } | ||
6947 | }, | ||
6948 | .chained = true, | ||
6949 | .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE | ||
6950 | }, | ||
6930 | }; | 6951 | }; |
6931 | 6952 | ||
6932 | static const struct snd_pci_quirk alc269_fixup_tbl[] = { | 6953 | static const struct snd_pci_quirk alc269_fixup_tbl[] = { |
@@ -7190,6 +7211,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { | |||
7190 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), | 7211 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), |
7191 | SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS), | 7212 | SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS), |
7192 | SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */ | 7213 | SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */ |
7214 | SND_PCI_QUIRK(0x10ec, 0x118c, "Medion EE4254 MD62100", ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE), | ||
7193 | 7215 | ||
7194 | #if 0 | 7216 | #if 0 |
7195 | /* Below is a quirk table taken from the old code. | 7217 | /* Below is a quirk table taken from the old code. |
@@ -7358,6 +7380,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { | |||
7358 | {.id = ALC295_FIXUP_CHROME_BOOK, .name = "alc-chrome-book"}, | 7380 | {.id = ALC295_FIXUP_CHROME_BOOK, .name = "alc-chrome-book"}, |
7359 | {.id = ALC299_FIXUP_PREDATOR_SPK, .name = "predator-spk"}, | 7381 | {.id = ALC299_FIXUP_PREDATOR_SPK, .name = "predator-spk"}, |
7360 | {.id = ALC298_FIXUP_HUAWEI_MBX_STEREO, .name = "huawei-mbx-stereo"}, | 7382 | {.id = ALC298_FIXUP_HUAWEI_MBX_STEREO, .name = "huawei-mbx-stereo"}, |
7383 | {.id = ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE, .name = "alc256-medion-headset"}, | ||
7361 | {} | 7384 | {} |
7362 | }; | 7385 | }; |
7363 | #define ALC225_STANDARD_PINS \ | 7386 | #define ALC225_STANDARD_PINS \ |
@@ -7770,6 +7793,11 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { | |||
7770 | {0x17, 0x90170110}, | 7793 | {0x17, 0x90170110}, |
7771 | {0x1a, 0x03011020}, | 7794 | {0x1a, 0x03011020}, |
7772 | {0x21, 0x03211030}), | 7795 | {0x21, 0x03211030}), |
7796 | SND_HDA_PIN_QUIRK(0x10ec0298, 0x1028, "Dell", ALC298_FIXUP_ALIENWARE_MIC_NO_PRESENCE, | ||
7797 | {0x12, 0xb7a60140}, | ||
7798 | {0x17, 0x90170110}, | ||
7799 | {0x1a, 0x03a11030}, | ||
7800 | {0x21, 0x03211020}), | ||
7773 | SND_HDA_PIN_QUIRK(0x10ec0299, 0x1028, "Dell", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE, | 7801 | SND_HDA_PIN_QUIRK(0x10ec0299, 0x1028, "Dell", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE, |
7774 | ALC225_STANDARD_PINS, | 7802 | ALC225_STANDARD_PINS, |
7775 | {0x12, 0xb7a60130}, | 7803 | {0x12, 0xb7a60130}, |
diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c index 48e9eef34c0f..ca603397651c 100644 --- a/sound/soc/atmel/atmel_ssc_dai.c +++ b/sound/soc/atmel/atmel_ssc_dai.c | |||
@@ -116,19 +116,16 @@ static struct atmel_pcm_dma_params ssc_dma_params[NUM_SSC_DEVICES][2] = { | |||
116 | static struct atmel_ssc_info ssc_info[NUM_SSC_DEVICES] = { | 116 | static struct atmel_ssc_info ssc_info[NUM_SSC_DEVICES] = { |
117 | { | 117 | { |
118 | .name = "ssc0", | 118 | .name = "ssc0", |
119 | .lock = __SPIN_LOCK_UNLOCKED(ssc_info[0].lock), | ||
120 | .dir_mask = SSC_DIR_MASK_UNUSED, | 119 | .dir_mask = SSC_DIR_MASK_UNUSED, |
121 | .initialized = 0, | 120 | .initialized = 0, |
122 | }, | 121 | }, |
123 | { | 122 | { |
124 | .name = "ssc1", | 123 | .name = "ssc1", |
125 | .lock = __SPIN_LOCK_UNLOCKED(ssc_info[1].lock), | ||
126 | .dir_mask = SSC_DIR_MASK_UNUSED, | 124 | .dir_mask = SSC_DIR_MASK_UNUSED, |
127 | .initialized = 0, | 125 | .initialized = 0, |
128 | }, | 126 | }, |
129 | { | 127 | { |
130 | .name = "ssc2", | 128 | .name = "ssc2", |
131 | .lock = __SPIN_LOCK_UNLOCKED(ssc_info[2].lock), | ||
132 | .dir_mask = SSC_DIR_MASK_UNUSED, | 129 | .dir_mask = SSC_DIR_MASK_UNUSED, |
133 | .initialized = 0, | 130 | .initialized = 0, |
134 | }, | 131 | }, |
@@ -317,13 +314,10 @@ static int atmel_ssc_startup(struct snd_pcm_substream *substream, | |||
317 | 314 | ||
318 | snd_soc_dai_set_dma_data(dai, substream, dma_params); | 315 | snd_soc_dai_set_dma_data(dai, substream, dma_params); |
319 | 316 | ||
320 | spin_lock_irq(&ssc_p->lock); | 317 | if (ssc_p->dir_mask & dir_mask) |
321 | if (ssc_p->dir_mask & dir_mask) { | ||
322 | spin_unlock_irq(&ssc_p->lock); | ||
323 | return -EBUSY; | 318 | return -EBUSY; |
324 | } | 319 | |
325 | ssc_p->dir_mask |= dir_mask; | 320 | ssc_p->dir_mask |= dir_mask; |
326 | spin_unlock_irq(&ssc_p->lock); | ||
327 | 321 | ||
328 | return 0; | 322 | return 0; |
329 | } | 323 | } |
@@ -355,7 +349,6 @@ static void atmel_ssc_shutdown(struct snd_pcm_substream *substream, | |||
355 | 349 | ||
356 | dir_mask = 1 << dir; | 350 | dir_mask = 1 << dir; |
357 | 351 | ||
358 | spin_lock_irq(&ssc_p->lock); | ||
359 | ssc_p->dir_mask &= ~dir_mask; | 352 | ssc_p->dir_mask &= ~dir_mask; |
360 | if (!ssc_p->dir_mask) { | 353 | if (!ssc_p->dir_mask) { |
361 | if (ssc_p->initialized) { | 354 | if (ssc_p->initialized) { |
@@ -369,7 +362,6 @@ static void atmel_ssc_shutdown(struct snd_pcm_substream *substream, | |||
369 | ssc_p->cmr_div = ssc_p->tcmr_period = ssc_p->rcmr_period = 0; | 362 | ssc_p->cmr_div = ssc_p->tcmr_period = ssc_p->rcmr_period = 0; |
370 | ssc_p->forced_divider = 0; | 363 | ssc_p->forced_divider = 0; |
371 | } | 364 | } |
372 | spin_unlock_irq(&ssc_p->lock); | ||
373 | 365 | ||
374 | /* Shutdown the SSC clock. */ | 366 | /* Shutdown the SSC clock. */ |
375 | pr_debug("atmel_ssc_dai: Stopping clock\n"); | 367 | pr_debug("atmel_ssc_dai: Stopping clock\n"); |
diff --git a/sound/soc/atmel/atmel_ssc_dai.h b/sound/soc/atmel/atmel_ssc_dai.h index ae764cb541c7..3470b966e449 100644 --- a/sound/soc/atmel/atmel_ssc_dai.h +++ b/sound/soc/atmel/atmel_ssc_dai.h | |||
@@ -93,7 +93,6 @@ struct atmel_ssc_state { | |||
93 | struct atmel_ssc_info { | 93 | struct atmel_ssc_info { |
94 | char *name; | 94 | char *name; |
95 | struct ssc_device *ssc; | 95 | struct ssc_device *ssc; |
96 | spinlock_t lock; /* lock for dir_mask */ | ||
97 | unsigned short dir_mask; /* 0=unused, 1=playback, 2=capture */ | 96 | unsigned short dir_mask; /* 0=unused, 1=playback, 2=capture */ |
98 | unsigned short initialized; /* true if SSC has been initialized */ | 97 | unsigned short initialized; /* true if SSC has been initialized */ |
99 | unsigned short daifmt; | 98 | unsigned short daifmt; |
diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c index 50ed86d45c26..88b75695fbf7 100644 --- a/sound/soc/codecs/pcm3168a.c +++ b/sound/soc/codecs/pcm3168a.c | |||
@@ -21,8 +21,7 @@ | |||
21 | 21 | ||
22 | #define PCM3168A_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ | 22 | #define PCM3168A_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ |
23 | SNDRV_PCM_FMTBIT_S24_3LE | \ | 23 | SNDRV_PCM_FMTBIT_S24_3LE | \ |
24 | SNDRV_PCM_FMTBIT_S24_LE | \ | 24 | SNDRV_PCM_FMTBIT_S24_LE) |
25 | SNDRV_PCM_FMTBIT_S32_LE) | ||
26 | 25 | ||
27 | #define PCM3168A_FMT_I2S 0x0 | 26 | #define PCM3168A_FMT_I2S 0x0 |
28 | #define PCM3168A_FMT_LEFT_J 0x1 | 27 | #define PCM3168A_FMT_LEFT_J 0x1 |
diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c index ef0b74693093..b517e4bc1b87 100644 --- a/sound/soc/fsl/fsl_sai.c +++ b/sound/soc/fsl/fsl_sai.c | |||
@@ -628,6 +628,16 @@ static int fsl_sai_startup(struct snd_pcm_substream *substream, | |||
628 | FSL_SAI_CR3_TRCE_MASK, | 628 | FSL_SAI_CR3_TRCE_MASK, |
629 | FSL_SAI_CR3_TRCE); | 629 | FSL_SAI_CR3_TRCE); |
630 | 630 | ||
631 | /* | ||
632 | * EDMA controller needs period size to be a multiple of | ||
633 | * tx/rx maxburst | ||
634 | */ | ||
635 | if (sai->soc_data->use_edma) | ||
636 | snd_pcm_hw_constraint_step(substream->runtime, 0, | ||
637 | SNDRV_PCM_HW_PARAM_PERIOD_SIZE, | ||
638 | tx ? sai->dma_params_tx.maxburst : | ||
639 | sai->dma_params_rx.maxburst); | ||
640 | |||
631 | ret = snd_pcm_hw_constraint_list(substream->runtime, 0, | 641 | ret = snd_pcm_hw_constraint_list(substream->runtime, 0, |
632 | SNDRV_PCM_HW_PARAM_RATE, &fsl_sai_rate_constraints); | 642 | SNDRV_PCM_HW_PARAM_RATE, &fsl_sai_rate_constraints); |
633 | 643 | ||
@@ -1026,30 +1036,35 @@ static int fsl_sai_remove(struct platform_device *pdev) | |||
1026 | 1036 | ||
1027 | static const struct fsl_sai_soc_data fsl_sai_vf610_data = { | 1037 | static const struct fsl_sai_soc_data fsl_sai_vf610_data = { |
1028 | .use_imx_pcm = false, | 1038 | .use_imx_pcm = false, |
1039 | .use_edma = false, | ||
1029 | .fifo_depth = 32, | 1040 | .fifo_depth = 32, |
1030 | .reg_offset = 0, | 1041 | .reg_offset = 0, |
1031 | }; | 1042 | }; |
1032 | 1043 | ||
1033 | static const struct fsl_sai_soc_data fsl_sai_imx6sx_data = { | 1044 | static const struct fsl_sai_soc_data fsl_sai_imx6sx_data = { |
1034 | .use_imx_pcm = true, | 1045 | .use_imx_pcm = true, |
1046 | .use_edma = false, | ||
1035 | .fifo_depth = 32, | 1047 | .fifo_depth = 32, |
1036 | .reg_offset = 0, | 1048 | .reg_offset = 0, |
1037 | }; | 1049 | }; |
1038 | 1050 | ||
1039 | static const struct fsl_sai_soc_data fsl_sai_imx7ulp_data = { | 1051 | static const struct fsl_sai_soc_data fsl_sai_imx7ulp_data = { |
1040 | .use_imx_pcm = true, | 1052 | .use_imx_pcm = true, |
1053 | .use_edma = false, | ||
1041 | .fifo_depth = 16, | 1054 | .fifo_depth = 16, |
1042 | .reg_offset = 8, | 1055 | .reg_offset = 8, |
1043 | }; | 1056 | }; |
1044 | 1057 | ||
1045 | static const struct fsl_sai_soc_data fsl_sai_imx8mq_data = { | 1058 | static const struct fsl_sai_soc_data fsl_sai_imx8mq_data = { |
1046 | .use_imx_pcm = true, | 1059 | .use_imx_pcm = true, |
1060 | .use_edma = false, | ||
1047 | .fifo_depth = 128, | 1061 | .fifo_depth = 128, |
1048 | .reg_offset = 8, | 1062 | .reg_offset = 8, |
1049 | }; | 1063 | }; |
1050 | 1064 | ||
1051 | static const struct fsl_sai_soc_data fsl_sai_imx8qm_data = { | 1065 | static const struct fsl_sai_soc_data fsl_sai_imx8qm_data = { |
1052 | .use_imx_pcm = true, | 1066 | .use_imx_pcm = true, |
1067 | .use_edma = true, | ||
1053 | .fifo_depth = 64, | 1068 | .fifo_depth = 64, |
1054 | .reg_offset = 0, | 1069 | .reg_offset = 0, |
1055 | }; | 1070 | }; |
diff --git a/sound/soc/fsl/fsl_sai.h b/sound/soc/fsl/fsl_sai.h index b12cb578f6d0..76b15deea80c 100644 --- a/sound/soc/fsl/fsl_sai.h +++ b/sound/soc/fsl/fsl_sai.h | |||
@@ -157,6 +157,7 @@ | |||
157 | 157 | ||
158 | struct fsl_sai_soc_data { | 158 | struct fsl_sai_soc_data { |
159 | bool use_imx_pcm; | 159 | bool use_imx_pcm; |
160 | bool use_edma; | ||
160 | unsigned int fifo_depth; | 161 | unsigned int fifo_depth; |
161 | unsigned int reg_offset; | 162 | unsigned int reg_offset; |
162 | }; | 163 | }; |
diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index f6a7466622ea..fc5d089868df 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c | |||
@@ -286,6 +286,11 @@ static int rsnd_ssi_master_clk_start(struct rsnd_mod *mod, | |||
286 | if (rsnd_ssi_is_multi_slave(mod, io)) | 286 | if (rsnd_ssi_is_multi_slave(mod, io)) |
287 | return 0; | 287 | return 0; |
288 | 288 | ||
289 | if (rsnd_runtime_is_tdm_split(io)) | ||
290 | chan = rsnd_io_converted_chan(io); | ||
291 | |||
292 | chan = rsnd_channel_normalization(chan); | ||
293 | |||
289 | if (ssi->usrcnt > 0) { | 294 | if (ssi->usrcnt > 0) { |
290 | if (ssi->rate != rate) { | 295 | if (ssi->rate != rate) { |
291 | dev_err(dev, "SSI parent/child should use same rate\n"); | 296 | dev_err(dev, "SSI parent/child should use same rate\n"); |
@@ -300,11 +305,6 @@ static int rsnd_ssi_master_clk_start(struct rsnd_mod *mod, | |||
300 | return 0; | 305 | return 0; |
301 | } | 306 | } |
302 | 307 | ||
303 | if (rsnd_runtime_is_tdm_split(io)) | ||
304 | chan = rsnd_io_converted_chan(io); | ||
305 | |||
306 | chan = rsnd_channel_normalization(chan); | ||
307 | |||
308 | main_rate = rsnd_ssi_clk_query(rdai, rate, chan, &idx); | 308 | main_rate = rsnd_ssi_clk_query(rdai, rate, chan, &idx); |
309 | if (!main_rate) { | 309 | if (!main_rate) { |
310 | dev_err(dev, "unsupported clock rate\n"); | 310 | dev_err(dev, "unsupported clock rate\n"); |
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 35f48e9c5ead..88978a3036c4 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
@@ -978,7 +978,7 @@ static void soc_cleanup_component(struct snd_soc_component *component) | |||
978 | /* For framework level robustness */ | 978 | /* For framework level robustness */ |
979 | snd_soc_component_set_jack(component, NULL, NULL); | 979 | snd_soc_component_set_jack(component, NULL, NULL); |
980 | 980 | ||
981 | list_del(&component->card_list); | 981 | list_del_init(&component->card_list); |
982 | snd_soc_dapm_free(snd_soc_component_get_dapm(component)); | 982 | snd_soc_dapm_free(snd_soc_component_get_dapm(component)); |
983 | soc_cleanup_component_debugfs(component); | 983 | soc_cleanup_component_debugfs(component); |
984 | component->card = NULL; | 984 | component->card = NULL; |
diff --git a/sound/soc/ti/Kconfig b/sound/soc/ti/Kconfig index 87a9b9dd4e98..29f61053ab62 100644 --- a/sound/soc/ti/Kconfig +++ b/sound/soc/ti/Kconfig | |||
@@ -200,11 +200,18 @@ config SND_SOC_DM365_AIC3X_CODEC | |||
200 | 200 | ||
201 | config SND_SOC_DM365_VOICE_CODEC | 201 | config SND_SOC_DM365_VOICE_CODEC |
202 | bool "Voice Codec - CQ93VC" | 202 | bool "Voice Codec - CQ93VC" |
203 | select MFD_DAVINCI_VOICECODEC | ||
204 | select SND_SOC_CQ0093VC | ||
205 | help | 203 | help |
206 | Say Y if you want to add support for SoC On-chip voice codec | 204 | Say Y if you want to add support for SoC On-chip voice codec |
207 | endchoice | 205 | endchoice |
208 | 206 | ||
207 | config SND_SOC_DM365_VOICE_CODEC_MODULE | ||
208 | def_tristate y | ||
209 | depends on SND_SOC_DM365_VOICE_CODEC && SND_SOC | ||
210 | select MFD_DAVINCI_VOICECODEC | ||
211 | select SND_SOC_CQ0093VC | ||
212 | help | ||
213 | The is an internal symbol needed to ensure that the codec | ||
214 | and MFD driver can be built as loadable modules if necessary. | ||
215 | |||
209 | endmenu | 216 | endmenu |
210 | 217 | ||
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 25faf2d3c639..fbfde996fee7 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c | |||
@@ -1658,6 +1658,8 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, | |||
1658 | case 0x25ce: /* Mytek devices */ | 1658 | case 0x25ce: /* Mytek devices */ |
1659 | case 0x278b: /* Rotel? */ | 1659 | case 0x278b: /* Rotel? */ |
1660 | case 0x2ab6: /* T+A devices */ | 1660 | case 0x2ab6: /* T+A devices */ |
1661 | case 0x3842: /* EVGA */ | ||
1662 | case 0xc502: /* HiBy devices */ | ||
1661 | if (fp->dsd_raw) | 1663 | if (fp->dsd_raw) |
1662 | return SNDRV_PCM_FMTBIT_DSD_U32_BE; | 1664 | return SNDRV_PCM_FMTBIT_DSD_U32_BE; |
1663 | break; | 1665 | break; |