diff options
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/cs5535audio/cs5535audio_pcm.c | 4 | ||||
-rw-r--r-- | sound/pci/hda/hda_eld.c | 2 | ||||
-rw-r--r-- | sound/pci/hda/patch_conexant.c | 4 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 33 | ||||
-rw-r--r-- | sound/pci/rme9652/hdspm.c | 8 |
5 files changed, 34 insertions, 17 deletions
diff --git a/sound/pci/cs5535audio/cs5535audio_pcm.c b/sound/pci/cs5535audio/cs5535audio_pcm.c index f16bc8aad6ed..e083122ca55a 100644 --- a/sound/pci/cs5535audio/cs5535audio_pcm.c +++ b/sound/pci/cs5535audio/cs5535audio_pcm.c | |||
@@ -149,7 +149,7 @@ static int cs5535audio_build_dma_packets(struct cs5535audio *cs5535au, | |||
149 | &((struct cs5535audio_dma_desc *) dma->desc_buf.area)[i]; | 149 | &((struct cs5535audio_dma_desc *) dma->desc_buf.area)[i]; |
150 | desc->addr = cpu_to_le32(addr); | 150 | desc->addr = cpu_to_le32(addr); |
151 | desc->size = cpu_to_le32(period_bytes); | 151 | desc->size = cpu_to_le32(period_bytes); |
152 | desc->ctlreserved = cpu_to_le32(PRD_EOP); | 152 | desc->ctlreserved = cpu_to_le16(PRD_EOP); |
153 | desc_addr += sizeof(struct cs5535audio_dma_desc); | 153 | desc_addr += sizeof(struct cs5535audio_dma_desc); |
154 | addr += period_bytes; | 154 | addr += period_bytes; |
155 | } | 155 | } |
@@ -157,7 +157,7 @@ static int cs5535audio_build_dma_packets(struct cs5535audio *cs5535au, | |||
157 | lastdesc = &((struct cs5535audio_dma_desc *) dma->desc_buf.area)[periods]; | 157 | lastdesc = &((struct cs5535audio_dma_desc *) dma->desc_buf.area)[periods]; |
158 | lastdesc->addr = cpu_to_le32((u32) dma->desc_buf.addr); | 158 | lastdesc->addr = cpu_to_le32((u32) dma->desc_buf.addr); |
159 | lastdesc->size = 0; | 159 | lastdesc->size = 0; |
160 | lastdesc->ctlreserved = cpu_to_le32(PRD_JMP); | 160 | lastdesc->ctlreserved = cpu_to_le16(PRD_JMP); |
161 | jmpprd_addr = cpu_to_le32(lastdesc->addr + | 161 | jmpprd_addr = cpu_to_le32(lastdesc->addr + |
162 | (sizeof(struct cs5535audio_dma_desc)*periods)); | 162 | (sizeof(struct cs5535audio_dma_desc)*periods)); |
163 | 163 | ||
diff --git a/sound/pci/hda/hda_eld.c b/sound/pci/hda/hda_eld.c index b05f7be9dc1b..e3e853153d14 100644 --- a/sound/pci/hda/hda_eld.c +++ b/sound/pci/hda/hda_eld.c | |||
@@ -294,7 +294,7 @@ static int hdmi_update_eld(struct hdmi_eld *e, | |||
294 | snd_printd(KERN_INFO "HDMI: out of range MNL %d\n", mnl); | 294 | snd_printd(KERN_INFO "HDMI: out of range MNL %d\n", mnl); |
295 | goto out_fail; | 295 | goto out_fail; |
296 | } else | 296 | } else |
297 | strlcpy(e->monitor_name, buf + ELD_FIXED_BYTES, mnl); | 297 | strlcpy(e->monitor_name, buf + ELD_FIXED_BYTES, mnl + 1); |
298 | 298 | ||
299 | for (i = 0; i < e->sad_count; i++) { | 299 | for (i = 0; i < e->sad_count; i++) { |
300 | if (ELD_FIXED_BYTES + mnl + 3 * (i + 1) > size) { | 300 | if (ELD_FIXED_BYTES + mnl + 3 * (i + 1) > size) { |
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 694b9daf691f..7bbc5f237a5e 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
@@ -3074,6 +3074,7 @@ static const char * const cxt5066_models[CXT5066_MODELS] = { | |||
3074 | }; | 3074 | }; |
3075 | 3075 | ||
3076 | static const struct snd_pci_quirk cxt5066_cfg_tbl[] = { | 3076 | static const struct snd_pci_quirk cxt5066_cfg_tbl[] = { |
3077 | SND_PCI_QUIRK(0x1025, 0x054c, "Acer Aspire 3830TG", CXT5066_AUTO), | ||
3077 | SND_PCI_QUIRK_MASK(0x1025, 0xff00, 0x0400, "Acer", CXT5066_IDEAPAD), | 3078 | SND_PCI_QUIRK_MASK(0x1025, 0xff00, 0x0400, "Acer", CXT5066_IDEAPAD), |
3078 | SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTRO), | 3079 | SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTRO), |
3079 | SND_PCI_QUIRK(0x1028, 0x02f5, "Dell Vostro 320", CXT5066_IDEAPAD), | 3080 | SND_PCI_QUIRK(0x1028, 0x02f5, "Dell Vostro 320", CXT5066_IDEAPAD), |
@@ -4389,6 +4390,8 @@ static const struct hda_codec_preset snd_hda_preset_conexant[] = { | |||
4389 | .patch = patch_cxt5066 }, | 4390 | .patch = patch_cxt5066 }, |
4390 | { .id = 0x14f15069, .name = "CX20585", | 4391 | { .id = 0x14f15069, .name = "CX20585", |
4391 | .patch = patch_cxt5066 }, | 4392 | .patch = patch_cxt5066 }, |
4393 | { .id = 0x14f1506c, .name = "CX20588", | ||
4394 | .patch = patch_cxt5066 }, | ||
4392 | { .id = 0x14f1506e, .name = "CX20590", | 4395 | { .id = 0x14f1506e, .name = "CX20590", |
4393 | .patch = patch_cxt5066 }, | 4396 | .patch = patch_cxt5066 }, |
4394 | { .id = 0x14f15097, .name = "CX20631", | 4397 | { .id = 0x14f15097, .name = "CX20631", |
@@ -4417,6 +4420,7 @@ MODULE_ALIAS("snd-hda-codec-id:14f15066"); | |||
4417 | MODULE_ALIAS("snd-hda-codec-id:14f15067"); | 4420 | MODULE_ALIAS("snd-hda-codec-id:14f15067"); |
4418 | MODULE_ALIAS("snd-hda-codec-id:14f15068"); | 4421 | MODULE_ALIAS("snd-hda-codec-id:14f15068"); |
4419 | MODULE_ALIAS("snd-hda-codec-id:14f15069"); | 4422 | MODULE_ALIAS("snd-hda-codec-id:14f15069"); |
4423 | MODULE_ALIAS("snd-hda-codec-id:14f1506c"); | ||
4420 | MODULE_ALIAS("snd-hda-codec-id:14f1506e"); | 4424 | MODULE_ALIAS("snd-hda-codec-id:14f1506e"); |
4421 | MODULE_ALIAS("snd-hda-codec-id:14f15097"); | 4425 | MODULE_ALIAS("snd-hda-codec-id:14f15097"); |
4422 | MODULE_ALIAS("snd-hda-codec-id:14f15098"); | 4426 | MODULE_ALIAS("snd-hda-codec-id:14f15098"); |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index d21191dcfe88..b48fb43b5448 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -2715,17 +2715,30 @@ typedef int (*getput_call_t)(struct snd_kcontrol *kcontrol, | |||
2715 | 2715 | ||
2716 | static int alc_cap_getput_caller(struct snd_kcontrol *kcontrol, | 2716 | static int alc_cap_getput_caller(struct snd_kcontrol *kcontrol, |
2717 | struct snd_ctl_elem_value *ucontrol, | 2717 | struct snd_ctl_elem_value *ucontrol, |
2718 | getput_call_t func) | 2718 | getput_call_t func, bool check_adc_switch) |
2719 | { | 2719 | { |
2720 | struct hda_codec *codec = snd_kcontrol_chip(kcontrol); | 2720 | struct hda_codec *codec = snd_kcontrol_chip(kcontrol); |
2721 | struct alc_spec *spec = codec->spec; | 2721 | struct alc_spec *spec = codec->spec; |
2722 | unsigned int adc_idx = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id); | 2722 | int i, err = 0; |
2723 | int err; | ||
2724 | 2723 | ||
2725 | mutex_lock(&codec->control_mutex); | 2724 | mutex_lock(&codec->control_mutex); |
2726 | kcontrol->private_value = HDA_COMPOSE_AMP_VAL(spec->adc_nids[adc_idx], | 2725 | if (check_adc_switch && spec->dual_adc_switch) { |
2727 | 3, 0, HDA_INPUT); | 2726 | for (i = 0; i < spec->num_adc_nids; i++) { |
2728 | err = func(kcontrol, ucontrol); | 2727 | kcontrol->private_value = |
2728 | HDA_COMPOSE_AMP_VAL(spec->adc_nids[i], | ||
2729 | 3, 0, HDA_INPUT); | ||
2730 | err = func(kcontrol, ucontrol); | ||
2731 | if (err < 0) | ||
2732 | goto error; | ||
2733 | } | ||
2734 | } else { | ||
2735 | i = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id); | ||
2736 | kcontrol->private_value = | ||
2737 | HDA_COMPOSE_AMP_VAL(spec->adc_nids[i], | ||
2738 | 3, 0, HDA_INPUT); | ||
2739 | err = func(kcontrol, ucontrol); | ||
2740 | } | ||
2741 | error: | ||
2729 | mutex_unlock(&codec->control_mutex); | 2742 | mutex_unlock(&codec->control_mutex); |
2730 | return err; | 2743 | return err; |
2731 | } | 2744 | } |
@@ -2734,14 +2747,14 @@ static int alc_cap_vol_get(struct snd_kcontrol *kcontrol, | |||
2734 | struct snd_ctl_elem_value *ucontrol) | 2747 | struct snd_ctl_elem_value *ucontrol) |
2735 | { | 2748 | { |
2736 | return alc_cap_getput_caller(kcontrol, ucontrol, | 2749 | return alc_cap_getput_caller(kcontrol, ucontrol, |
2737 | snd_hda_mixer_amp_volume_get); | 2750 | snd_hda_mixer_amp_volume_get, false); |
2738 | } | 2751 | } |
2739 | 2752 | ||
2740 | static int alc_cap_vol_put(struct snd_kcontrol *kcontrol, | 2753 | static int alc_cap_vol_put(struct snd_kcontrol *kcontrol, |
2741 | struct snd_ctl_elem_value *ucontrol) | 2754 | struct snd_ctl_elem_value *ucontrol) |
2742 | { | 2755 | { |
2743 | return alc_cap_getput_caller(kcontrol, ucontrol, | 2756 | return alc_cap_getput_caller(kcontrol, ucontrol, |
2744 | snd_hda_mixer_amp_volume_put); | 2757 | snd_hda_mixer_amp_volume_put, true); |
2745 | } | 2758 | } |
2746 | 2759 | ||
2747 | /* capture mixer elements */ | 2760 | /* capture mixer elements */ |
@@ -2751,14 +2764,14 @@ static int alc_cap_sw_get(struct snd_kcontrol *kcontrol, | |||
2751 | struct snd_ctl_elem_value *ucontrol) | 2764 | struct snd_ctl_elem_value *ucontrol) |
2752 | { | 2765 | { |
2753 | return alc_cap_getput_caller(kcontrol, ucontrol, | 2766 | return alc_cap_getput_caller(kcontrol, ucontrol, |
2754 | snd_hda_mixer_amp_switch_get); | 2767 | snd_hda_mixer_amp_switch_get, false); |
2755 | } | 2768 | } |
2756 | 2769 | ||
2757 | static int alc_cap_sw_put(struct snd_kcontrol *kcontrol, | 2770 | static int alc_cap_sw_put(struct snd_kcontrol *kcontrol, |
2758 | struct snd_ctl_elem_value *ucontrol) | 2771 | struct snd_ctl_elem_value *ucontrol) |
2759 | { | 2772 | { |
2760 | return alc_cap_getput_caller(kcontrol, ucontrol, | 2773 | return alc_cap_getput_caller(kcontrol, ucontrol, |
2761 | snd_hda_mixer_amp_switch_put); | 2774 | snd_hda_mixer_amp_switch_put, true); |
2762 | } | 2775 | } |
2763 | 2776 | ||
2764 | #define _DEFINE_CAPMIX(num) \ | 2777 | #define _DEFINE_CAPMIX(num) \ |
diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c index 3f08afc0f0d3..c8e402fc3782 100644 --- a/sound/pci/rme9652/hdspm.c +++ b/sound/pci/rme9652/hdspm.c | |||
@@ -896,11 +896,11 @@ struct hdspm { | |||
896 | unsigned char max_channels_in; | 896 | unsigned char max_channels_in; |
897 | unsigned char max_channels_out; | 897 | unsigned char max_channels_out; |
898 | 898 | ||
899 | char *channel_map_in; | 899 | signed char *channel_map_in; |
900 | char *channel_map_out; | 900 | signed char *channel_map_out; |
901 | 901 | ||
902 | char *channel_map_in_ss, *channel_map_in_ds, *channel_map_in_qs; | 902 | signed char *channel_map_in_ss, *channel_map_in_ds, *channel_map_in_qs; |
903 | char *channel_map_out_ss, *channel_map_out_ds, *channel_map_out_qs; | 903 | signed char *channel_map_out_ss, *channel_map_out_ds, *channel_map_out_qs; |
904 | 904 | ||
905 | char **port_names_in; | 905 | char **port_names_in; |
906 | char **port_names_out; | 906 | char **port_names_out; |