Merge branch 'fix/hda' into topic/hda
Takashi Iwai [Mon, 31 Aug 2009 06:27:10 +0000 (08:27 +0200)]
Conflicts:
sound/pci/hda/patch_realtek.c

1  2 
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_via.c

@@@ -8792,181 -9174,21 +8797,182 @@@ static struct snd_pci_quirk alc882_cfg_
        SND_PCI_QUIRK(0x8086, 0x0001, "DG33BUC", ALC883_3ST_6ch_INTEL),
        SND_PCI_QUIRK(0x8086, 0x0002, "DG33FBC", ALC883_3ST_6ch_INTEL),
        SND_PCI_QUIRK(0x8086, 0x2503, "82801H", ALC883_MITAC),
 -      SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC883_3ST_6ch_INTEL),
 +      SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC889_INTEL),
 +      SND_PCI_QUIRK(0x8086, 0x0021, "Intel IbexPeak", ALC889A_INTEL),
 +      SND_PCI_QUIRK(0x8086, 0x3b56, "Intel IbexPeak", ALC889A_INTEL),
        SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch),
 -      SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC883_SONY_VAIO_TT),
 -      {}
 -};
  
 -static hda_nid_t alc883_slave_dig_outs[] = {
 -      ALC1200_DIGOUT_NID, 0,
 +      {}
  };
  
 -static hda_nid_t alc1200_slave_dig_outs[] = {
 -      ALC883_DIGOUT_NID, 0,
 +/* codec SSID table for Intel Mac */
 +static struct snd_pci_quirk alc882_ssid_cfg_tbl[] = {
 +      SND_PCI_QUIRK(0x106b, 0x00a0, "MacBookPro 3,1", ALC885_MBP3),
 +      SND_PCI_QUIRK(0x106b, 0x00a1, "Macbook", ALC885_MBP3),
 +      SND_PCI_QUIRK(0x106b, 0x00a4, "MacbookPro 4,1", ALC885_MBP3),
 +      SND_PCI_QUIRK(0x106b, 0x0c00, "Mac Pro", ALC885_MACPRO),
 +      SND_PCI_QUIRK(0x106b, 0x1000, "iMac 24", ALC885_IMAC24),
 +      SND_PCI_QUIRK(0x106b, 0x2800, "AppleTV", ALC885_IMAC24),
 +      SND_PCI_QUIRK(0x106b, 0x2c00, "MacbookPro rev3", ALC885_MBP3),
 +      SND_PCI_QUIRK(0x106b, 0x3600, "Macbook 3,1", ALC889A_MB31),
 +      SND_PCI_QUIRK(0x106b, 0x3800, "MacbookPro 4,1", ALC885_MBP3),
 +      SND_PCI_QUIRK(0x106b, 0x3e00, "iMac 24 Aluminum", ALC885_IMAC24),
 +      SND_PCI_QUIRK(0x106b, 0x3f00, "Macbook 5,1", ALC885_MB5),
 +      /* FIXME: HP jack sense seems not working for MBP 5,1, so apparently
 +       * no perfect solution yet
 +       */
 +      SND_PCI_QUIRK(0x106b, 0x4000, "MacbookPro 5,1", ALC885_MB5),
 +      {} /* terminator */
  };
  
 -static struct alc_config_preset alc883_presets[] = {
 +static struct alc_config_preset alc882_presets[] = {
 +      [ALC882_3ST_DIG] = {
 +              .mixers = { alc882_base_mixer },
 +              .init_verbs = { alc882_base_init_verbs,
 +                              alc882_adc1_init_verbs },
 +              .num_dacs = ARRAY_SIZE(alc882_dac_nids),
 +              .dac_nids = alc882_dac_nids,
 +              .dig_out_nid = ALC882_DIGOUT_NID,
 +              .dig_in_nid = ALC882_DIGIN_NID,
 +              .num_channel_mode = ARRAY_SIZE(alc882_ch_modes),
 +              .channel_mode = alc882_ch_modes,
 +              .need_dac_fix = 1,
 +              .input_mux = &alc882_capture_source,
 +      },
 +      [ALC882_6ST_DIG] = {
 +              .mixers = { alc882_base_mixer, alc882_chmode_mixer },
 +              .init_verbs = { alc882_base_init_verbs,
 +                              alc882_adc1_init_verbs },
 +              .num_dacs = ARRAY_SIZE(alc882_dac_nids),
 +              .dac_nids = alc882_dac_nids,
 +              .dig_out_nid = ALC882_DIGOUT_NID,
 +              .dig_in_nid = ALC882_DIGIN_NID,
 +              .num_channel_mode = ARRAY_SIZE(alc882_sixstack_modes),
 +              .channel_mode = alc882_sixstack_modes,
 +              .input_mux = &alc882_capture_source,
 +      },
 +      [ALC882_ARIMA] = {
 +              .mixers = { alc882_base_mixer, alc882_chmode_mixer },
 +              .init_verbs = { alc882_base_init_verbs, alc882_adc1_init_verbs,
 +                              alc882_eapd_verbs },
 +              .num_dacs = ARRAY_SIZE(alc882_dac_nids),
 +              .dac_nids = alc882_dac_nids,
 +              .num_channel_mode = ARRAY_SIZE(alc882_sixstack_modes),
 +              .channel_mode = alc882_sixstack_modes,
 +              .input_mux = &alc882_capture_source,
 +      },
 +      [ALC882_W2JC] = {
 +              .mixers = { alc882_w2jc_mixer, alc882_chmode_mixer },
 +              .init_verbs = { alc882_base_init_verbs, alc882_adc1_init_verbs,
 +                              alc882_eapd_verbs, alc880_gpio1_init_verbs },
 +              .num_dacs = ARRAY_SIZE(alc882_dac_nids),
 +              .dac_nids = alc882_dac_nids,
 +              .num_channel_mode = ARRAY_SIZE(alc880_threestack_modes),
 +              .channel_mode = alc880_threestack_modes,
 +              .need_dac_fix = 1,
 +              .input_mux = &alc882_capture_source,
 +              .dig_out_nid = ALC882_DIGOUT_NID,
 +      },
 +      [ALC885_MBP3] = {
 +              .mixers = { alc885_mbp3_mixer, alc882_chmode_mixer },
 +              .init_verbs = { alc885_mbp3_init_verbs,
 +                              alc880_gpio1_init_verbs },
-               .num_dacs = ARRAY_SIZE(alc882_dac_nids),
++              .num_dacs = 2,
 +              .dac_nids = alc882_dac_nids,
-               .channel_mode = alc885_mbp_6ch_modes,
-               .num_channel_mode = ARRAY_SIZE(alc885_mbp_6ch_modes),
++              .hp_nid = 0x04,
++              .channel_mode = alc885_mbp_4ch_modes,
++              .num_channel_mode = ARRAY_SIZE(alc885_mbp_4ch_modes),
 +              .input_mux = &alc882_capture_source,
 +              .dig_out_nid = ALC882_DIGOUT_NID,
 +              .dig_in_nid = ALC882_DIGIN_NID,
 +              .unsol_event = alc_automute_amp_unsol_event,
 +              .setup = alc885_mbp3_setup,
 +              .init_hook = alc_automute_amp,
 +      },
 +      [ALC885_MB5] = {
 +              .mixers = { alc885_mb5_mixer, alc882_chmode_mixer },
 +              .init_verbs = { alc885_mb5_init_verbs,
 +                              alc880_gpio1_init_verbs },
 +              .num_dacs = ARRAY_SIZE(alc882_dac_nids),
 +              .dac_nids = alc882_dac_nids,
 +              .channel_mode = alc885_mb5_6ch_modes,
 +              .num_channel_mode = ARRAY_SIZE(alc885_mb5_6ch_modes),
 +              .input_mux = &mb5_capture_source,
 +              .dig_out_nid = ALC882_DIGOUT_NID,
 +              .dig_in_nid = ALC882_DIGIN_NID,
 +      },
 +      [ALC885_MACPRO] = {
 +              .mixers = { alc882_macpro_mixer },
 +              .init_verbs = { alc882_macpro_init_verbs },
 +              .num_dacs = ARRAY_SIZE(alc882_dac_nids),
 +              .dac_nids = alc882_dac_nids,
 +              .dig_out_nid = ALC882_DIGOUT_NID,
 +              .dig_in_nid = ALC882_DIGIN_NID,
 +              .num_channel_mode = ARRAY_SIZE(alc882_ch_modes),
 +              .channel_mode = alc882_ch_modes,
 +              .input_mux = &alc882_capture_source,
 +              .init_hook = alc885_macpro_init_hook,
 +      },
 +      [ALC885_IMAC24] = {
 +              .mixers = { alc885_imac24_mixer },
 +              .init_verbs = { alc885_imac24_init_verbs },
 +              .num_dacs = ARRAY_SIZE(alc882_dac_nids),
 +              .dac_nids = alc882_dac_nids,
 +              .dig_out_nid = ALC882_DIGOUT_NID,
 +              .dig_in_nid = ALC882_DIGIN_NID,
 +              .num_channel_mode = ARRAY_SIZE(alc882_ch_modes),
 +              .channel_mode = alc882_ch_modes,
 +              .input_mux = &alc882_capture_source,
 +              .unsol_event = alc_automute_amp_unsol_event,
 +              .setup = alc885_imac24_setup,
 +              .init_hook = alc885_imac24_init_hook,
 +      },
 +      [ALC882_TARGA] = {
 +              .mixers = { alc882_targa_mixer, alc882_chmode_mixer },
 +              .init_verbs = { alc882_base_init_verbs, alc882_adc1_init_verbs,
 +                              alc880_gpio3_init_verbs, alc882_targa_verbs},
 +              .num_dacs = ARRAY_SIZE(alc882_dac_nids),
 +              .dac_nids = alc882_dac_nids,
 +              .dig_out_nid = ALC882_DIGOUT_NID,
 +              .num_adc_nids = ARRAY_SIZE(alc882_adc_nids),
 +              .adc_nids = alc882_adc_nids,
 +              .capsrc_nids = alc882_capsrc_nids,
 +              .num_channel_mode = ARRAY_SIZE(alc882_3ST_6ch_modes),
 +              .channel_mode = alc882_3ST_6ch_modes,
 +              .need_dac_fix = 1,
 +              .input_mux = &alc882_capture_source,
 +              .unsol_event = alc882_targa_unsol_event,
 +              .setup = alc882_targa_setup,
 +              .init_hook = alc882_targa_automute,
 +      },
 +      [ALC882_ASUS_A7J] = {
 +              .mixers = { alc882_asus_a7j_mixer, alc882_chmode_mixer },
 +              .init_verbs = { alc882_base_init_verbs, alc882_adc1_init_verbs,
 +                              alc882_asus_a7j_verbs},
 +              .num_dacs = ARRAY_SIZE(alc882_dac_nids),
 +              .dac_nids = alc882_dac_nids,
 +              .dig_out_nid = ALC882_DIGOUT_NID,
 +              .num_adc_nids = ARRAY_SIZE(alc882_adc_nids),
 +              .adc_nids = alc882_adc_nids,
 +              .capsrc_nids = alc882_capsrc_nids,
 +              .num_channel_mode = ARRAY_SIZE(alc882_3ST_6ch_modes),
 +              .channel_mode = alc882_3ST_6ch_modes,
 +              .need_dac_fix = 1,
 +              .input_mux = &alc882_capture_source,
 +      },
 +      [ALC882_ASUS_A7M] = {
 +              .mixers = { alc882_asus_a7m_mixer, alc882_chmode_mixer },
 +              .init_verbs = { alc882_base_init_verbs, alc882_adc1_init_verbs,
 +                              alc882_eapd_verbs, alc880_gpio1_init_verbs,
 +                              alc882_asus_a7m_verbs },
 +              .num_dacs = ARRAY_SIZE(alc882_dac_nids),
 +              .dac_nids = alc882_dac_nids,
 +              .dig_out_nid = ALC882_DIGOUT_NID,
 +              .num_channel_mode = ARRAY_SIZE(alc880_threestack_modes),
 +              .channel_mode = alc880_threestack_modes,
 +              .need_dac_fix = 1,
 +              .input_mux = &alc882_capture_source,
 +      },
        [ALC883_3ST_2ch_DIG] = {
                .mixers = { alc883_3ST_2ch_mixer },
                .init_verbs = { alc883_init_verbs },
Simple merge