Commit 6f7dae64 authored by Takashi Iwai's avatar Takashi Iwai

Merge branch 'for-linus' into for-next

Pull 6.10-rc devel branch for further cleanups of dmaengine and others.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parents 634f3b4e 6a7db25a
...@@ -358,6 +358,12 @@ EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_open_request_chan); ...@@ -358,6 +358,12 @@ EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_open_request_chan);
int snd_dmaengine_pcm_close(struct snd_pcm_substream *substream) int snd_dmaengine_pcm_close(struct snd_pcm_substream *substream)
{ {
struct dmaengine_pcm_runtime_data *prtd = substream_to_prtd(substream); struct dmaengine_pcm_runtime_data *prtd = substream_to_prtd(substream);
struct dma_tx_state state;
enum dma_status status;
status = dmaengine_tx_status(prtd->dma_chan, prtd->cookie, &state);
if (status == DMA_PAUSED)
dmaengine_terminate_async(prtd->dma_chan);
dmaengine_synchronize(prtd->dma_chan); dmaengine_synchronize(prtd->dma_chan);
kfree(prtd); kfree(prtd);
...@@ -378,6 +384,12 @@ EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_close); ...@@ -378,6 +384,12 @@ EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_close);
int snd_dmaengine_pcm_close_release_chan(struct snd_pcm_substream *substream) int snd_dmaengine_pcm_close_release_chan(struct snd_pcm_substream *substream)
{ {
struct dmaengine_pcm_runtime_data *prtd = substream_to_prtd(substream); struct dmaengine_pcm_runtime_data *prtd = substream_to_prtd(substream);
struct dma_tx_state state;
enum dma_status status;
status = dmaengine_tx_status(prtd->dma_chan, prtd->cookie, &state);
if (status == DMA_PAUSED)
dmaengine_terminate_async(prtd->dma_chan);
dmaengine_synchronize(prtd->dma_chan); dmaengine_synchronize(prtd->dma_chan);
dma_release_channel(prtd->dma_chan); dma_release_channel(prtd->dma_chan);
......
...@@ -1775,6 +1775,8 @@ static int snd_pcm_pre_resume(struct snd_pcm_substream *substream, ...@@ -1775,6 +1775,8 @@ static int snd_pcm_pre_resume(struct snd_pcm_substream *substream,
snd_pcm_state_t state) snd_pcm_state_t state)
{ {
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
if (runtime->state != SNDRV_PCM_STATE_SUSPENDED)
return -EBADFD;
if (!(runtime->info & SNDRV_PCM_INFO_RESUME)) if (!(runtime->info & SNDRV_PCM_INFO_RESUME))
return -ENOSYS; return -ENOSYS;
runtime->trigger_master = substream; runtime->trigger_master = substream;
......
...@@ -791,7 +791,8 @@ static int paf_ev_to_ump_midi2(const struct snd_seq_event *event, ...@@ -791,7 +791,8 @@ static int paf_ev_to_ump_midi2(const struct snd_seq_event *event,
/* set up the MIDI2 RPN/NRPN packet data from the parsed info */ /* set up the MIDI2 RPN/NRPN packet data from the parsed info */
static void fill_rpn(struct snd_seq_ump_midi2_bank *cc, static void fill_rpn(struct snd_seq_ump_midi2_bank *cc,
union snd_ump_midi2_msg *data) union snd_ump_midi2_msg *data,
unsigned char channel)
{ {
if (cc->rpn_set) { if (cc->rpn_set) {
data->rpn.status = UMP_MSG_STATUS_RPN; data->rpn.status = UMP_MSG_STATUS_RPN;
...@@ -808,6 +809,7 @@ static void fill_rpn(struct snd_seq_ump_midi2_bank *cc, ...@@ -808,6 +809,7 @@ static void fill_rpn(struct snd_seq_ump_midi2_bank *cc,
} }
data->rpn.data = upscale_14_to_32bit((cc->cc_data_msb << 7) | data->rpn.data = upscale_14_to_32bit((cc->cc_data_msb << 7) |
cc->cc_data_lsb); cc->cc_data_lsb);
data->rpn.channel = channel;
cc->cc_data_msb = cc->cc_data_lsb = 0; cc->cc_data_msb = cc->cc_data_lsb = 0;
} }
...@@ -855,7 +857,7 @@ static int cc_ev_to_ump_midi2(const struct snd_seq_event *event, ...@@ -855,7 +857,7 @@ static int cc_ev_to_ump_midi2(const struct snd_seq_event *event,
cc->cc_data_lsb = val; cc->cc_data_lsb = val;
if (!(cc->rpn_set || cc->nrpn_set)) if (!(cc->rpn_set || cc->nrpn_set))
return 0; // skip return 0; // skip
fill_rpn(cc, data); fill_rpn(cc, data, channel);
return 1; return 1;
} }
...@@ -957,7 +959,7 @@ static int ctrl14_ev_to_ump_midi2(const struct snd_seq_event *event, ...@@ -957,7 +959,7 @@ static int ctrl14_ev_to_ump_midi2(const struct snd_seq_event *event,
cc->cc_data_lsb = lsb; cc->cc_data_lsb = lsb;
if (!(cc->rpn_set || cc->nrpn_set)) if (!(cc->rpn_set || cc->nrpn_set))
return 0; // skip return 0; // skip
fill_rpn(cc, data); fill_rpn(cc, data, channel);
return 1; return 1;
} }
......
...@@ -162,6 +162,7 @@ config SND_HDA_SCODEC_CS35L56_I2C ...@@ -162,6 +162,7 @@ config SND_HDA_SCODEC_CS35L56_I2C
depends on ACPI || COMPILE_TEST depends on ACPI || COMPILE_TEST
depends on SND_SOC depends on SND_SOC
select FW_CS_DSP select FW_CS_DSP
imply SERIAL_MULTI_INSTANTIATE
select SND_HDA_GENERIC select SND_HDA_GENERIC
select SND_SOC_CS35L56_SHARED select SND_SOC_CS35L56_SHARED
select SND_HDA_SCODEC_CS35L56 select SND_HDA_SCODEC_CS35L56
...@@ -178,6 +179,7 @@ config SND_HDA_SCODEC_CS35L56_SPI ...@@ -178,6 +179,7 @@ config SND_HDA_SCODEC_CS35L56_SPI
depends on ACPI || COMPILE_TEST depends on ACPI || COMPILE_TEST
depends on SND_SOC depends on SND_SOC
select FW_CS_DSP select FW_CS_DSP
imply SERIAL_MULTI_INSTANTIATE
select SND_HDA_GENERIC select SND_HDA_GENERIC
select SND_SOC_CS35L56_SHARED select SND_SOC_CS35L56_SHARED
select SND_HDA_SCODEC_CS35L56 select SND_HDA_SCODEC_CS35L56
......
...@@ -10068,6 +10068,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { ...@@ -10068,6 +10068,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x103c, 0x8788, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED), SND_PCI_QUIRK(0x103c, 0x8788, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED),
SND_PCI_QUIRK(0x103c, 0x87b7, "HP Laptop 14-fq0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2), SND_PCI_QUIRK(0x103c, 0x87b7, "HP Laptop 14-fq0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
SND_PCI_QUIRK(0x103c, 0x87c8, "HP", ALC287_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x87c8, "HP", ALC287_FIXUP_HP_GPIO_LED),
SND_PCI_QUIRK(0x103c, 0x87d3, "HP Laptop 15-gw0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
SND_PCI_QUIRK(0x103c, 0x87e5, "HP ProBook 440 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x87e5, "HP ProBook 440 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
SND_PCI_QUIRK(0x103c, 0x87e7, "HP ProBook 450 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x87e7, "HP ProBook 450 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
SND_PCI_QUIRK(0x103c, 0x87f1, "HP ProBook 630 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x87f1, "HP ProBook 630 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
...@@ -10554,6 +10555,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { ...@@ -10554,6 +10555,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x17aa, 0x3882, "Lenovo Yoga Pro 7 14APH8", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN), SND_PCI_QUIRK(0x17aa, 0x3882, "Lenovo Yoga Pro 7 14APH8", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
SND_PCI_QUIRK(0x17aa, 0x3884, "Y780 YG DUAL", ALC287_FIXUP_TAS2781_I2C), SND_PCI_QUIRK(0x17aa, 0x3884, "Y780 YG DUAL", ALC287_FIXUP_TAS2781_I2C),
SND_PCI_QUIRK(0x17aa, 0x3886, "Y780 VECO DUAL", ALC287_FIXUP_TAS2781_I2C), SND_PCI_QUIRK(0x17aa, 0x3886, "Y780 VECO DUAL", ALC287_FIXUP_TAS2781_I2C),
SND_PCI_QUIRK(0x17aa, 0x3891, "Lenovo Yoga Pro 7 14AHP9", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
SND_PCI_QUIRK(0x17aa, 0x38a7, "Y780P AMD YG dual", ALC287_FIXUP_TAS2781_I2C), SND_PCI_QUIRK(0x17aa, 0x38a7, "Y780P AMD YG dual", ALC287_FIXUP_TAS2781_I2C),
SND_PCI_QUIRK(0x17aa, 0x38a8, "Y780P AMD VECO dual", ALC287_FIXUP_TAS2781_I2C), SND_PCI_QUIRK(0x17aa, 0x38a8, "Y780P AMD VECO dual", ALC287_FIXUP_TAS2781_I2C),
SND_PCI_QUIRK(0x17aa, 0x38a9, "Thinkbook 16P", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD), SND_PCI_QUIRK(0x17aa, 0x38a9, "Thinkbook 16P", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment