Commit 0d0254d7 authored by Takashi Iwai's avatar Takashi Iwai Committed by Luis Henriques

ALSA: hda - Add fixup for Mac Mini 7,1 model

commit 2154cc0e upstream.

Mac Mini 7,1 model with CS4208 codec reports the headphone jack
detection wrongly in an inverted way.  Moreover, the advertised pins
for the audio input and SPDIF output have actually no jack detection.

This patch addresses these issues.  The inv_jack_detect flag is set
for fixing the headphone jack detection, and the pin configs for audio
input and SPDIF output are marked as non-detectable.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=105161
Report-and-tested-by: moosotc@gmail.com
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent 1d6bac0b
...@@ -616,6 +616,7 @@ enum { ...@@ -616,6 +616,7 @@ enum {
CS4208_MAC_AUTO, CS4208_MAC_AUTO,
CS4208_MBA6, CS4208_MBA6,
CS4208_MBP11, CS4208_MBP11,
CS4208_MACMINI,
CS4208_GPIO0, CS4208_GPIO0,
}; };
...@@ -623,6 +624,7 @@ static const struct hda_model_fixup cs4208_models[] = { ...@@ -623,6 +624,7 @@ static const struct hda_model_fixup cs4208_models[] = {
{ .id = CS4208_GPIO0, .name = "gpio0" }, { .id = CS4208_GPIO0, .name = "gpio0" },
{ .id = CS4208_MBA6, .name = "mba6" }, { .id = CS4208_MBA6, .name = "mba6" },
{ .id = CS4208_MBP11, .name = "mbp11" }, { .id = CS4208_MBP11, .name = "mbp11" },
{ .id = CS4208_MACMINI, .name = "macmini" },
{} {}
}; };
...@@ -634,6 +636,7 @@ static const struct snd_pci_quirk cs4208_fixup_tbl[] = { ...@@ -634,6 +636,7 @@ static const struct snd_pci_quirk cs4208_fixup_tbl[] = {
/* codec SSID matching */ /* codec SSID matching */
static const struct snd_pci_quirk cs4208_mac_fixup_tbl[] = { static const struct snd_pci_quirk cs4208_mac_fixup_tbl[] = {
SND_PCI_QUIRK(0x106b, 0x5e00, "MacBookPro 11,2", CS4208_MBP11), SND_PCI_QUIRK(0x106b, 0x5e00, "MacBookPro 11,2", CS4208_MBP11),
SND_PCI_QUIRK(0x106b, 0x6c00, "MacMini 7,1", CS4208_MACMINI),
SND_PCI_QUIRK(0x106b, 0x7100, "MacBookAir 6,1", CS4208_MBA6), SND_PCI_QUIRK(0x106b, 0x7100, "MacBookAir 6,1", CS4208_MBA6),
SND_PCI_QUIRK(0x106b, 0x7200, "MacBookAir 6,2", CS4208_MBA6), SND_PCI_QUIRK(0x106b, 0x7200, "MacBookAir 6,2", CS4208_MBA6),
SND_PCI_QUIRK(0x106b, 0x7b00, "MacBookPro 12,1", CS4208_MBP11), SND_PCI_QUIRK(0x106b, 0x7b00, "MacBookPro 12,1", CS4208_MBP11),
...@@ -666,6 +669,24 @@ static void cs4208_fixup_mac(struct hda_codec *codec, ...@@ -666,6 +669,24 @@ static void cs4208_fixup_mac(struct hda_codec *codec,
snd_hda_apply_fixup(codec, action); snd_hda_apply_fixup(codec, action);
} }
/* MacMini 7,1 has the inverted jack detection */
static void cs4208_fixup_macmini(struct hda_codec *codec,
const struct hda_fixup *fix, int action)
{
static const struct hda_pintbl pincfgs[] = {
{ 0x18, 0x00ab9150 }, /* mic (audio-in) jack: disable detect */
{ 0x21, 0x004be140 }, /* SPDIF: disable detect */
{ }
};
if (action == HDA_FIXUP_ACT_PRE_PROBE) {
/* HP pin (0x10) has an inverted detection */
codec->inv_jack_detect = 1;
/* disable the bogus Mic and SPDIF jack detections */
snd_hda_apply_pincfgs(codec, pincfgs);
}
}
static int cs4208_spdif_sw_put(struct snd_kcontrol *kcontrol, static int cs4208_spdif_sw_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol) struct snd_ctl_elem_value *ucontrol)
{ {
...@@ -709,6 +730,12 @@ static const struct hda_fixup cs4208_fixups[] = { ...@@ -709,6 +730,12 @@ static const struct hda_fixup cs4208_fixups[] = {
.chained = true, .chained = true,
.chain_id = CS4208_GPIO0, .chain_id = CS4208_GPIO0,
}, },
[CS4208_MACMINI] = {
.type = HDA_FIXUP_FUNC,
.v.func = cs4208_fixup_macmini,
.chained = true,
.chain_id = CS4208_GPIO0,
},
[CS4208_GPIO0] = { [CS4208_GPIO0] = {
.type = HDA_FIXUP_FUNC, .type = HDA_FIXUP_FUNC,
.v.func = cs4208_fixup_gpio0, .v.func = cs4208_fixup_gpio0,
......
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