Commit ae065f1c authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda/realtek - Convert some manual GPIO setups

This patch converts the remaining static init verbs for GPIO bits with
the common gpio_* fields management.  Only the verbs setting the GPIO
data bits are targeted in this patch.  The rest will be changed in
later patches.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 01e4a275
...@@ -296,6 +296,12 @@ static void alc_fixup_gpio3(struct hda_codec *codec, ...@@ -296,6 +296,12 @@ static void alc_fixup_gpio3(struct hda_codec *codec,
alc_fixup_gpio(codec, action, 0x03); alc_fixup_gpio(codec, action, 0x03);
} }
static void alc_fixup_gpio4(struct hda_codec *codec,
const struct hda_fixup *fix, int action)
{
alc_fixup_gpio(codec, action, 0x04);
}
/* /*
* Fix hardware PLL issue * Fix hardware PLL issue
* On some codecs, the analog PLL gating control must be off while * On some codecs, the analog PLL gating control must be off while
...@@ -5172,13 +5178,6 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec, ...@@ -5172,13 +5178,6 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec,
const struct hda_fixup *fix, int action) const struct hda_fixup *fix, int action)
{ {
struct alc_spec *spec = codec->spec; struct alc_spec *spec = codec->spec;
/* TX300 needs to set up GPIO2 for the speaker amp */
static const struct hda_verb gpio2_verbs[] = {
{ 0x01, AC_VERB_SET_GPIO_MASK, 0x04 },
{ 0x01, AC_VERB_SET_GPIO_DIRECTION, 0x04 },
{ 0x01, AC_VERB_SET_GPIO_DATA, 0x04 },
{}
};
static const struct hda_pintbl dock_pins[] = { static const struct hda_pintbl dock_pins[] = {
{ 0x1b, 0x21114000 }, /* dock speaker pin */ { 0x1b, 0x21114000 }, /* dock speaker pin */
{} {}
...@@ -5187,7 +5186,8 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec, ...@@ -5187,7 +5186,8 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec,
switch (action) { switch (action) {
case HDA_FIXUP_ACT_PRE_PROBE: case HDA_FIXUP_ACT_PRE_PROBE:
spec->init_amp = ALC_INIT_DEFAULT; spec->init_amp = ALC_INIT_DEFAULT;
snd_hda_add_verbs(codec, gpio2_verbs); /* TX300 needs to set up GPIO2 for the speaker amp */
alc_setup_gpio(codec, 0x04);
snd_hda_apply_pincfgs(codec, dock_pins); snd_hda_apply_pincfgs(codec, dock_pins);
spec->gen.auto_mute_via_amp = 1; spec->gen.auto_mute_via_amp = 1;
spec->gen.automute_hook = asus_tx300_automute; spec->gen.automute_hook = asus_tx300_automute;
...@@ -5280,6 +5280,19 @@ static void alc280_fixup_hp_9480m(struct hda_codec *codec, ...@@ -5280,6 +5280,19 @@ static void alc280_fixup_hp_9480m(struct hda_codec *codec,
} }
} }
static void alc275_fixup_gpio4_off(struct hda_codec *codec,
const struct hda_fixup *fix,
int action)
{
struct alc_spec *spec = codec->spec;
if (action == HDA_FIXUP_ACT_PRE_PROBE) {
spec->gpio_mask |= 0x04;
spec->gpio_dir |= 0x04;
/* set data bit low */
}
}
static void alc233_alc662_fixup_lenovo_dual_codecs(struct hda_codec *codec, static void alc233_alc662_fixup_lenovo_dual_codecs(struct hda_codec *codec,
const struct hda_fixup *fix, const struct hda_fixup *fix,
int action) int action)
...@@ -5468,13 +5481,8 @@ static const struct hda_fixup alc269_fixups[] = { ...@@ -5468,13 +5481,8 @@ static const struct hda_fixup alc269_fixups[] = {
} }
}, },
[ALC275_FIXUP_SONY_VAIO_GPIO2] = { [ALC275_FIXUP_SONY_VAIO_GPIO2] = {
.type = HDA_FIXUP_VERBS, .type = HDA_FIXUP_FUNC,
.v.verbs = (const struct hda_verb[]) { .v.func = alc275_fixup_gpio4_off,
{0x01, AC_VERB_SET_GPIO_MASK, 0x04},
{0x01, AC_VERB_SET_GPIO_DIRECTION, 0x04},
{0x01, AC_VERB_SET_GPIO_DATA, 0x00},
{ }
},
.chained = true, .chained = true,
.chain_id = ALC269_FIXUP_SONY_VAIO .chain_id = ALC269_FIXUP_SONY_VAIO
}, },
...@@ -6219,14 +6227,9 @@ static const struct hda_fixup alc269_fixups[] = { ...@@ -6219,14 +6227,9 @@ static const struct hda_fixup alc269_fixups[] = {
.chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE
}, },
[ALC256_FIXUP_ASUS_AIO_GPIO2] = { [ALC256_FIXUP_ASUS_AIO_GPIO2] = {
.type = HDA_FIXUP_VERBS, .type = HDA_FIXUP_FUNC,
.v.verbs = (const struct hda_verb[]) { /* Set up GPIO2 for the speaker amp */
/* Set up GPIO2 for the speaker amp */ .v.func = alc_fixup_gpio4,
{ 0x01, AC_VERB_SET_GPIO_MASK, 0x04 },
{ 0x01, AC_VERB_SET_GPIO_DIRECTION, 0x04 },
{ 0x01, AC_VERB_SET_GPIO_DATA, 0x04 },
{}
},
}, },
[ALC233_FIXUP_ASUS_MIC_NO_PRESENCE] = { [ALC233_FIXUP_ASUS_MIC_NO_PRESENCE] = {
.type = HDA_FIXUP_PINS, .type = HDA_FIXUP_PINS,
......
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