sound fixes for 4.12-rc7
Linus,
please pull sound fixes for v4.12-rc7 from:
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git tags/sound-4.12-rc7
The topmost commit is c7ecb9068e6772c43941ce609f08bc53f36e1dce
----------------------------------------------------------------
sound fixes for 4.12-rc7
Nothing exciting here, just a few stable fixes:
- Suppress spurious kernel WARNING in PCM core
- Fix potential spin deadlock at error handling in firewire
- HD-audio PCI ID addition / fixup
----------------------------------------------------------------
Megha Dey (1):
ALSA: hda - Add Coffelake PCI ID
Takashi Iwai (2):
ALSA: pcm: Don't treat NULL chmap as a fatal error
ALSA: hda - Apply quirks to Broxton-T, too
Takashi Sakamoto (1):
ALSA: firewire-lib: Fix stall of process context at packet error
--- sound/core/pcm_lib.c | 4 ++-- sound/firewire/amdtp-stream.c | 8 ++++++-- sound/firewire/amdtp-stream.h | 2 +- sound/pci/hda/hda_intel.c | 11 ++++++++--- 4 files changed, 17 insertions(+), 8 deletions(-)
sound/core/pcm_lib.c +2 -2
@@ -2492,7 +2492,7 @@ static int pcm_chmap_ctl_get(struct snd_kcontrol *kcontrol,struct snd_pcm_substream *substream;const struct snd_pcm_chmap_elem *map; -if (snd_BUG_ON (!info->chmap)) +if (!info->chmap)return -EINVAL ; substream =snd_pcm_chmap_substream (info, idx);if (!substream)
@@ -2524,7 +2524,7 @@ static int pcm_chmap_ctl_tlv(struct snd_kcontrol *kcontrol, int op_flag,unsigned int __user *dst;int c, count =0 ; -if (snd_BUG_ON (!info->chmap)) +if (!info->chmap)return -EINVAL ;if (size <8 )return -ENOMEM ;
sound/firewire/amdtp-stream.c +6 -2
@@ -682,7 +682,9 @@ static void out_stream_callback(struct fw_iso_context *context, u32 tstamp, cycle =increment_cycle_count (cycle,1 );if (s->handle_packet (s,0 , cycle, i) <0 ) { s->packet_index =-1 ; -amdtp_stream_pcm_abort (s); +if (in_interrupt ()) +amdtp_stream_pcm_abort (s); +WRITE_ONCE (s->pcm_buffer_pointer,SNDRV_PCM_POS_XRUN );return ; } }
@@ -734,7 +736,9 @@ static void in_stream_callback(struct fw_iso_context *context, u32 tstamp,/* Queueing error or detecting invalid payload. */ if (i < packets) { s->packet_index =-1 ; -amdtp_stream_pcm_abort (s); +if (in_interrupt ()) +amdtp_stream_pcm_abort (s); +WRITE_ONCE (s->pcm_buffer_pointer,SNDRV_PCM_POS_XRUN );return ; }
sound/firewire/amdtp-stream.h +1 -1
@@ -135,7 +135,7 @@ struct amdtp_stream {/* For a PCM substream processing. */ struct snd_pcm_substream *pcm;struct tasklet_struct period_tasklet; -unsigned int pcm_buffer_pointer; +snd_pcm_uframes_t pcm_buffer_pointer;unsigned int pcm_period_pointer;/* To wait for first packet. */
sound/pci/hda/hda_intel.c +8 -3
@@ -370,10 +370,12 @@ enum {#define IS_KBL_LP (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d71)#define IS_KBL_H (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa2f0)#define IS_BXT (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) +#define IS_BXT_T (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x1a98)#define IS_GLK (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x3198) -#define IS_SKL_PLUS (pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci)) || \ - IS_KBL(pci) || IS_KBL_LP(pci) || IS_KBL_H(pci) || \ - IS_GLK(pci) +#define IS_CFL (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa348) +#define IS_SKL_PLUS (pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci) || \ + IS_BXT_T(pci) || IS_KBL(pci) || IS_KBL_LP(pci) || \ + IS_KBL_H(pci) || IS_GLK(pci) || IS_CFL(pci))static char *driver_short_names[] = { [AZX_DRIVER_ICH ] ="HDA Intel" ,
@@ -2378,6 +2380,9 @@ static const struct pci_device_id azx_ids[] = {/* Kabylake-H */ { PCI_DEVICE(0x8086, 0xa2f0), .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, + /* Coffelake */ + { PCI_DEVICE(0x8086, 0xa348), + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE}, /* Broxton-P(Apollolake) */ { PCI_DEVICE(0x8086, 0x5a98), .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON },