diff options
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/emu10k1/memory.c | 5 | ||||
-rw-r--r-- | sound/pci/hda/hda_auto_parser.c | 5 | ||||
-rw-r--r-- | sound/pci/hda/patch_conexant.c | 6 | ||||
-rw-r--r-- | sound/pci/hda/patch_hdmi.c | 12 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 8 |
5 files changed, 21 insertions, 15 deletions
diff --git a/sound/pci/emu10k1/memory.c b/sound/pci/emu10k1/memory.c index 4f502a2bdc3c..0a436626182b 100644 --- a/sound/pci/emu10k1/memory.c +++ b/sound/pci/emu10k1/memory.c | |||
@@ -326,7 +326,10 @@ snd_emu10k1_alloc_pages(struct snd_emu10k1 *emu, struct snd_pcm_substream *subst | |||
326 | for (page = blk->first_page; page <= blk->last_page; page++, idx++) { | 326 | for (page = blk->first_page; page <= blk->last_page; page++, idx++) { |
327 | unsigned long ofs = idx << PAGE_SHIFT; | 327 | unsigned long ofs = idx << PAGE_SHIFT; |
328 | dma_addr_t addr; | 328 | dma_addr_t addr; |
329 | addr = snd_pcm_sgbuf_get_addr(substream, ofs); | 329 | if (ofs >= runtime->dma_bytes) |
330 | addr = emu->silent_page.addr; | ||
331 | else | ||
332 | addr = snd_pcm_sgbuf_get_addr(substream, ofs); | ||
330 | if (! is_valid_page(emu, addr)) { | 333 | if (! is_valid_page(emu, addr)) { |
331 | printk(KERN_ERR "emu: failure page = %d\n", idx); | 334 | printk(KERN_ERR "emu: failure page = %d\n", idx); |
332 | mutex_unlock(&hdr->block_mutex); | 335 | mutex_unlock(&hdr->block_mutex); |
diff --git a/sound/pci/hda/hda_auto_parser.c b/sound/pci/hda/hda_auto_parser.c index 647218d69f68..4f7d2dfcef7b 100644 --- a/sound/pci/hda/hda_auto_parser.c +++ b/sound/pci/hda/hda_auto_parser.c | |||
@@ -332,13 +332,12 @@ int snd_hda_parse_pin_defcfg(struct hda_codec *codec, | |||
332 | if (cfg->dig_outs) | 332 | if (cfg->dig_outs) |
333 | snd_printd(" dig-out=0x%x/0x%x\n", | 333 | snd_printd(" dig-out=0x%x/0x%x\n", |
334 | cfg->dig_out_pins[0], cfg->dig_out_pins[1]); | 334 | cfg->dig_out_pins[0], cfg->dig_out_pins[1]); |
335 | snd_printd(" inputs:"); | 335 | snd_printd(" inputs:\n"); |
336 | for (i = 0; i < cfg->num_inputs; i++) { | 336 | for (i = 0; i < cfg->num_inputs; i++) { |
337 | snd_printd(" %s=0x%x", | 337 | snd_printd(" %s=0x%x\n", |
338 | hda_get_autocfg_input_label(codec, cfg, i), | 338 | hda_get_autocfg_input_label(codec, cfg, i), |
339 | cfg->inputs[i].pin); | 339 | cfg->inputs[i].pin); |
340 | } | 340 | } |
341 | snd_printd("\n"); | ||
342 | if (cfg->dig_in_pin) | 341 | if (cfg->dig_in_pin) |
343 | snd_printd(" dig-in=0x%x\n", cfg->dig_in_pin); | 342 | snd_printd(" dig-in=0x%x\n", cfg->dig_in_pin); |
344 | 343 | ||
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 14361184ae1e..5e22a8f43d2e 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
@@ -2967,12 +2967,10 @@ static const char * const cxt5066_models[CXT5066_MODELS] = { | |||
2967 | }; | 2967 | }; |
2968 | 2968 | ||
2969 | static const struct snd_pci_quirk cxt5066_cfg_tbl[] = { | 2969 | static const struct snd_pci_quirk cxt5066_cfg_tbl[] = { |
2970 | SND_PCI_QUIRK(0x1025, 0x054c, "Acer Aspire 3830TG", CXT5066_AUTO), | ||
2971 | SND_PCI_QUIRK_MASK(0x1025, 0xff00, 0x0400, "Acer", CXT5066_IDEAPAD), | 2970 | SND_PCI_QUIRK_MASK(0x1025, 0xff00, 0x0400, "Acer", CXT5066_IDEAPAD), |
2972 | SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTRO), | 2971 | SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTRO), |
2973 | SND_PCI_QUIRK(0x1028, 0x02f5, "Dell Vostro 320", CXT5066_IDEAPAD), | 2972 | SND_PCI_QUIRK(0x1028, 0x02f5, "Dell Vostro 320", CXT5066_IDEAPAD), |
2974 | SND_PCI_QUIRK(0x1028, 0x0401, "Dell Vostro 1014", CXT5066_DELL_VOSTRO), | 2973 | SND_PCI_QUIRK(0x1028, 0x0401, "Dell Vostro 1014", CXT5066_DELL_VOSTRO), |
2975 | SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTRO), | ||
2976 | SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD), | 2974 | SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD), |
2977 | SND_PCI_QUIRK(0x1028, 0x050f, "Dell Inspiron", CXT5066_IDEAPAD), | 2975 | SND_PCI_QUIRK(0x1028, 0x050f, "Dell Inspiron", CXT5066_IDEAPAD), |
2978 | SND_PCI_QUIRK(0x1028, 0x0510, "Dell Vostro", CXT5066_IDEAPAD), | 2976 | SND_PCI_QUIRK(0x1028, 0x0510, "Dell Vostro", CXT5066_IDEAPAD), |
@@ -2988,14 +2986,10 @@ static const struct snd_pci_quirk cxt5066_cfg_tbl[] = { | |||
2988 | SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD), | 2986 | SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD), |
2989 | SND_PCI_QUIRK(0x17aa, 0x21c5, "Thinkpad Edge 13", CXT5066_THINKPAD), | 2987 | SND_PCI_QUIRK(0x17aa, 0x21c5, "Thinkpad Edge 13", CXT5066_THINKPAD), |
2990 | SND_PCI_QUIRK(0x17aa, 0x21c6, "Thinkpad Edge 13", CXT5066_ASUS), | 2988 | SND_PCI_QUIRK(0x17aa, 0x21c6, "Thinkpad Edge 13", CXT5066_ASUS), |
2991 | SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo T510", CXT5066_AUTO), | ||
2992 | SND_PCI_QUIRK(0x17aa, 0x21cf, "Lenovo T520 & W520", CXT5066_AUTO), | ||
2993 | SND_PCI_QUIRK(0x17aa, 0x21da, "Lenovo X220", CXT5066_THINKPAD), | 2989 | SND_PCI_QUIRK(0x17aa, 0x21da, "Lenovo X220", CXT5066_THINKPAD), |
2994 | SND_PCI_QUIRK(0x17aa, 0x21db, "Lenovo X220-tablet", CXT5066_THINKPAD), | 2990 | SND_PCI_QUIRK(0x17aa, 0x21db, "Lenovo X220-tablet", CXT5066_THINKPAD), |
2995 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo U350", CXT5066_ASUS), | 2991 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo U350", CXT5066_ASUS), |
2996 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G560", CXT5066_ASUS), | 2992 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G560", CXT5066_ASUS), |
2997 | SND_PCI_QUIRK(0x17aa, 0x3938, "Lenovo G565", CXT5066_AUTO), | ||
2998 | SND_PCI_QUIRK(0x1b0a, 0x2092, "CyberpowerPC Gamer Xplorer N57001", CXT5066_AUTO), | ||
2999 | {} | 2993 | {} |
3000 | }; | 2994 | }; |
3001 | 2995 | ||
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 69b928449789..8f23374fa642 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c | |||
@@ -877,8 +877,6 @@ static int hdmi_pcm_open(struct hda_pcm_stream *hinfo, | |||
877 | struct hdmi_eld *eld; | 877 | struct hdmi_eld *eld; |
878 | struct hdmi_spec_per_cvt *per_cvt = NULL; | 878 | struct hdmi_spec_per_cvt *per_cvt = NULL; |
879 | 879 | ||
880 | hinfo->nid = 0; /* clear the leftover value */ | ||
881 | |||
882 | /* Validate hinfo */ | 880 | /* Validate hinfo */ |
883 | pin_idx = hinfo_to_pin_index(spec, hinfo); | 881 | pin_idx = hinfo_to_pin_index(spec, hinfo); |
884 | if (snd_BUG_ON(pin_idx < 0)) | 882 | if (snd_BUG_ON(pin_idx < 0)) |
@@ -1163,6 +1161,14 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo, | |||
1163 | return hdmi_setup_stream(codec, cvt_nid, pin_nid, stream_tag, format); | 1161 | return hdmi_setup_stream(codec, cvt_nid, pin_nid, stream_tag, format); |
1164 | } | 1162 | } |
1165 | 1163 | ||
1164 | static int generic_hdmi_playback_pcm_cleanup(struct hda_pcm_stream *hinfo, | ||
1165 | struct hda_codec *codec, | ||
1166 | struct snd_pcm_substream *substream) | ||
1167 | { | ||
1168 | snd_hda_codec_cleanup_stream(codec, hinfo->nid); | ||
1169 | return 0; | ||
1170 | } | ||
1171 | |||
1166 | static int hdmi_pcm_close(struct hda_pcm_stream *hinfo, | 1172 | static int hdmi_pcm_close(struct hda_pcm_stream *hinfo, |
1167 | struct hda_codec *codec, | 1173 | struct hda_codec *codec, |
1168 | struct snd_pcm_substream *substream) | 1174 | struct snd_pcm_substream *substream) |
@@ -1202,6 +1208,7 @@ static const struct hda_pcm_ops generic_ops = { | |||
1202 | .open = hdmi_pcm_open, | 1208 | .open = hdmi_pcm_open, |
1203 | .close = hdmi_pcm_close, | 1209 | .close = hdmi_pcm_close, |
1204 | .prepare = generic_hdmi_playback_pcm_prepare, | 1210 | .prepare = generic_hdmi_playback_pcm_prepare, |
1211 | .cleanup = generic_hdmi_playback_pcm_cleanup, | ||
1205 | }; | 1212 | }; |
1206 | 1213 | ||
1207 | static int generic_hdmi_build_pcms(struct hda_codec *codec) | 1214 | static int generic_hdmi_build_pcms(struct hda_codec *codec) |
@@ -1220,7 +1227,6 @@ static int generic_hdmi_build_pcms(struct hda_codec *codec) | |||
1220 | pstr = &info->stream[SNDRV_PCM_STREAM_PLAYBACK]; | 1227 | pstr = &info->stream[SNDRV_PCM_STREAM_PLAYBACK]; |
1221 | pstr->substreams = 1; | 1228 | pstr->substreams = 1; |
1222 | pstr->ops = generic_ops; | 1229 | pstr->ops = generic_ops; |
1223 | pstr->nid = 1; /* FIXME: just for avoiding a debug WARNING */ | ||
1224 | /* other pstr fields are set in open */ | 1230 | /* other pstr fields are set in open */ |
1225 | } | 1231 | } |
1226 | 1232 | ||
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 344b221d2102..4f81dd44c837 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -6099,6 +6099,8 @@ static const struct alc_fixup alc269_fixups[] = { | |||
6099 | [ALC269_FIXUP_PCM_44K] = { | 6099 | [ALC269_FIXUP_PCM_44K] = { |
6100 | .type = ALC_FIXUP_FUNC, | 6100 | .type = ALC_FIXUP_FUNC, |
6101 | .v.func = alc269_fixup_pcm_44k, | 6101 | .v.func = alc269_fixup_pcm_44k, |
6102 | .chained = true, | ||
6103 | .chain_id = ALC269_FIXUP_QUANTA_MUTE | ||
6102 | }, | 6104 | }, |
6103 | [ALC269_FIXUP_STEREO_DMIC] = { | 6105 | [ALC269_FIXUP_STEREO_DMIC] = { |
6104 | .type = ALC_FIXUP_FUNC, | 6106 | .type = ALC_FIXUP_FUNC, |
@@ -6206,9 +6208,11 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { | |||
6206 | SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), | 6208 | SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), |
6207 | SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE), | 6209 | SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE), |
6208 | SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE), | 6210 | SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE), |
6211 | SND_PCI_QUIRK(0x17aa, 0x21f6, "Thinkpad T530", ALC269_FIXUP_LENOVO_DOCK), | ||
6212 | SND_PCI_QUIRK(0x17aa, 0x21fa, "Thinkpad X230", ALC269_FIXUP_LENOVO_DOCK), | ||
6213 | SND_PCI_QUIRK(0x17aa, 0x21fb, "Thinkpad T430s", ALC269_FIXUP_LENOVO_DOCK), | ||
6209 | SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK), | 6214 | SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK), |
6210 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE), | 6215 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), |
6211 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K), | ||
6212 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), | 6216 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), |
6213 | 6217 | ||
6214 | #if 0 | 6218 | #if 0 |