Don't like ads? PRO users don't see any ads ;-)
Guest

alc882_quirks.patch

By: a guest on Apr 28th, 2012  |  syntax: None  |  size: 5.84 KB  |  hits: 45  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. --- a/sound/pci/hda/alc882_quirks.c     2012-03-19 03:15:34.000000000 +0400
  2. +++ b/sound/pci/hda/alc882_quirks.c     2012-04-28 22:55:16.057877617 +0400
  3. @@ -3,6 +3,7 @@
  4.   * included by patch_realtek.c
  5.   */
  6.  
  7. +
  8.  /* ALC882 models */
  9.  enum {
  10.         ALC882_AUTO,
  11. @@ -12,6 +13,7 @@
  12.         ALC885_MACMINI3,
  13.         ALC885_IMAC91,
  14.         ALC889A_MB31,
  15. +       ALC888_ACER_ASPIRE_6530G,
  16.         ALC882_MODEL_LAST,
  17.  };
  18.  
  19. @@ -38,7 +40,9 @@
  20.  #define alc882_adc_nids_alt    alc880_adc_nids_alt
  21.  #define alc883_adc_nids                alc882_adc_nids_alt
  22.  
  23. +static const hda_nid_t alc883_adc_nids_rev[2] = { 0x09, 0x08 };
  24.  static const hda_nid_t alc882_capsrc_nids_alt[2] = { 0x23, 0x22 };
  25. +static const hda_nid_t alc883_capsrc_nids_rev[2] = { 0x22, 0x23 };
  26.  #define alc883_capsrc_nids     alc882_capsrc_nids_alt
  27.  
  28.  /* input MUX */
  29. @@ -102,6 +106,68 @@
  30.         },
  31.  };
  32.  
  33. +static void alc888_acer_aspire_6530g_setup(struct hda_codec *codec)
  34. +{
  35. +       struct alc_spec *spec = codec->spec;
  36. +
  37. +       spec->autocfg.hp_pins[0] = 0x15;
  38. +       spec->autocfg.speaker_pins[0] = 0x14;
  39. +       spec->autocfg.speaker_pins[1] = 0x16;
  40. +       spec->autocfg.speaker_pins[2] = 0x17;
  41. +       alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
  42. +}
  43. +
  44. +static const struct hda_input_mux alc888_2_capture_sources[2] = {
  45. +       /* Front mic only available on one ADC */
  46. +       {
  47. +               .num_items = 4,
  48. +               .items = {
  49. +                       { "Mic", 0x0 },
  50. +                       { "Line", 0x2 },
  51. +                       { "CD", 0x4 },
  52. +                       { "Front Mic", 0xb },
  53. +               },
  54. +       },
  55. +       {
  56. +               .num_items = 3,
  57. +               .items = {
  58. +                       { "Mic", 0x0 },
  59. +                       { "Line", 0x2 },
  60. +                       { "CD", 0x4 },
  61. +               },
  62. +       }
  63. +};
  64. +
  65. +static const struct hda_input_mux alc888_acer_aspire_6530_sources[2] = {
  66. +       /* Interal mic only available on one ADC */
  67. +       {
  68. +               .num_items = 5,
  69. +               .items = {
  70. +                       { "Mic", 0x0 },
  71. +                       { "Line In", 0x2 },
  72. +                       { "CD", 0x4 },
  73. +                       { "Input Mix", 0xa },
  74. +                       { "Internal Mic", 0xb },
  75. +               },
  76. +       },
  77. +       {
  78. +               .num_items = 4,
  79. +               .items = {
  80. +                       { "Mic", 0x0 },
  81. +                       { "Line In", 0x2 },
  82. +                       { "CD", 0x4 },
  83. +                       { "Input Mix", 0xa },
  84. +               },
  85. +       }
  86. +};
  87. +
  88. +/*
  89. + * 2ch mode
  90. + */
  91. +static const struct hda_channel_mode alc883_3ST_2ch_modes[1] = {
  92. +       { 2, NULL }
  93. +};
  94. +
  95.  /* Macbook Air 2,1 */
  96.  
  97.  static const struct hda_channel_mode alc885_mba21_ch_modes[1] = {
  98. @@ -245,6 +311,19 @@
  99.         { } /* end */
  100.  };
  101.  
  102. +static const struct snd_kcontrol_new alc888_acer_aspire_6530_mixer[] = {
  103. +       HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
  104. +       HDA_CODEC_VOLUME("LFE Playback Volume", 0x0f, 0x0, HDA_OUTPUT),
  105. +       HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
  106. +       HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
  107. +       HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
  108. +       HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
  109. +       HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
  110. +       HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
  111. +       HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
  112. +       { } /* end */
  113. +};
  114. +
  115.  static const struct hda_verb alc882_base_init_verbs[] = {
  116.         /* Front mixer: unmute input/output amp left and right (volume = 0) */
  117.         {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
  118. @@ -547,6 +626,36 @@
  119.         { }
  120.  };
  121.  
  122. +/*
  123. + * ALC888 Acer Aspire 6530G model
  124. + */
  125. +
  126. +static const struct hda_verb alc888_acer_aspire_6530g_verbs[] = {
  127. +/* Route to built-in subwoofer as well as speakers */
  128. +       {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
  129. +       {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
  130. +       {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
  131. +       {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
  132. +/* Bias voltage on for external mic port */
  133. +       {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN | PIN_VREF80},
  134. +/* Front Mic: set to PIN_IN (empty by default) */
  135. +       {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
  136. +/* Unselect Front Mic by default in input mixer 3 */
  137. +       {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0xb)},
  138. +/* Enable unsolicited event for HP jack */
  139. +       {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC_HP_EVENT | AC_USRSP_EN},
  140. +/* Enable speaker output */
  141. +       {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
  142. +       {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
  143. +       {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2},
  144. +/* Enable headphone output */
  145. +       {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT | PIN_HP},
  146. +       {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
  147. +       {0x15, AC_VERB_SET_CONNECT_SEL, 0x00},
  148. +       {0x15, AC_VERB_SET_EAPD_BTLENABLE, 2},
  149. +       { }
  150. +};
  151. +
  152.  /* Toggle speaker-output according to the hp-jack state */
  153.  static void alc885_imac24_setup(struct hda_codec *codec)
  154.  {
  155. @@ -745,6 +854,7 @@
  156.         [ALC885_MBP3]           = "mbp3",
  157.         [ALC885_IMAC91]         = "imac91",
  158.         [ALC889A_MB31]          = "mb31",
  159. +       [ALC888_ACER_ASPIRE_6530G]      = "acer-aspire-6530g",
  160.         [ALC882_AUTO]           = "auto",
  161.  };
  162.  
  163. @@ -768,6 +878,8 @@
  164.         SND_PCI_QUIRK(0x106b, 0x4000, "MacbookPro 5,1", ALC885_MB5),
  165.         SND_PCI_QUIRK(0x106b, 0x4600, "MacbookPro 5,2", ALC885_MB5),
  166.         SND_PCI_QUIRK(0x106b, 0x4100, "Macmini 3,1", ALC885_MACMINI3),
  167. +       SND_PCI_QUIRK(0x1025, 0x0166, "Acer Aspire 6530G",
  168. +                     ALC888_ACER_ASPIRE_6530G),
  169.         {} /* terminator */
  170.  };
  171.  
  172. @@ -861,6 +973,25 @@
  173.                 .unsol_event = alc889A_mb31_unsol_event,
  174.                 .init_hook = alc889A_mb31_automute,
  175.         },
  176. +       [ALC888_ACER_ASPIRE_6530G] = {
  177. +               .mixers = { alc888_acer_aspire_6530_mixer },
  178. +               .init_verbs = { alc883_init_verbs, alc880_gpio1_init_verbs,
  179. +                               alc888_acer_aspire_6530g_verbs },
  180. +               .num_dacs = ARRAY_SIZE(alc883_dac_nids),
  181. +               .dac_nids = alc883_dac_nids,
  182. +               .num_adc_nids = ARRAY_SIZE(alc883_adc_nids_rev),
  183. +               .adc_nids = alc883_adc_nids_rev,
  184. +               .capsrc_nids = alc883_capsrc_nids_rev,
  185. +               .dig_out_nid = ALC883_DIGOUT_NID,
  186. +               .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes),
  187. +               .channel_mode = alc883_3ST_2ch_modes,
  188. +               .num_mux_defs =
  189. +                       ARRAY_SIZE(alc888_2_capture_sources),
  190. +               .input_mux = alc888_acer_aspire_6530_sources,
  191. +               .unsol_event = alc_sku_unsol_event,
  192. +               .setup = alc888_acer_aspire_6530g_setup,
  193. +               .init_hook = alc_hp_automute,
  194. +       },
  195.  };