aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-09-24 19:46:16 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-09-24 19:46:16 -0400
commit3cf7487c5de713b706ca2e1f66ec5f9b27fe265a (patch)
treedbcd20fa8457fbf5b3cc0e004e830ef69f8dd8ab /sound
parentb6cb84b4fc580098a5934078e4c8dc39e3925f07 (diff)
parentf41f900568d9ffd896cc941db7021eb14bd55910 (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.c2
-rw-r--r--sound/pci/hda/hda_intel.c3
-rw-r--r--sound/pci/hda/patch_analog.c1
-rw-r--r--sound/pci/hda/patch_realtek.c28
-rw-r--r--sound/soc/atmel/atmel_ssc_dai.c12
-rw-r--r--sound/soc/atmel/atmel_ssc_dai.h1
-rw-r--r--sound/soc/codecs/pcm3168a.c3
-rw-r--r--sound/soc/fsl/fsl_sai.c15
-rw-r--r--sound/soc/fsl/fsl_sai.h1
-rw-r--r--sound/soc/sh/rcar/ssi.c10
-rw-r--r--sound/soc/soc-core.c2
-rw-r--r--sound/soc/ti/Kconfig11
-rw-r--r--sound/usb/quirks.c2
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
16static const unsigned int 16static const unsigned int
17alesis_io26_tx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT] = { 17alesis_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
358static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { 358static 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
5876static const struct hda_fixup alc269_fixups[] = { 5878static 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
6932static const struct snd_pci_quirk alc269_fixup_tbl[] = { 6953static 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] = {
116static struct atmel_ssc_info ssc_info[NUM_SSC_DEVICES] = { 116static 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 {
93struct atmel_ssc_info { 93struct 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
1027static const struct fsl_sai_soc_data fsl_sai_vf610_data = { 1037static 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
1033static const struct fsl_sai_soc_data fsl_sai_imx6sx_data = { 1044static 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
1039static const struct fsl_sai_soc_data fsl_sai_imx7ulp_data = { 1051static 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
1045static const struct fsl_sai_soc_data fsl_sai_imx8mq_data = { 1058static 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
1051static const struct fsl_sai_soc_data fsl_sai_imx8qm_data = { 1065static 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
158struct fsl_sai_soc_data { 158struct 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
201config SND_SOC_DM365_VOICE_CODEC 201config 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
207endchoice 205endchoice
208 206
207config 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
209endmenu 216endmenu
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;