Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 691f1fcc authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Refactoring EAPD controls



Reduced the duplicated codes.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent a7f2371f
Loading
Loading
Loading
Loading
+30 −45
Original line number Diff line number Diff line
@@ -1236,25 +1236,14 @@ static void set_eapd(struct hda_codec *codec, hda_nid_t nid, int on)
				    on ? 2 : 0);
}
static void alc_auto_init_amp(struct hda_codec *codec, int type)
/* turn on/off EAPD controls of the codec */
static void alc_auto_setup_eapd(struct hda_codec *codec, bool on)
{
	unsigned int tmp;
	switch (type) {
	case ALC_INIT_GPIO1:
		snd_hda_sequence_write(codec, alc_gpio1_init_verbs);
		break;
	case ALC_INIT_GPIO2:
		snd_hda_sequence_write(codec, alc_gpio2_init_verbs);
		break;
	case ALC_INIT_GPIO3:
		snd_hda_sequence_write(codec, alc_gpio3_init_verbs);
		break;
	case ALC_INIT_DEFAULT:
	/* We currently only handle front, HP */
	switch (codec->vendor_id) {
	case 0x10ec0260:
			set_eapd(codec, 0x0f, 1);
			set_eapd(codec, 0x10, 1);
		set_eapd(codec, 0x0f, on);
		set_eapd(codec, 0x10, on);
		break;
	case 0x10ec0262:
	case 0x10ec0267:
@@ -1269,10 +1258,28 @@ static void alc_auto_init_amp(struct hda_codec *codec, int type)
	case 0x10ec0862:
	case 0x10ec0889:
	case 0x10ec0892:
			set_eapd(codec, 0x14, 1);
			set_eapd(codec, 0x15, 1);
		set_eapd(codec, 0x14, on);
		set_eapd(codec, 0x15, on);
		break;
	}
}
static void alc_auto_init_amp(struct hda_codec *codec, int type)
{
	unsigned int tmp;
	switch (type) {
	case ALC_INIT_GPIO1:
		snd_hda_sequence_write(codec, alc_gpio1_init_verbs);
		break;
	case ALC_INIT_GPIO2:
		snd_hda_sequence_write(codec, alc_gpio2_init_verbs);
		break;
	case ALC_INIT_GPIO3:
		snd_hda_sequence_write(codec, alc_gpio3_init_verbs);
		break;
	case ALC_INIT_DEFAULT:
		alc_auto_setup_eapd(codec, true);
		switch (codec->vendor_id) {
		case 0x10ec0260:
			snd_hda_codec_write(codec, 0x1a, 0,
@@ -4227,29 +4234,7 @@ static void alc_free(struct hda_codec *codec)
#ifdef CONFIG_SND_HDA_POWER_SAVE
static void alc_power_eapd(struct hda_codec *codec)
{
	/* We currently only handle front, HP */
	switch (codec->vendor_id) {
	case 0x10ec0260:
		set_eapd(codec, 0x0f, 0);
		set_eapd(codec, 0x10, 0);
		break;
	case 0x10ec0262:
	case 0x10ec0267:
	case 0x10ec0268:
	case 0x10ec0269:
	case 0x10ec0270:
	case 0x10ec0272:
	case 0x10ec0660:
	case 0x10ec0662:
	case 0x10ec0663:
	case 0x10ec0665:
	case 0x10ec0862:
	case 0x10ec0889:
	case 0x10ec0892:
		set_eapd(codec, 0x14, 0);
		set_eapd(codec, 0x15, 0);
		break;
	}
	alc_auto_setup_eapd(codec, false);
}
static int alc_suspend(struct hda_codec *codec, pm_message_t state)