diff options
author | Takashi Iwai <tiwai@suse.de> | 2011-04-07 04:31:43 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-04-07 04:31:43 -0400 |
commit | 691f1fccf72e3092e3a7a79fd672940afc9305ef (patch) | |
tree | 5d14ba6f527e1ecc6392e0854b762000433e4706 /sound/pci | |
parent | a7f2371f9e9730ccdb70d6d5803da2a732c97cf3 (diff) |
ALSA: hda - Refactoring EAPD controls
Reduced the duplicated codes.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 75 |
1 files changed, 30 insertions, 45 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 4971d777d9c9..c798e18d453f 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -1236,6 +1236,34 @@ static void set_eapd(struct hda_codec *codec, hda_nid_t nid, int on) | |||
1236 | on ? 2 : 0); | 1236 | on ? 2 : 0); |
1237 | } | 1237 | } |
1238 | 1238 | ||
1239 | /* turn on/off EAPD controls of the codec */ | ||
1240 | static void alc_auto_setup_eapd(struct hda_codec *codec, bool on) | ||
1241 | { | ||
1242 | /* We currently only handle front, HP */ | ||
1243 | switch (codec->vendor_id) { | ||
1244 | case 0x10ec0260: | ||
1245 | set_eapd(codec, 0x0f, on); | ||
1246 | set_eapd(codec, 0x10, on); | ||
1247 | break; | ||
1248 | case 0x10ec0262: | ||
1249 | case 0x10ec0267: | ||
1250 | case 0x10ec0268: | ||
1251 | case 0x10ec0269: | ||
1252 | case 0x10ec0270: | ||
1253 | case 0x10ec0272: | ||
1254 | case 0x10ec0660: | ||
1255 | case 0x10ec0662: | ||
1256 | case 0x10ec0663: | ||
1257 | case 0x10ec0665: | ||
1258 | case 0x10ec0862: | ||
1259 | case 0x10ec0889: | ||
1260 | case 0x10ec0892: | ||
1261 | set_eapd(codec, 0x14, on); | ||
1262 | set_eapd(codec, 0x15, on); | ||
1263 | break; | ||
1264 | } | ||
1265 | } | ||
1266 | |||
1239 | static void alc_auto_init_amp(struct hda_codec *codec, int type) | 1267 | static void alc_auto_init_amp(struct hda_codec *codec, int type) |
1240 | { | 1268 | { |
1241 | unsigned int tmp; | 1269 | unsigned int tmp; |
@@ -1251,28 +1279,7 @@ static void alc_auto_init_amp(struct hda_codec *codec, int type) | |||
1251 | snd_hda_sequence_write(codec, alc_gpio3_init_verbs); | 1279 | snd_hda_sequence_write(codec, alc_gpio3_init_verbs); |
1252 | break; | 1280 | break; |
1253 | case ALC_INIT_DEFAULT: | 1281 | case ALC_INIT_DEFAULT: |
1254 | switch (codec->vendor_id) { | 1282 | alc_auto_setup_eapd(codec, true); |
1255 | case 0x10ec0260: | ||
1256 | set_eapd(codec, 0x0f, 1); | ||
1257 | set_eapd(codec, 0x10, 1); | ||
1258 | break; | ||
1259 | case 0x10ec0262: | ||
1260 | case 0x10ec0267: | ||
1261 | case 0x10ec0268: | ||
1262 | case 0x10ec0269: | ||
1263 | case 0x10ec0270: | ||
1264 | case 0x10ec0272: | ||
1265 | case 0x10ec0660: | ||
1266 | case 0x10ec0662: | ||
1267 | case 0x10ec0663: | ||
1268 | case 0x10ec0665: | ||
1269 | case 0x10ec0862: | ||
1270 | case 0x10ec0889: | ||
1271 | case 0x10ec0892: | ||
1272 | set_eapd(codec, 0x14, 1); | ||
1273 | set_eapd(codec, 0x15, 1); | ||
1274 | break; | ||
1275 | } | ||
1276 | switch (codec->vendor_id) { | 1283 | switch (codec->vendor_id) { |
1277 | case 0x10ec0260: | 1284 | case 0x10ec0260: |
1278 | snd_hda_codec_write(codec, 0x1a, 0, | 1285 | snd_hda_codec_write(codec, 0x1a, 0, |
@@ -4227,29 +4234,7 @@ static void alc_free(struct hda_codec *codec) | |||
4227 | #ifdef CONFIG_SND_HDA_POWER_SAVE | 4234 | #ifdef CONFIG_SND_HDA_POWER_SAVE |
4228 | static void alc_power_eapd(struct hda_codec *codec) | 4235 | static void alc_power_eapd(struct hda_codec *codec) |
4229 | { | 4236 | { |
4230 | /* We currently only handle front, HP */ | 4237 | alc_auto_setup_eapd(codec, false); |
4231 | switch (codec->vendor_id) { | ||
4232 | case 0x10ec0260: | ||
4233 | set_eapd(codec, 0x0f, 0); | ||
4234 | set_eapd(codec, 0x10, 0); | ||
4235 | break; | ||
4236 | case 0x10ec0262: | ||
4237 | case 0x10ec0267: | ||
4238 | case 0x10ec0268: | ||
4239 | case 0x10ec0269: | ||
4240 | case 0x10ec0270: | ||
4241 | case 0x10ec0272: | ||
4242 | case 0x10ec0660: | ||
4243 | case 0x10ec0662: | ||
4244 | case 0x10ec0663: | ||
4245 | case 0x10ec0665: | ||
4246 | case 0x10ec0862: | ||
4247 | case 0x10ec0889: | ||
4248 | case 0x10ec0892: | ||
4249 | set_eapd(codec, 0x14, 0); | ||
4250 | set_eapd(codec, 0x15, 0); | ||
4251 | break; | ||
4252 | } | ||
4253 | } | 4238 | } |
4254 | 4239 | ||
4255 | static int alc_suspend(struct hda_codec *codec, pm_message_t state) | 4240 | static int alc_suspend(struct hda_codec *codec, pm_message_t state) |