Commit 7fc8e7c1 authored by Takashi Iwai's avatar Takashi Iwai

Merge branch 'for-linus' into for-next

parents 8cad7a3d c7ecb906
...@@ -2329,7 +2329,7 @@ static int pcm_chmap_ctl_get(struct snd_kcontrol *kcontrol, ...@@ -2329,7 +2329,7 @@ static int pcm_chmap_ctl_get(struct snd_kcontrol *kcontrol,
struct snd_pcm_substream *substream; struct snd_pcm_substream *substream;
const struct snd_pcm_chmap_elem *map; const struct snd_pcm_chmap_elem *map;
if (snd_BUG_ON(!info->chmap)) if (!info->chmap)
return -EINVAL; return -EINVAL;
substream = snd_pcm_chmap_substream(info, idx); substream = snd_pcm_chmap_substream(info, idx);
if (!substream) if (!substream)
...@@ -2361,7 +2361,7 @@ static int pcm_chmap_ctl_tlv(struct snd_kcontrol *kcontrol, int op_flag, ...@@ -2361,7 +2361,7 @@ static int pcm_chmap_ctl_tlv(struct snd_kcontrol *kcontrol, int op_flag,
unsigned int __user *dst; unsigned int __user *dst;
int c, count = 0; int c, count = 0;
if (snd_BUG_ON(!info->chmap)) if (!info->chmap)
return -EINVAL; return -EINVAL;
if (size < 8) if (size < 8)
return -ENOMEM; return -ENOMEM;
......
...@@ -701,7 +701,9 @@ static void out_stream_callback(struct fw_iso_context *context, u32 tstamp, ...@@ -701,7 +701,9 @@ static void out_stream_callback(struct fw_iso_context *context, u32 tstamp,
cycle = increment_cycle_count(cycle, 1); cycle = increment_cycle_count(cycle, 1);
if (s->handle_packet(s, 0, cycle, i) < 0) { if (s->handle_packet(s, 0, cycle, i) < 0) {
s->packet_index = -1; 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; return;
} }
} }
...@@ -753,7 +755,9 @@ static void in_stream_callback(struct fw_iso_context *context, u32 tstamp, ...@@ -753,7 +755,9 @@ static void in_stream_callback(struct fw_iso_context *context, u32 tstamp,
/* Queueing error or detecting invalid payload. */ /* Queueing error or detecting invalid payload. */
if (i < packets) { if (i < packets) {
s->packet_index = -1; 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; return;
} }
......
...@@ -135,7 +135,7 @@ struct amdtp_stream { ...@@ -135,7 +135,7 @@ struct amdtp_stream {
/* For a PCM substream processing. */ /* For a PCM substream processing. */
struct snd_pcm_substream *pcm; struct snd_pcm_substream *pcm;
struct tasklet_struct period_tasklet; struct tasklet_struct period_tasklet;
unsigned int pcm_buffer_pointer; snd_pcm_uframes_t pcm_buffer_pointer;
unsigned int pcm_period_pointer; unsigned int pcm_period_pointer;
/* To wait for first packet. */ /* To wait for first packet. */
......
...@@ -370,10 +370,12 @@ enum { ...@@ -370,10 +370,12 @@ enum {
#define IS_KBL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d71) #define IS_KBL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d71)
#define IS_KBL_H(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa2f0) #define IS_KBL_H(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa2f0)
#define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) #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_GLK(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x3198)
#define IS_SKL_PLUS(pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci)) || \ #define IS_CFL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa348)
IS_KBL(pci) || IS_KBL_LP(pci) || IS_KBL_H(pci) || \ #define IS_SKL_PLUS(pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci) || \
IS_GLK(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[] = { static char *driver_short_names[] = {
[AZX_DRIVER_ICH] = "HDA Intel", [AZX_DRIVER_ICH] = "HDA Intel",
...@@ -2378,6 +2380,9 @@ static const struct pci_device_id azx_ids[] = { ...@@ -2378,6 +2380,9 @@ static const struct pci_device_id azx_ids[] = {
/* Kabylake-H */ /* Kabylake-H */
{ PCI_DEVICE(0x8086, 0xa2f0), { PCI_DEVICE(0x8086, 0xa2f0),
.driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, .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) */ /* Broxton-P(Apollolake) */
{ PCI_DEVICE(0x8086, 0x5a98), { PCI_DEVICE(0x8086, 0x5a98),
.driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON }, .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON },
......
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