diff options
-rw-r--r-- | Documentation/sound/alsa/HD-Audio-Models.txt | 1 | ||||
-rw-r--r-- | sound/pci/hda/hda_codec.c | 2 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 134 | ||||
-rw-r--r-- | sound/soc/txx9/txx9aclc.c | 4 | ||||
-rw-r--r-- | sound/usb/caiaq/audio.c | 5 | ||||
-rw-r--r-- | sound/usb/caiaq/device.c | 2 |
6 files changed, 110 insertions, 38 deletions
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index de8e10a94103..0d8d23581c44 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -139,6 +139,7 @@ ALC883/888 | |||
139 | acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc) | 139 | acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc) |
140 | acer-aspire Acer Aspire 9810 | 140 | acer-aspire Acer Aspire 9810 |
141 | acer-aspire-4930g Acer Aspire 4930G | 141 | acer-aspire-4930g Acer Aspire 4930G |
142 | acer-aspire-6530g Acer Aspire 6530G | ||
142 | acer-aspire-8930g Acer Aspire 8930G | 143 | acer-aspire-8930g Acer Aspire 8930G |
143 | medion Medion Laptops | 144 | medion Medion Laptops |
144 | medion-md2 Medion MD2 | 145 | medion-md2 Medion MD2 |
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 562403a23488..462e2cedaa6a 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -972,8 +972,6 @@ int /*__devinit*/ snd_hda_codec_new(struct hda_bus *bus, unsigned int codec_addr | |||
972 | snd_hda_codec_read(codec, nid, 0, | 972 | snd_hda_codec_read(codec, nid, 0, |
973 | AC_VERB_GET_SUBSYSTEM_ID, 0); | 973 | AC_VERB_GET_SUBSYSTEM_ID, 0); |
974 | } | 974 | } |
975 | if (bus->modelname) | ||
976 | codec->modelname = kstrdup(bus->modelname, GFP_KERNEL); | ||
977 | 975 | ||
978 | /* power-up all before initialization */ | 976 | /* power-up all before initialization */ |
979 | hda_set_power_state(codec, | 977 | hda_set_power_state(codec, |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index d22b26068014..bf4b78a74a8f 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -224,6 +224,7 @@ enum { | |||
224 | ALC883_ACER, | 224 | ALC883_ACER, |
225 | ALC883_ACER_ASPIRE, | 225 | ALC883_ACER_ASPIRE, |
226 | ALC888_ACER_ASPIRE_4930G, | 226 | ALC888_ACER_ASPIRE_4930G, |
227 | ALC888_ACER_ASPIRE_6530G, | ||
227 | ALC888_ACER_ASPIRE_8930G, | 228 | ALC888_ACER_ASPIRE_8930G, |
228 | ALC883_MEDION, | 229 | ALC883_MEDION, |
229 | ALC883_MEDION_MD2, | 230 | ALC883_MEDION_MD2, |
@@ -970,7 +971,7 @@ static void alc_automute_pin(struct hda_codec *codec) | |||
970 | } | 971 | } |
971 | } | 972 | } |
972 | 973 | ||
973 | #if 0 /* it's broken in some acses -- temporarily disabled */ | 974 | #if 0 /* it's broken in some cases -- temporarily disabled */ |
974 | static void alc_mic_automute(struct hda_codec *codec) | 975 | static void alc_mic_automute(struct hda_codec *codec) |
975 | { | 976 | { |
976 | struct alc_spec *spec = codec->spec; | 977 | struct alc_spec *spec = codec->spec; |
@@ -1170,7 +1171,7 @@ static int alc_subsystem_id(struct hda_codec *codec, | |||
1170 | 1171 | ||
1171 | /* invalid SSID, check the special NID pin defcfg instead */ | 1172 | /* invalid SSID, check the special NID pin defcfg instead */ |
1172 | /* | 1173 | /* |
1173 | * 31~30 : port conetcivity | 1174 | * 31~30 : port connectivity |
1174 | * 29~21 : reserve | 1175 | * 29~21 : reserve |
1175 | * 20 : PCBEEP input | 1176 | * 20 : PCBEEP input |
1176 | * 19~16 : Check sum (15:1) | 1177 | * 19~16 : Check sum (15:1) |
@@ -1471,6 +1472,25 @@ static struct hda_verb alc888_acer_aspire_4930g_verbs[] = { | |||
1471 | }; | 1472 | }; |
1472 | 1473 | ||
1473 | /* | 1474 | /* |
1475 | * ALC888 Acer Aspire 6530G model | ||
1476 | */ | ||
1477 | |||
1478 | static struct hda_verb alc888_acer_aspire_6530g_verbs[] = { | ||
1479 | /* Bias voltage on for external mic port */ | ||
1480 | {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN | PIN_VREF80}, | ||
1481 | /* Enable unsolicited event for HP jack */ | ||
1482 | {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN}, | ||
1483 | /* Enable speaker output */ | ||
1484 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
1485 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
1486 | /* Enable headphone output */ | ||
1487 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT | PIN_HP}, | ||
1488 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
1489 | {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
1490 | { } | ||
1491 | }; | ||
1492 | |||
1493 | /* | ||
1474 | * ALC889 Acer Aspire 8930G model | 1494 | * ALC889 Acer Aspire 8930G model |
1475 | */ | 1495 | */ |
1476 | 1496 | ||
@@ -1544,6 +1564,25 @@ static struct hda_input_mux alc888_2_capture_sources[2] = { | |||
1544 | } | 1564 | } |
1545 | }; | 1565 | }; |
1546 | 1566 | ||
1567 | static struct hda_input_mux alc888_acer_aspire_6530_sources[2] = { | ||
1568 | /* Interal mic only available on one ADC */ | ||
1569 | { | ||
1570 | .num_items = 3, | ||
1571 | .items = { | ||
1572 | { "Ext Mic", 0x0 }, | ||
1573 | { "CD", 0x4 }, | ||
1574 | { "Int Mic", 0xb }, | ||
1575 | }, | ||
1576 | }, | ||
1577 | { | ||
1578 | .num_items = 2, | ||
1579 | .items = { | ||
1580 | { "Ext Mic", 0x0 }, | ||
1581 | { "CD", 0x4 }, | ||
1582 | }, | ||
1583 | } | ||
1584 | }; | ||
1585 | |||
1547 | static struct hda_input_mux alc889_capture_sources[3] = { | 1586 | static struct hda_input_mux alc889_capture_sources[3] = { |
1548 | /* Digital mic only available on first "ADC" */ | 1587 | /* Digital mic only available on first "ADC" */ |
1549 | { | 1588 | { |
@@ -6347,7 +6386,7 @@ static struct hda_channel_mode alc882_sixstack_modes[2] = { | |||
6347 | }; | 6386 | }; |
6348 | 6387 | ||
6349 | /* | 6388 | /* |
6350 | * macbook pro ALC885 can switch LineIn to LineOut without loosing Mic | 6389 | * macbook pro ALC885 can switch LineIn to LineOut without losing Mic |
6351 | */ | 6390 | */ |
6352 | 6391 | ||
6353 | /* | 6392 | /* |
@@ -7047,7 +7086,7 @@ static struct hda_verb alc882_auto_init_verbs[] = { | |||
7047 | #define alc882_loopbacks alc880_loopbacks | 7086 | #define alc882_loopbacks alc880_loopbacks |
7048 | #endif | 7087 | #endif |
7049 | 7088 | ||
7050 | /* pcm configuration: identiacal with ALC880 */ | 7089 | /* pcm configuration: identical with ALC880 */ |
7051 | #define alc882_pcm_analog_playback alc880_pcm_analog_playback | 7090 | #define alc882_pcm_analog_playback alc880_pcm_analog_playback |
7052 | #define alc882_pcm_analog_capture alc880_pcm_analog_capture | 7091 | #define alc882_pcm_analog_capture alc880_pcm_analog_capture |
7053 | #define alc882_pcm_digital_playback alc880_pcm_digital_playback | 7092 | #define alc882_pcm_digital_playback alc880_pcm_digital_playback |
@@ -8068,7 +8107,7 @@ static struct snd_kcontrol_new alc883_fivestack_mixer[] = { | |||
8068 | { } /* end */ | 8107 | { } /* end */ |
8069 | }; | 8108 | }; |
8070 | 8109 | ||
8071 | static struct snd_kcontrol_new alc883_tagra_mixer[] = { | 8110 | static struct snd_kcontrol_new alc883_targa_mixer[] = { |
8072 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), | 8111 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), |
8073 | HDA_CODEC_MUTE("Headphone Playback Switch", 0x14, 0x0, HDA_OUTPUT), | 8112 | HDA_CODEC_MUTE("Headphone Playback Switch", 0x14, 0x0, HDA_OUTPUT), |
8074 | HDA_CODEC_MUTE("Front Playback Switch", 0x1b, 0x0, HDA_OUTPUT), | 8113 | HDA_CODEC_MUTE("Front Playback Switch", 0x1b, 0x0, HDA_OUTPUT), |
@@ -8088,7 +8127,7 @@ static struct snd_kcontrol_new alc883_tagra_mixer[] = { | |||
8088 | { } /* end */ | 8127 | { } /* end */ |
8089 | }; | 8128 | }; |
8090 | 8129 | ||
8091 | static struct snd_kcontrol_new alc883_tagra_2ch_mixer[] = { | 8130 | static struct snd_kcontrol_new alc883_targa_2ch_mixer[] = { |
8092 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), | 8131 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), |
8093 | HDA_CODEC_MUTE("Headphone Playback Switch", 0x14, 0x0, HDA_OUTPUT), | 8132 | HDA_CODEC_MUTE("Headphone Playback Switch", 0x14, 0x0, HDA_OUTPUT), |
8094 | HDA_CODEC_MUTE("Front Playback Switch", 0x1b, 0x0, HDA_OUTPUT), | 8133 | HDA_CODEC_MUTE("Front Playback Switch", 0x1b, 0x0, HDA_OUTPUT), |
@@ -8153,6 +8192,19 @@ static struct snd_kcontrol_new alc883_acer_aspire_mixer[] = { | |||
8153 | { } /* end */ | 8192 | { } /* end */ |
8154 | }; | 8193 | }; |
8155 | 8194 | ||
8195 | static struct snd_kcontrol_new alc888_acer_aspire_6530_mixer[] = { | ||
8196 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), | ||
8197 | HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), | ||
8198 | HDA_CODEC_VOLUME("LFE Playback Volume", 0x0f, 0x0, HDA_OUTPUT), | ||
8199 | HDA_BIND_MUTE("LFE Playback Switch", 0x0f, 2, HDA_INPUT), | ||
8200 | HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT), | ||
8201 | HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT), | ||
8202 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), | ||
8203 | HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT), | ||
8204 | HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), | ||
8205 | { } /* end */ | ||
8206 | }; | ||
8207 | |||
8156 | static struct snd_kcontrol_new alc888_lenovo_sky_mixer[] = { | 8208 | static struct snd_kcontrol_new alc888_lenovo_sky_mixer[] = { |
8157 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), | 8209 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), |
8158 | HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), | 8210 | HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), |
@@ -8417,7 +8469,7 @@ static struct hda_verb alc883_2ch_fujitsu_pi2515_verbs[] = { | |||
8417 | { } /* end */ | 8469 | { } /* end */ |
8418 | }; | 8470 | }; |
8419 | 8471 | ||
8420 | static struct hda_verb alc883_tagra_verbs[] = { | 8472 | static struct hda_verb alc883_targa_verbs[] = { |
8421 | {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | 8473 | {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, |
8422 | {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | 8474 | {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, |
8423 | 8475 | ||
@@ -8626,8 +8678,8 @@ static void alc883_medion_md2_init_hook(struct hda_codec *codec) | |||
8626 | } | 8678 | } |
8627 | 8679 | ||
8628 | /* toggle speaker-output according to the hp-jack state */ | 8680 | /* toggle speaker-output according to the hp-jack state */ |
8629 | #define alc883_tagra_init_hook alc882_targa_init_hook | 8681 | #define alc883_targa_init_hook alc882_targa_init_hook |
8630 | #define alc883_tagra_unsol_event alc882_targa_unsol_event | 8682 | #define alc883_targa_unsol_event alc882_targa_unsol_event |
8631 | 8683 | ||
8632 | static void alc883_clevo_m720_mic_automute(struct hda_codec *codec) | 8684 | static void alc883_clevo_m720_mic_automute(struct hda_codec *codec) |
8633 | { | 8685 | { |
@@ -8957,7 +9009,7 @@ static void alc889A_mb31_unsol_event(struct hda_codec *codec, unsigned int res) | |||
8957 | #define alc883_loopbacks alc880_loopbacks | 9009 | #define alc883_loopbacks alc880_loopbacks |
8958 | #endif | 9010 | #endif |
8959 | 9011 | ||
8960 | /* pcm configuration: identiacal with ALC880 */ | 9012 | /* pcm configuration: identical with ALC880 */ |
8961 | #define alc883_pcm_analog_playback alc880_pcm_analog_playback | 9013 | #define alc883_pcm_analog_playback alc880_pcm_analog_playback |
8962 | #define alc883_pcm_analog_capture alc880_pcm_analog_capture | 9014 | #define alc883_pcm_analog_capture alc880_pcm_analog_capture |
8963 | #define alc883_pcm_analog_alt_capture alc880_pcm_analog_alt_capture | 9015 | #define alc883_pcm_analog_alt_capture alc880_pcm_analog_alt_capture |
@@ -8978,6 +9030,7 @@ static const char *alc883_models[ALC883_MODEL_LAST] = { | |||
8978 | [ALC883_ACER] = "acer", | 9030 | [ALC883_ACER] = "acer", |
8979 | [ALC883_ACER_ASPIRE] = "acer-aspire", | 9031 | [ALC883_ACER_ASPIRE] = "acer-aspire", |
8980 | [ALC888_ACER_ASPIRE_4930G] = "acer-aspire-4930g", | 9032 | [ALC888_ACER_ASPIRE_4930G] = "acer-aspire-4930g", |
9033 | [ALC888_ACER_ASPIRE_6530G] = "acer-aspire-6530g", | ||
8981 | [ALC888_ACER_ASPIRE_8930G] = "acer-aspire-8930g", | 9034 | [ALC888_ACER_ASPIRE_8930G] = "acer-aspire-8930g", |
8982 | [ALC883_MEDION] = "medion", | 9035 | [ALC883_MEDION] = "medion", |
8983 | [ALC883_MEDION_MD2] = "medion-md2", | 9036 | [ALC883_MEDION_MD2] = "medion-md2", |
@@ -9021,7 +9074,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = { | |||
9021 | SND_PCI_QUIRK(0x1025, 0x015e, "Acer Aspire 6930G", | 9074 | SND_PCI_QUIRK(0x1025, 0x015e, "Acer Aspire 6930G", |
9022 | ALC888_ACER_ASPIRE_4930G), | 9075 | ALC888_ACER_ASPIRE_4930G), |
9023 | SND_PCI_QUIRK(0x1025, 0x0166, "Acer Aspire 6530G", | 9076 | SND_PCI_QUIRK(0x1025, 0x0166, "Acer Aspire 6530G", |
9024 | ALC888_ACER_ASPIRE_4930G), | 9077 | ALC888_ACER_ASPIRE_6530G), |
9025 | /* default Acer -- disabled as it causes more problems. | 9078 | /* default Acer -- disabled as it causes more problems. |
9026 | * model=auto should work fine now | 9079 | * model=auto should work fine now |
9027 | */ | 9080 | */ |
@@ -9069,6 +9122,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = { | |||
9069 | SND_PCI_QUIRK(0x1462, 0x7267, "MSI", ALC883_3ST_6ch_DIG), | 9122 | SND_PCI_QUIRK(0x1462, 0x7267, "MSI", ALC883_3ST_6ch_DIG), |
9070 | SND_PCI_QUIRK(0x1462, 0x7280, "MSI", ALC883_6ST_DIG), | 9123 | SND_PCI_QUIRK(0x1462, 0x7280, "MSI", ALC883_6ST_DIG), |
9071 | SND_PCI_QUIRK(0x1462, 0x7327, "MSI", ALC883_6ST_DIG), | 9124 | SND_PCI_QUIRK(0x1462, 0x7327, "MSI", ALC883_6ST_DIG), |
9125 | SND_PCI_QUIRK(0x1462, 0x7350, "MSI", ALC883_6ST_DIG), | ||
9072 | SND_PCI_QUIRK(0x1462, 0xa422, "MSI", ALC883_TARGA_2ch_DIG), | 9126 | SND_PCI_QUIRK(0x1462, 0xa422, "MSI", ALC883_TARGA_2ch_DIG), |
9073 | SND_PCI_QUIRK(0x147b, 0x1083, "Abit IP35-PRO", ALC883_6ST_DIG), | 9127 | SND_PCI_QUIRK(0x147b, 0x1083, "Abit IP35-PRO", ALC883_6ST_DIG), |
9074 | SND_PCI_QUIRK(0x1558, 0x0721, "Clevo laptop M720R", ALC883_CLEVO_M720), | 9128 | SND_PCI_QUIRK(0x1558, 0x0721, "Clevo laptop M720R", ALC883_CLEVO_M720), |
@@ -9165,8 +9219,8 @@ static struct alc_config_preset alc883_presets[] = { | |||
9165 | .input_mux = &alc883_capture_source, | 9219 | .input_mux = &alc883_capture_source, |
9166 | }, | 9220 | }, |
9167 | [ALC883_TARGA_DIG] = { | 9221 | [ALC883_TARGA_DIG] = { |
9168 | .mixers = { alc883_tagra_mixer, alc883_chmode_mixer }, | 9222 | .mixers = { alc883_targa_mixer, alc883_chmode_mixer }, |
9169 | .init_verbs = { alc883_init_verbs, alc883_tagra_verbs}, | 9223 | .init_verbs = { alc883_init_verbs, alc883_targa_verbs}, |
9170 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), | 9224 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), |
9171 | .dac_nids = alc883_dac_nids, | 9225 | .dac_nids = alc883_dac_nids, |
9172 | .dig_out_nid = ALC883_DIGOUT_NID, | 9226 | .dig_out_nid = ALC883_DIGOUT_NID, |
@@ -9174,12 +9228,12 @@ static struct alc_config_preset alc883_presets[] = { | |||
9174 | .channel_mode = alc883_3ST_6ch_modes, | 9228 | .channel_mode = alc883_3ST_6ch_modes, |
9175 | .need_dac_fix = 1, | 9229 | .need_dac_fix = 1, |
9176 | .input_mux = &alc883_capture_source, | 9230 | .input_mux = &alc883_capture_source, |
9177 | .unsol_event = alc883_tagra_unsol_event, | 9231 | .unsol_event = alc883_targa_unsol_event, |
9178 | .init_hook = alc883_tagra_init_hook, | 9232 | .init_hook = alc883_targa_init_hook, |
9179 | }, | 9233 | }, |
9180 | [ALC883_TARGA_2ch_DIG] = { | 9234 | [ALC883_TARGA_2ch_DIG] = { |
9181 | .mixers = { alc883_tagra_2ch_mixer}, | 9235 | .mixers = { alc883_targa_2ch_mixer}, |
9182 | .init_verbs = { alc883_init_verbs, alc883_tagra_verbs}, | 9236 | .init_verbs = { alc883_init_verbs, alc883_targa_verbs}, |
9183 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), | 9237 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), |
9184 | .dac_nids = alc883_dac_nids, | 9238 | .dac_nids = alc883_dac_nids, |
9185 | .adc_nids = alc883_adc_nids_alt, | 9239 | .adc_nids = alc883_adc_nids_alt, |
@@ -9188,13 +9242,13 @@ static struct alc_config_preset alc883_presets[] = { | |||
9188 | .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), | 9242 | .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), |
9189 | .channel_mode = alc883_3ST_2ch_modes, | 9243 | .channel_mode = alc883_3ST_2ch_modes, |
9190 | .input_mux = &alc883_capture_source, | 9244 | .input_mux = &alc883_capture_source, |
9191 | .unsol_event = alc883_tagra_unsol_event, | 9245 | .unsol_event = alc883_targa_unsol_event, |
9192 | .init_hook = alc883_tagra_init_hook, | 9246 | .init_hook = alc883_targa_init_hook, |
9193 | }, | 9247 | }, |
9194 | [ALC883_TARGA_8ch_DIG] = { | 9248 | [ALC883_TARGA_8ch_DIG] = { |
9195 | .mixers = { alc883_base_mixer, alc883_chmode_mixer }, | 9249 | .mixers = { alc883_base_mixer, alc883_chmode_mixer }, |
9196 | .init_verbs = { alc883_init_verbs, alc880_gpio3_init_verbs, | 9250 | .init_verbs = { alc883_init_verbs, alc880_gpio3_init_verbs, |
9197 | alc883_tagra_verbs }, | 9251 | alc883_targa_verbs }, |
9198 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), | 9252 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), |
9199 | .dac_nids = alc883_dac_nids, | 9253 | .dac_nids = alc883_dac_nids, |
9200 | .num_adc_nids = ARRAY_SIZE(alc883_adc_nids_rev), | 9254 | .num_adc_nids = ARRAY_SIZE(alc883_adc_nids_rev), |
@@ -9206,8 +9260,8 @@ static struct alc_config_preset alc883_presets[] = { | |||
9206 | .channel_mode = alc883_4ST_8ch_modes, | 9260 | .channel_mode = alc883_4ST_8ch_modes, |
9207 | .need_dac_fix = 1, | 9261 | .need_dac_fix = 1, |
9208 | .input_mux = &alc883_capture_source, | 9262 | .input_mux = &alc883_capture_source, |
9209 | .unsol_event = alc883_tagra_unsol_event, | 9263 | .unsol_event = alc883_targa_unsol_event, |
9210 | .init_hook = alc883_tagra_init_hook, | 9264 | .init_hook = alc883_targa_init_hook, |
9211 | }, | 9265 | }, |
9212 | [ALC883_ACER] = { | 9266 | [ALC883_ACER] = { |
9213 | .mixers = { alc883_base_mixer }, | 9267 | .mixers = { alc883_base_mixer }, |
@@ -9255,6 +9309,24 @@ static struct alc_config_preset alc883_presets[] = { | |||
9255 | .unsol_event = alc_automute_amp_unsol_event, | 9309 | .unsol_event = alc_automute_amp_unsol_event, |
9256 | .init_hook = alc888_acer_aspire_4930g_init_hook, | 9310 | .init_hook = alc888_acer_aspire_4930g_init_hook, |
9257 | }, | 9311 | }, |
9312 | [ALC888_ACER_ASPIRE_6530G] = { | ||
9313 | .mixers = { alc888_acer_aspire_6530_mixer }, | ||
9314 | .init_verbs = { alc883_init_verbs, alc880_gpio1_init_verbs, | ||
9315 | alc888_acer_aspire_6530g_verbs }, | ||
9316 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), | ||
9317 | .dac_nids = alc883_dac_nids, | ||
9318 | .num_adc_nids = ARRAY_SIZE(alc883_adc_nids_rev), | ||
9319 | .adc_nids = alc883_adc_nids_rev, | ||
9320 | .capsrc_nids = alc883_capsrc_nids_rev, | ||
9321 | .dig_out_nid = ALC883_DIGOUT_NID, | ||
9322 | .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), | ||
9323 | .channel_mode = alc883_3ST_2ch_modes, | ||
9324 | .num_mux_defs = | ||
9325 | ARRAY_SIZE(alc888_2_capture_sources), | ||
9326 | .input_mux = alc888_acer_aspire_6530_sources, | ||
9327 | .unsol_event = alc_automute_amp_unsol_event, | ||
9328 | .init_hook = alc888_acer_aspire_4930g_init_hook, | ||
9329 | }, | ||
9258 | [ALC888_ACER_ASPIRE_8930G] = { | 9330 | [ALC888_ACER_ASPIRE_8930G] = { |
9259 | .mixers = { alc888_base_mixer, | 9331 | .mixers = { alc888_base_mixer, |
9260 | alc883_chmode_mixer }, | 9332 | alc883_chmode_mixer }, |
@@ -9361,7 +9433,7 @@ static struct alc_config_preset alc883_presets[] = { | |||
9361 | .init_hook = alc888_lenovo_ms7195_front_automute, | 9433 | .init_hook = alc888_lenovo_ms7195_front_automute, |
9362 | }, | 9434 | }, |
9363 | [ALC883_HAIER_W66] = { | 9435 | [ALC883_HAIER_W66] = { |
9364 | .mixers = { alc883_tagra_2ch_mixer}, | 9436 | .mixers = { alc883_targa_2ch_mixer}, |
9365 | .init_verbs = { alc883_init_verbs, alc883_haier_w66_verbs}, | 9437 | .init_verbs = { alc883_init_verbs, alc883_haier_w66_verbs}, |
9366 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), | 9438 | .num_dacs = ARRAY_SIZE(alc883_dac_nids), |
9367 | .dac_nids = alc883_dac_nids, | 9439 | .dac_nids = alc883_dac_nids, |
@@ -11131,7 +11203,7 @@ static struct hda_verb alc262_toshiba_rx1_unsol_verbs[] = { | |||
11131 | #define alc262_loopbacks alc880_loopbacks | 11203 | #define alc262_loopbacks alc880_loopbacks |
11132 | #endif | 11204 | #endif |
11133 | 11205 | ||
11134 | /* pcm configuration: identiacal with ALC880 */ | 11206 | /* pcm configuration: identical with ALC880 */ |
11135 | #define alc262_pcm_analog_playback alc880_pcm_analog_playback | 11207 | #define alc262_pcm_analog_playback alc880_pcm_analog_playback |
11136 | #define alc262_pcm_analog_capture alc880_pcm_analog_capture | 11208 | #define alc262_pcm_analog_capture alc880_pcm_analog_capture |
11137 | #define alc262_pcm_digital_playback alc880_pcm_digital_playback | 11209 | #define alc262_pcm_digital_playback alc880_pcm_digital_playback |
@@ -12286,7 +12358,7 @@ static void alc268_auto_init_mono_speaker_out(struct hda_codec *codec) | |||
12286 | AC_VERB_SET_AMP_GAIN_MUTE, dac_vol2); | 12358 | AC_VERB_SET_AMP_GAIN_MUTE, dac_vol2); |
12287 | } | 12359 | } |
12288 | 12360 | ||
12289 | /* pcm configuration: identiacal with ALC880 */ | 12361 | /* pcm configuration: identical with ALC880 */ |
12290 | #define alc268_pcm_analog_playback alc880_pcm_analog_playback | 12362 | #define alc268_pcm_analog_playback alc880_pcm_analog_playback |
12291 | #define alc268_pcm_analog_capture alc880_pcm_analog_capture | 12363 | #define alc268_pcm_analog_capture alc880_pcm_analog_capture |
12292 | #define alc268_pcm_analog_alt_capture alc880_pcm_analog_alt_capture | 12364 | #define alc268_pcm_analog_alt_capture alc880_pcm_analog_alt_capture |
@@ -13197,7 +13269,7 @@ static int alc269_auto_create_analog_input_ctls(struct alc_spec *spec, | |||
13197 | #define alc269_loopbacks alc880_loopbacks | 13269 | #define alc269_loopbacks alc880_loopbacks |
13198 | #endif | 13270 | #endif |
13199 | 13271 | ||
13200 | /* pcm configuration: identiacal with ALC880 */ | 13272 | /* pcm configuration: identical with ALC880 */ |
13201 | #define alc269_pcm_analog_playback alc880_pcm_analog_playback | 13273 | #define alc269_pcm_analog_playback alc880_pcm_analog_playback |
13202 | #define alc269_pcm_analog_capture alc880_pcm_analog_capture | 13274 | #define alc269_pcm_analog_capture alc880_pcm_analog_capture |
13203 | #define alc269_pcm_digital_playback alc880_pcm_digital_playback | 13275 | #define alc269_pcm_digital_playback alc880_pcm_digital_playback |
@@ -14059,7 +14131,7 @@ static void alc861_toshiba_unsol_event(struct hda_codec *codec, | |||
14059 | alc861_toshiba_automute(codec); | 14131 | alc861_toshiba_automute(codec); |
14060 | } | 14132 | } |
14061 | 14133 | ||
14062 | /* pcm configuration: identiacal with ALC880 */ | 14134 | /* pcm configuration: identical with ALC880 */ |
14063 | #define alc861_pcm_analog_playback alc880_pcm_analog_playback | 14135 | #define alc861_pcm_analog_playback alc880_pcm_analog_playback |
14064 | #define alc861_pcm_analog_capture alc880_pcm_analog_capture | 14136 | #define alc861_pcm_analog_capture alc880_pcm_analog_capture |
14065 | #define alc861_pcm_digital_playback alc880_pcm_digital_playback | 14137 | #define alc861_pcm_digital_playback alc880_pcm_digital_playback |
@@ -14582,7 +14654,7 @@ static hda_nid_t alc861vd_dac_nids[4] = { | |||
14582 | 14654 | ||
14583 | /* dac_nids for ALC660vd are in a different order - according to | 14655 | /* dac_nids for ALC660vd are in a different order - according to |
14584 | * Realtek's driver. | 14656 | * Realtek's driver. |
14585 | * This should probably tesult in a different mixer for 6stack models | 14657 | * This should probably result in a different mixer for 6stack models |
14586 | * of ALC660vd codecs, but for now there is only 3stack mixer | 14658 | * of ALC660vd codecs, but for now there is only 3stack mixer |
14587 | * - and it is the same as in 861vd. | 14659 | * - and it is the same as in 861vd. |
14588 | * adc_nids in ALC660vd are (is) the same as in 861vd | 14660 | * adc_nids in ALC660vd are (is) the same as in 861vd |
@@ -15027,7 +15099,7 @@ static void alc861vd_dallas_init_hook(struct hda_codec *codec) | |||
15027 | #define alc861vd_loopbacks alc880_loopbacks | 15099 | #define alc861vd_loopbacks alc880_loopbacks |
15028 | #endif | 15100 | #endif |
15029 | 15101 | ||
15030 | /* pcm configuration: identiacal with ALC880 */ | 15102 | /* pcm configuration: identical with ALC880 */ |
15031 | #define alc861vd_pcm_analog_playback alc880_pcm_analog_playback | 15103 | #define alc861vd_pcm_analog_playback alc880_pcm_analog_playback |
15032 | #define alc861vd_pcm_analog_capture alc880_pcm_analog_capture | 15104 | #define alc861vd_pcm_analog_capture alc880_pcm_analog_capture |
15033 | #define alc861vd_pcm_digital_playback alc880_pcm_digital_playback | 15105 | #define alc861vd_pcm_digital_playback alc880_pcm_digital_playback |
@@ -15206,7 +15278,7 @@ static void alc861vd_auto_init_hp_out(struct hda_codec *codec) | |||
15206 | hda_nid_t pin; | 15278 | hda_nid_t pin; |
15207 | 15279 | ||
15208 | pin = spec->autocfg.hp_pins[0]; | 15280 | pin = spec->autocfg.hp_pins[0]; |
15209 | if (pin) /* connect to front and use dac 0 */ | 15281 | if (pin) /* connect to front and use dac 0 */ |
15210 | alc861vd_auto_set_output_and_unmute(codec, pin, PIN_HP, 0); | 15282 | alc861vd_auto_set_output_and_unmute(codec, pin, PIN_HP, 0); |
15211 | pin = spec->autocfg.speaker_pins[0]; | 15283 | pin = spec->autocfg.speaker_pins[0]; |
15212 | if (pin) | 15284 | if (pin) |
@@ -16669,7 +16741,7 @@ static struct snd_kcontrol_new alc272_nc10_mixer[] = { | |||
16669 | #endif | 16741 | #endif |
16670 | 16742 | ||
16671 | 16743 | ||
16672 | /* pcm configuration: identiacal with ALC880 */ | 16744 | /* pcm configuration: identical with ALC880 */ |
16673 | #define alc662_pcm_analog_playback alc880_pcm_analog_playback | 16745 | #define alc662_pcm_analog_playback alc880_pcm_analog_playback |
16674 | #define alc662_pcm_analog_capture alc880_pcm_analog_capture | 16746 | #define alc662_pcm_analog_capture alc880_pcm_analog_capture |
16675 | #define alc662_pcm_digital_playback alc880_pcm_digital_playback | 16747 | #define alc662_pcm_digital_playback alc880_pcm_digital_playback |
diff --git a/sound/soc/txx9/txx9aclc.c b/sound/soc/txx9/txx9aclc.c index fa336616152e..938a58a5a244 100644 --- a/sound/soc/txx9/txx9aclc.c +++ b/sound/soc/txx9/txx9aclc.c | |||
@@ -297,9 +297,9 @@ static int txx9aclc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, | |||
297 | static bool filter(struct dma_chan *chan, void *param) | 297 | static bool filter(struct dma_chan *chan, void *param) |
298 | { | 298 | { |
299 | struct txx9aclc_dmadata *dmadata = param; | 299 | struct txx9aclc_dmadata *dmadata = param; |
300 | char devname[BUS_ID_SIZE + 2]; | 300 | char devname[20 + 2]; /* FIXME: old BUS_ID_SIZE + 2 */ |
301 | 301 | ||
302 | sprintf(devname, "%s.%d", dmadata->dma_res->name, | 302 | snprintf(devname, sizeof(devname), "%s.%d", dmadata->dma_res->name, |
303 | (int)dmadata->dma_res->start); | 303 | (int)dmadata->dma_res->start); |
304 | if (strcmp(dev_name(chan->device->dev), devname) == 0) { | 304 | if (strcmp(dev_name(chan->device->dev), devname) == 0) { |
305 | chan->private = &dmadata->dma_slave; | 305 | chan->private = &dmadata->dma_slave; |
diff --git a/sound/usb/caiaq/audio.c b/sound/usb/caiaq/audio.c index b14451342166..8f9b60c5d74c 100644 --- a/sound/usb/caiaq/audio.c +++ b/sound/usb/caiaq/audio.c | |||
@@ -199,8 +199,9 @@ static int snd_usb_caiaq_pcm_prepare(struct snd_pcm_substream *substream) | |||
199 | dev->period_out_count[index] = BYTES_PER_SAMPLE + 1; | 199 | dev->period_out_count[index] = BYTES_PER_SAMPLE + 1; |
200 | dev->audio_out_buf_pos[index] = BYTES_PER_SAMPLE + 1; | 200 | dev->audio_out_buf_pos[index] = BYTES_PER_SAMPLE + 1; |
201 | } else { | 201 | } else { |
202 | dev->period_in_count[index] = BYTES_PER_SAMPLE; | 202 | int in_pos = (dev->spec.data_alignment == 2) ? 0 : 2; |
203 | dev->audio_in_buf_pos[index] = BYTES_PER_SAMPLE; | 203 | dev->period_in_count[index] = BYTES_PER_SAMPLE + in_pos; |
204 | dev->audio_in_buf_pos[index] = BYTES_PER_SAMPLE + in_pos; | ||
204 | } | 205 | } |
205 | 206 | ||
206 | if (dev->streaming) | 207 | if (dev->streaming) |
diff --git a/sound/usb/caiaq/device.c b/sound/usb/caiaq/device.c index 22406245a98b..0e5db719de24 100644 --- a/sound/usb/caiaq/device.c +++ b/sound/usb/caiaq/device.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #include "input.h" | 35 | #include "input.h" |
36 | 36 | ||
37 | MODULE_AUTHOR("Daniel Mack <daniel@caiaq.de>"); | 37 | MODULE_AUTHOR("Daniel Mack <daniel@caiaq.de>"); |
38 | MODULE_DESCRIPTION("caiaq USB audio, version 1.3.16"); | 38 | MODULE_DESCRIPTION("caiaq USB audio, version 1.3.17"); |
39 | MODULE_LICENSE("GPL"); | 39 | MODULE_LICENSE("GPL"); |
40 | MODULE_SUPPORTED_DEVICE("{{Native Instruments, RigKontrol2}," | 40 | MODULE_SUPPORTED_DEVICE("{{Native Instruments, RigKontrol2}," |
41 | "{Native Instruments, RigKontrol3}," | 41 | "{Native Instruments, RigKontrol3}," |