Commit 41331844 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
  ALSA: hda - Add model=6530g option
  ALSA: hda - Acer Inspire 6530G model for Realtek ALC888
  ALSA: snd_usb_caiaq: fix legacy input streaming
  ASoC: Kill BUS_ID_SIZE
  ALSA: HDA - Correct trivial typos in comments.
  ALSA: HDA - Name-fixes in code (tagra/targa)
  ALSA: HDA - Add pci-quirk for MSI MS-7350 motherboard.
  ALSA: hda - Fix memory leak at codec creation
parents d06063cc 47166281
...@@ -139,6 +139,7 @@ ALC883/888 ...@@ -139,6 +139,7 @@ ALC883/888
acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc) acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc)
acer-aspire Acer Aspire 9810 acer-aspire Acer Aspire 9810
acer-aspire-4930g Acer Aspire 4930G acer-aspire-4930g Acer Aspire 4930G
acer-aspire-6530g Acer Aspire 6530G
acer-aspire-8930g Acer Aspire 8930G acer-aspire-8930g Acer Aspire 8930G
medion Medion Laptops medion Medion Laptops
medion-md2 Medion MD2 medion-md2 Medion MD2
......
...@@ -972,8 +972,6 @@ int /*__devinit*/ snd_hda_codec_new(struct hda_bus *bus, unsigned int codec_addr ...@@ -972,8 +972,6 @@ int /*__devinit*/ snd_hda_codec_new(struct hda_bus *bus, unsigned int codec_addr
snd_hda_codec_read(codec, nid, 0, snd_hda_codec_read(codec, nid, 0,
AC_VERB_GET_SUBSYSTEM_ID, 0); AC_VERB_GET_SUBSYSTEM_ID, 0);
} }
if (bus->modelname)
codec->modelname = kstrdup(bus->modelname, GFP_KERNEL);
/* power-up all before initialization */ /* power-up all before initialization */
hda_set_power_state(codec, hda_set_power_state(codec,
......
...@@ -224,6 +224,7 @@ enum { ...@@ -224,6 +224,7 @@ enum {
ALC883_ACER, ALC883_ACER,
ALC883_ACER_ASPIRE, ALC883_ACER_ASPIRE,
ALC888_ACER_ASPIRE_4930G, ALC888_ACER_ASPIRE_4930G,
ALC888_ACER_ASPIRE_6530G,
ALC888_ACER_ASPIRE_8930G, ALC888_ACER_ASPIRE_8930G,
ALC883_MEDION, ALC883_MEDION,
ALC883_MEDION_MD2, ALC883_MEDION_MD2,
...@@ -970,7 +971,7 @@ static void alc_automute_pin(struct hda_codec *codec) ...@@ -970,7 +971,7 @@ static void alc_automute_pin(struct hda_codec *codec)
} }
} }
#if 0 /* it's broken in some acses -- temporarily disabled */ #if 0 /* it's broken in some cases -- temporarily disabled */
static void alc_mic_automute(struct hda_codec *codec) static void alc_mic_automute(struct hda_codec *codec)
{ {
struct alc_spec *spec = codec->spec; struct alc_spec *spec = codec->spec;
...@@ -1170,7 +1171,7 @@ static int alc_subsystem_id(struct hda_codec *codec, ...@@ -1170,7 +1171,7 @@ static int alc_subsystem_id(struct hda_codec *codec,
/* invalid SSID, check the special NID pin defcfg instead */ /* invalid SSID, check the special NID pin defcfg instead */
/* /*
* 31~30 : port conetcivity * 31~30 : port connectivity
* 29~21 : reserve * 29~21 : reserve
* 20 : PCBEEP input * 20 : PCBEEP input
* 19~16 : Check sum (15:1) * 19~16 : Check sum (15:1)
...@@ -1470,6 +1471,25 @@ static struct hda_verb alc888_acer_aspire_4930g_verbs[] = { ...@@ -1470,6 +1471,25 @@ static struct hda_verb alc888_acer_aspire_4930g_verbs[] = {
{ } { }
}; };
/*
* ALC888 Acer Aspire 6530G model
*/
static struct hda_verb alc888_acer_aspire_6530g_verbs[] = {
/* Bias voltage on for external mic port */
{0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN | PIN_VREF80},
/* Enable unsolicited event for HP jack */
{0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
/* Enable speaker output */
{0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
{0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
/* Enable headphone output */
{0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT | PIN_HP},
{0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
{0x15, AC_VERB_SET_CONNECT_SEL, 0x00},
{ }
};
/* /*
* ALC889 Acer Aspire 8930G model * ALC889 Acer Aspire 8930G model
*/ */
...@@ -1544,6 +1564,25 @@ static struct hda_input_mux alc888_2_capture_sources[2] = { ...@@ -1544,6 +1564,25 @@ static struct hda_input_mux alc888_2_capture_sources[2] = {
} }
}; };
static struct hda_input_mux alc888_acer_aspire_6530_sources[2] = {
/* Interal mic only available on one ADC */
{
.num_items = 3,
.items = {
{ "Ext Mic", 0x0 },
{ "CD", 0x4 },
{ "Int Mic", 0xb },
},
},
{
.num_items = 2,
.items = {
{ "Ext Mic", 0x0 },
{ "CD", 0x4 },
},
}
};
static struct hda_input_mux alc889_capture_sources[3] = { static struct hda_input_mux alc889_capture_sources[3] = {
/* Digital mic only available on first "ADC" */ /* Digital mic only available on first "ADC" */
{ {
...@@ -6347,7 +6386,7 @@ static struct hda_channel_mode alc882_sixstack_modes[2] = { ...@@ -6347,7 +6386,7 @@ static struct hda_channel_mode alc882_sixstack_modes[2] = {
}; };
/* /*
* macbook pro ALC885 can switch LineIn to LineOut without loosing Mic * macbook pro ALC885 can switch LineIn to LineOut without losing Mic
*/ */
/* /*
...@@ -7047,7 +7086,7 @@ static struct hda_verb alc882_auto_init_verbs[] = { ...@@ -7047,7 +7086,7 @@ static struct hda_verb alc882_auto_init_verbs[] = {
#define alc882_loopbacks alc880_loopbacks #define alc882_loopbacks alc880_loopbacks
#endif #endif
/* pcm configuration: identiacal with ALC880 */ /* pcm configuration: identical with ALC880 */
#define alc882_pcm_analog_playback alc880_pcm_analog_playback #define alc882_pcm_analog_playback alc880_pcm_analog_playback
#define alc882_pcm_analog_capture alc880_pcm_analog_capture #define alc882_pcm_analog_capture alc880_pcm_analog_capture
#define alc882_pcm_digital_playback alc880_pcm_digital_playback #define alc882_pcm_digital_playback alc880_pcm_digital_playback
...@@ -8068,7 +8107,7 @@ static struct snd_kcontrol_new alc883_fivestack_mixer[] = { ...@@ -8068,7 +8107,7 @@ static struct snd_kcontrol_new alc883_fivestack_mixer[] = {
{ } /* end */ { } /* end */
}; };
static struct snd_kcontrol_new alc883_tagra_mixer[] = { static struct snd_kcontrol_new alc883_targa_mixer[] = {
HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
HDA_CODEC_MUTE("Headphone Playback Switch", 0x14, 0x0, HDA_OUTPUT), HDA_CODEC_MUTE("Headphone Playback Switch", 0x14, 0x0, HDA_OUTPUT),
HDA_CODEC_MUTE("Front Playback Switch", 0x1b, 0x0, HDA_OUTPUT), HDA_CODEC_MUTE("Front Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
...@@ -8088,7 +8127,7 @@ static struct snd_kcontrol_new alc883_tagra_mixer[] = { ...@@ -8088,7 +8127,7 @@ static struct snd_kcontrol_new alc883_tagra_mixer[] = {
{ } /* end */ { } /* end */
}; };
static struct snd_kcontrol_new alc883_tagra_2ch_mixer[] = { static struct snd_kcontrol_new alc883_targa_2ch_mixer[] = {
HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
HDA_CODEC_MUTE("Headphone Playback Switch", 0x14, 0x0, HDA_OUTPUT), HDA_CODEC_MUTE("Headphone Playback Switch", 0x14, 0x0, HDA_OUTPUT),
HDA_CODEC_MUTE("Front Playback Switch", 0x1b, 0x0, HDA_OUTPUT), HDA_CODEC_MUTE("Front Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
...@@ -8153,6 +8192,19 @@ static struct snd_kcontrol_new alc883_acer_aspire_mixer[] = { ...@@ -8153,6 +8192,19 @@ static struct snd_kcontrol_new alc883_acer_aspire_mixer[] = {
{ } /* end */ { } /* end */
}; };
static struct snd_kcontrol_new alc888_acer_aspire_6530_mixer[] = {
HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT),
HDA_CODEC_VOLUME("LFE Playback Volume", 0x0f, 0x0, HDA_OUTPUT),
HDA_BIND_MUTE("LFE Playback Switch", 0x0f, 2, HDA_INPUT),
HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
{ } /* end */
};
static struct snd_kcontrol_new alc888_lenovo_sky_mixer[] = { static struct snd_kcontrol_new alc888_lenovo_sky_mixer[] = {
HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT),
...@@ -8417,7 +8469,7 @@ static struct hda_verb alc883_2ch_fujitsu_pi2515_verbs[] = { ...@@ -8417,7 +8469,7 @@ static struct hda_verb alc883_2ch_fujitsu_pi2515_verbs[] = {
{ } /* end */ { } /* end */
}; };
static struct hda_verb alc883_tagra_verbs[] = { static struct hda_verb alc883_targa_verbs[] = {
{0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
{0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
...@@ -8626,8 +8678,8 @@ static void alc883_medion_md2_init_hook(struct hda_codec *codec) ...@@ -8626,8 +8678,8 @@ static void alc883_medion_md2_init_hook(struct hda_codec *codec)
} }
/* toggle speaker-output according to the hp-jack state */ /* toggle speaker-output according to the hp-jack state */
#define alc883_tagra_init_hook alc882_targa_init_hook #define alc883_targa_init_hook alc882_targa_init_hook
#define alc883_tagra_unsol_event alc882_targa_unsol_event #define alc883_targa_unsol_event alc882_targa_unsol_event
static void alc883_clevo_m720_mic_automute(struct hda_codec *codec) static void alc883_clevo_m720_mic_automute(struct hda_codec *codec)
{ {
...@@ -8957,7 +9009,7 @@ static void alc889A_mb31_unsol_event(struct hda_codec *codec, unsigned int res) ...@@ -8957,7 +9009,7 @@ static void alc889A_mb31_unsol_event(struct hda_codec *codec, unsigned int res)
#define alc883_loopbacks alc880_loopbacks #define alc883_loopbacks alc880_loopbacks
#endif #endif
/* pcm configuration: identiacal with ALC880 */ /* pcm configuration: identical with ALC880 */
#define alc883_pcm_analog_playback alc880_pcm_analog_playback #define alc883_pcm_analog_playback alc880_pcm_analog_playback
#define alc883_pcm_analog_capture alc880_pcm_analog_capture #define alc883_pcm_analog_capture alc880_pcm_analog_capture
#define alc883_pcm_analog_alt_capture alc880_pcm_analog_alt_capture #define alc883_pcm_analog_alt_capture alc880_pcm_analog_alt_capture
...@@ -8978,6 +9030,7 @@ static const char *alc883_models[ALC883_MODEL_LAST] = { ...@@ -8978,6 +9030,7 @@ static const char *alc883_models[ALC883_MODEL_LAST] = {
[ALC883_ACER] = "acer", [ALC883_ACER] = "acer",
[ALC883_ACER_ASPIRE] = "acer-aspire", [ALC883_ACER_ASPIRE] = "acer-aspire",
[ALC888_ACER_ASPIRE_4930G] = "acer-aspire-4930g", [ALC888_ACER_ASPIRE_4930G] = "acer-aspire-4930g",
[ALC888_ACER_ASPIRE_6530G] = "acer-aspire-6530g",
[ALC888_ACER_ASPIRE_8930G] = "acer-aspire-8930g", [ALC888_ACER_ASPIRE_8930G] = "acer-aspire-8930g",
[ALC883_MEDION] = "medion", [ALC883_MEDION] = "medion",
[ALC883_MEDION_MD2] = "medion-md2", [ALC883_MEDION_MD2] = "medion-md2",
...@@ -9021,7 +9074,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = { ...@@ -9021,7 +9074,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = {
SND_PCI_QUIRK(0x1025, 0x015e, "Acer Aspire 6930G", SND_PCI_QUIRK(0x1025, 0x015e, "Acer Aspire 6930G",
ALC888_ACER_ASPIRE_4930G), ALC888_ACER_ASPIRE_4930G),
SND_PCI_QUIRK(0x1025, 0x0166, "Acer Aspire 6530G", SND_PCI_QUIRK(0x1025, 0x0166, "Acer Aspire 6530G",
ALC888_ACER_ASPIRE_4930G), ALC888_ACER_ASPIRE_6530G),
/* default Acer -- disabled as it causes more problems. /* default Acer -- disabled as it causes more problems.
* model=auto should work fine now * model=auto should work fine now
*/ */
...@@ -9069,6 +9122,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = { ...@@ -9069,6 +9122,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = {
SND_PCI_QUIRK(0x1462, 0x7267, "MSI", ALC883_3ST_6ch_DIG), SND_PCI_QUIRK(0x1462, 0x7267, "MSI", ALC883_3ST_6ch_DIG),
SND_PCI_QUIRK(0x1462, 0x7280, "MSI", ALC883_6ST_DIG), SND_PCI_QUIRK(0x1462, 0x7280, "MSI", ALC883_6ST_DIG),
SND_PCI_QUIRK(0x1462, 0x7327, "MSI", ALC883_6ST_DIG), SND_PCI_QUIRK(0x1462, 0x7327, "MSI", ALC883_6ST_DIG),
SND_PCI_QUIRK(0x1462, 0x7350, "MSI", ALC883_6ST_DIG),
SND_PCI_QUIRK(0x1462, 0xa422, "MSI", ALC883_TARGA_2ch_DIG), SND_PCI_QUIRK(0x1462, 0xa422, "MSI", ALC883_TARGA_2ch_DIG),
SND_PCI_QUIRK(0x147b, 0x1083, "Abit IP35-PRO", ALC883_6ST_DIG), SND_PCI_QUIRK(0x147b, 0x1083, "Abit IP35-PRO", ALC883_6ST_DIG),
SND_PCI_QUIRK(0x1558, 0x0721, "Clevo laptop M720R", ALC883_CLEVO_M720), SND_PCI_QUIRK(0x1558, 0x0721, "Clevo laptop M720R", ALC883_CLEVO_M720),
...@@ -9165,8 +9219,8 @@ static struct alc_config_preset alc883_presets[] = { ...@@ -9165,8 +9219,8 @@ static struct alc_config_preset alc883_presets[] = {
.input_mux = &alc883_capture_source, .input_mux = &alc883_capture_source,
}, },
[ALC883_TARGA_DIG] = { [ALC883_TARGA_DIG] = {
.mixers = { alc883_tagra_mixer, alc883_chmode_mixer }, .mixers = { alc883_targa_mixer, alc883_chmode_mixer },
.init_verbs = { alc883_init_verbs, alc883_tagra_verbs}, .init_verbs = { alc883_init_verbs, alc883_targa_verbs},
.num_dacs = ARRAY_SIZE(alc883_dac_nids), .num_dacs = ARRAY_SIZE(alc883_dac_nids),
.dac_nids = alc883_dac_nids, .dac_nids = alc883_dac_nids,
.dig_out_nid = ALC883_DIGOUT_NID, .dig_out_nid = ALC883_DIGOUT_NID,
...@@ -9174,12 +9228,12 @@ static struct alc_config_preset alc883_presets[] = { ...@@ -9174,12 +9228,12 @@ static struct alc_config_preset alc883_presets[] = {
.channel_mode = alc883_3ST_6ch_modes, .channel_mode = alc883_3ST_6ch_modes,
.need_dac_fix = 1, .need_dac_fix = 1,
.input_mux = &alc883_capture_source, .input_mux = &alc883_capture_source,
.unsol_event = alc883_tagra_unsol_event, .unsol_event = alc883_targa_unsol_event,
.init_hook = alc883_tagra_init_hook, .init_hook = alc883_targa_init_hook,
}, },
[ALC883_TARGA_2ch_DIG] = { [ALC883_TARGA_2ch_DIG] = {
.mixers = { alc883_tagra_2ch_mixer}, .mixers = { alc883_targa_2ch_mixer},
.init_verbs = { alc883_init_verbs, alc883_tagra_verbs}, .init_verbs = { alc883_init_verbs, alc883_targa_verbs},
.num_dacs = ARRAY_SIZE(alc883_dac_nids), .num_dacs = ARRAY_SIZE(alc883_dac_nids),
.dac_nids = alc883_dac_nids, .dac_nids = alc883_dac_nids,
.adc_nids = alc883_adc_nids_alt, .adc_nids = alc883_adc_nids_alt,
...@@ -9188,13 +9242,13 @@ static struct alc_config_preset alc883_presets[] = { ...@@ -9188,13 +9242,13 @@ static struct alc_config_preset alc883_presets[] = {
.num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes),
.channel_mode = alc883_3ST_2ch_modes, .channel_mode = alc883_3ST_2ch_modes,
.input_mux = &alc883_capture_source, .input_mux = &alc883_capture_source,
.unsol_event = alc883_tagra_unsol_event, .unsol_event = alc883_targa_unsol_event,
.init_hook = alc883_tagra_init_hook, .init_hook = alc883_targa_init_hook,
}, },
[ALC883_TARGA_8ch_DIG] = { [ALC883_TARGA_8ch_DIG] = {
.mixers = { alc883_base_mixer, alc883_chmode_mixer }, .mixers = { alc883_base_mixer, alc883_chmode_mixer },
.init_verbs = { alc883_init_verbs, alc880_gpio3_init_verbs, .init_verbs = { alc883_init_verbs, alc880_gpio3_init_verbs,
alc883_tagra_verbs }, alc883_targa_verbs },
.num_dacs = ARRAY_SIZE(alc883_dac_nids), .num_dacs = ARRAY_SIZE(alc883_dac_nids),
.dac_nids = alc883_dac_nids, .dac_nids = alc883_dac_nids,
.num_adc_nids = ARRAY_SIZE(alc883_adc_nids_rev), .num_adc_nids = ARRAY_SIZE(alc883_adc_nids_rev),
...@@ -9206,8 +9260,8 @@ static struct alc_config_preset alc883_presets[] = { ...@@ -9206,8 +9260,8 @@ static struct alc_config_preset alc883_presets[] = {
.channel_mode = alc883_4ST_8ch_modes, .channel_mode = alc883_4ST_8ch_modes,
.need_dac_fix = 1, .need_dac_fix = 1,
.input_mux = &alc883_capture_source, .input_mux = &alc883_capture_source,
.unsol_event = alc883_tagra_unsol_event, .unsol_event = alc883_targa_unsol_event,
.init_hook = alc883_tagra_init_hook, .init_hook = alc883_targa_init_hook,
}, },
[ALC883_ACER] = { [ALC883_ACER] = {
.mixers = { alc883_base_mixer }, .mixers = { alc883_base_mixer },
...@@ -9255,6 +9309,24 @@ static struct alc_config_preset alc883_presets[] = { ...@@ -9255,6 +9309,24 @@ static struct alc_config_preset alc883_presets[] = {
.unsol_event = alc_automute_amp_unsol_event, .unsol_event = alc_automute_amp_unsol_event,
.init_hook = alc888_acer_aspire_4930g_init_hook, .init_hook = alc888_acer_aspire_4930g_init_hook,
}, },
[ALC888_ACER_ASPIRE_6530G] = {
.mixers = { alc888_acer_aspire_6530_mixer },
.init_verbs = { alc883_init_verbs, alc880_gpio1_init_verbs,
alc888_acer_aspire_6530g_verbs },
.num_dacs = ARRAY_SIZE(alc883_dac_nids),
.dac_nids = alc883_dac_nids,
.num_adc_nids = ARRAY_SIZE(alc883_adc_nids_rev),
.adc_nids = alc883_adc_nids_rev,
.capsrc_nids = alc883_capsrc_nids_rev,
.dig_out_nid = ALC883_DIGOUT_NID,
.num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes),
.channel_mode = alc883_3ST_2ch_modes,
.num_mux_defs =
ARRAY_SIZE(alc888_2_capture_sources),
.input_mux = alc888_acer_aspire_6530_sources,
.unsol_event = alc_automute_amp_unsol_event,
.init_hook = alc888_acer_aspire_4930g_init_hook,
},
[ALC888_ACER_ASPIRE_8930G] = { [ALC888_ACER_ASPIRE_8930G] = {
.mixers = { alc888_base_mixer, .mixers = { alc888_base_mixer,
alc883_chmode_mixer }, alc883_chmode_mixer },
...@@ -9361,7 +9433,7 @@ static struct alc_config_preset alc883_presets[] = { ...@@ -9361,7 +9433,7 @@ static struct alc_config_preset alc883_presets[] = {
.init_hook = alc888_lenovo_ms7195_front_automute, .init_hook = alc888_lenovo_ms7195_front_automute,
}, },
[ALC883_HAIER_W66] = { [ALC883_HAIER_W66] = {
.mixers = { alc883_tagra_2ch_mixer}, .mixers = { alc883_targa_2ch_mixer},
.init_verbs = { alc883_init_verbs, alc883_haier_w66_verbs}, .init_verbs = { alc883_init_verbs, alc883_haier_w66_verbs},
.num_dacs = ARRAY_SIZE(alc883_dac_nids), .num_dacs = ARRAY_SIZE(alc883_dac_nids),
.dac_nids = alc883_dac_nids, .dac_nids = alc883_dac_nids,
...@@ -11131,7 +11203,7 @@ static struct hda_verb alc262_toshiba_rx1_unsol_verbs[] = { ...@@ -11131,7 +11203,7 @@ static struct hda_verb alc262_toshiba_rx1_unsol_verbs[] = {
#define alc262_loopbacks alc880_loopbacks #define alc262_loopbacks alc880_loopbacks
#endif #endif
/* pcm configuration: identiacal with ALC880 */ /* pcm configuration: identical with ALC880 */
#define alc262_pcm_analog_playback alc880_pcm_analog_playback #define alc262_pcm_analog_playback alc880_pcm_analog_playback
#define alc262_pcm_analog_capture alc880_pcm_analog_capture #define alc262_pcm_analog_capture alc880_pcm_analog_capture
#define alc262_pcm_digital_playback alc880_pcm_digital_playback #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,7 +12358,7 @@ static void alc268_auto_init_mono_speaker_out(struct hda_codec *codec)
AC_VERB_SET_AMP_GAIN_MUTE, dac_vol2); AC_VERB_SET_AMP_GAIN_MUTE, dac_vol2);
} }
/* pcm configuration: identiacal with ALC880 */ /* pcm configuration: identical with ALC880 */
#define alc268_pcm_analog_playback alc880_pcm_analog_playback #define alc268_pcm_analog_playback alc880_pcm_analog_playback
#define alc268_pcm_analog_capture alc880_pcm_analog_capture #define alc268_pcm_analog_capture alc880_pcm_analog_capture
#define alc268_pcm_analog_alt_capture alc880_pcm_analog_alt_capture #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,7 +13269,7 @@ static int alc269_auto_create_analog_input_ctls(struct alc_spec *spec,
#define alc269_loopbacks alc880_loopbacks #define alc269_loopbacks alc880_loopbacks
#endif #endif
/* pcm configuration: identiacal with ALC880 */ /* pcm configuration: identical with ALC880 */
#define alc269_pcm_analog_playback alc880_pcm_analog_playback #define alc269_pcm_analog_playback alc880_pcm_analog_playback
#define alc269_pcm_analog_capture alc880_pcm_analog_capture #define alc269_pcm_analog_capture alc880_pcm_analog_capture
#define alc269_pcm_digital_playback alc880_pcm_digital_playback #define alc269_pcm_digital_playback alc880_pcm_digital_playback
...@@ -14059,7 +14131,7 @@ static void alc861_toshiba_unsol_event(struct hda_codec *codec, ...@@ -14059,7 +14131,7 @@ static void alc861_toshiba_unsol_event(struct hda_codec *codec,
alc861_toshiba_automute(codec); alc861_toshiba_automute(codec);
} }
/* pcm configuration: identiacal with ALC880 */ /* pcm configuration: identical with ALC880 */
#define alc861_pcm_analog_playback alc880_pcm_analog_playback #define alc861_pcm_analog_playback alc880_pcm_analog_playback
#define alc861_pcm_analog_capture alc880_pcm_analog_capture #define alc861_pcm_analog_capture alc880_pcm_analog_capture
#define alc861_pcm_digital_playback alc880_pcm_digital_playback #define alc861_pcm_digital_playback alc880_pcm_digital_playback
...@@ -14582,7 +14654,7 @@ static hda_nid_t alc861vd_dac_nids[4] = { ...@@ -14582,7 +14654,7 @@ static hda_nid_t alc861vd_dac_nids[4] = {
/* dac_nids for ALC660vd are in a different order - according to /* dac_nids for ALC660vd are in a different order - according to
* Realtek's driver. * Realtek's driver.
* This should probably tesult in a different mixer for 6stack models * This should probably result in a different mixer for 6stack models
* of ALC660vd codecs, but for now there is only 3stack mixer * of ALC660vd codecs, but for now there is only 3stack mixer
* - and it is the same as in 861vd. * - and it is the same as in 861vd.
* adc_nids in ALC660vd are (is) the same as in 861vd * 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,7 +15099,7 @@ static void alc861vd_dallas_init_hook(struct hda_codec *codec)
#define alc861vd_loopbacks alc880_loopbacks #define alc861vd_loopbacks alc880_loopbacks
#endif #endif
/* pcm configuration: identiacal with ALC880 */ /* pcm configuration: identical with ALC880 */
#define alc861vd_pcm_analog_playback alc880_pcm_analog_playback #define alc861vd_pcm_analog_playback alc880_pcm_analog_playback
#define alc861vd_pcm_analog_capture alc880_pcm_analog_capture #define alc861vd_pcm_analog_capture alc880_pcm_analog_capture
#define alc861vd_pcm_digital_playback alc880_pcm_digital_playback #define alc861vd_pcm_digital_playback alc880_pcm_digital_playback
...@@ -16669,7 +16741,7 @@ static struct snd_kcontrol_new alc272_nc10_mixer[] = { ...@@ -16669,7 +16741,7 @@ static struct snd_kcontrol_new alc272_nc10_mixer[] = {
#endif #endif
/* pcm configuration: identiacal with ALC880 */ /* pcm configuration: identical with ALC880 */
#define alc662_pcm_analog_playback alc880_pcm_analog_playback #define alc662_pcm_analog_playback alc880_pcm_analog_playback
#define alc662_pcm_analog_capture alc880_pcm_analog_capture #define alc662_pcm_analog_capture alc880_pcm_analog_capture
#define alc662_pcm_digital_playback alc880_pcm_digital_playback #define alc662_pcm_digital_playback alc880_pcm_digital_playback
......
...@@ -297,9 +297,9 @@ static int txx9aclc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, ...@@ -297,9 +297,9 @@ static int txx9aclc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
static bool filter(struct dma_chan *chan, void *param) static bool filter(struct dma_chan *chan, void *param)
{ {
struct txx9aclc_dmadata *dmadata = param; struct txx9aclc_dmadata *dmadata = param;
char devname[BUS_ID_SIZE + 2]; char devname[20 + 2]; /* FIXME: old BUS_ID_SIZE + 2 */
sprintf(devname, "%s.%d", dmadata->dma_res->name, snprintf(devname, sizeof(devname), "%s.%d", dmadata->dma_res->name,
(int)dmadata->dma_res->start); (int)dmadata->dma_res->start);
if (strcmp(dev_name(chan->device->dev), devname) == 0) { if (strcmp(dev_name(chan->device->dev), devname) == 0) {
chan->private = &dmadata->dma_slave; chan->private = &dmadata->dma_slave;
......
...@@ -199,8 +199,9 @@ static int snd_usb_caiaq_pcm_prepare(struct snd_pcm_substream *substream) ...@@ -199,8 +199,9 @@ static int snd_usb_caiaq_pcm_prepare(struct snd_pcm_substream *substream)
dev->period_out_count[index] = BYTES_PER_SAMPLE + 1; dev->period_out_count[index] = BYTES_PER_SAMPLE + 1;
dev->audio_out_buf_pos[index] = BYTES_PER_SAMPLE + 1; dev->audio_out_buf_pos[index] = BYTES_PER_SAMPLE + 1;
} else { } else {
dev->period_in_count[index] = BYTES_PER_SAMPLE; int in_pos = (dev->spec.data_alignment == 2) ? 0 : 2;
dev->audio_in_buf_pos[index] = BYTES_PER_SAMPLE; dev->period_in_count[index] = BYTES_PER_SAMPLE + in_pos;
dev->audio_in_buf_pos[index] = BYTES_PER_SAMPLE + in_pos;
} }
if (dev->streaming) if (dev->streaming)
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include "input.h" #include "input.h"
MODULE_AUTHOR("Daniel Mack <daniel@caiaq.de>"); MODULE_AUTHOR("Daniel Mack <daniel@caiaq.de>");
MODULE_DESCRIPTION("caiaq USB audio, version 1.3.16"); MODULE_DESCRIPTION("caiaq USB audio, version 1.3.17");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_SUPPORTED_DEVICE("{{Native Instruments, RigKontrol2}," MODULE_SUPPORTED_DEVICE("{{Native Instruments, RigKontrol2},"
"{Native Instruments, RigKontrol3}," "{Native Instruments, RigKontrol3},"
......
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