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: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
@@ -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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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[] = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
[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[] = {
|
|||||||
.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,
|
||||||
|
Reference in New Issue
Block a user