提交 6ab982e8 编写于 作者: T Takashi Iwai

ALSA: hda - Fix pin configurations for MacBook Air 4,2

MacBook Air 4,2 requires the whole default pin configuration table to
be overridden by the driver, as usual, as Apple's machines don't set
up properly after boot.  Otherwise mic won't work, and other ill
effect may happen.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=59381Reported-and-tested-by: NPeter John Hartman <peterjohnhartman@gmail.com>
Cc: <stable@vger.kernel.org> [v3.9+]
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 342cda29
......@@ -58,6 +58,7 @@ enum {
CS420X_GPIO_23,
CS420X_MBP101,
CS420X_MBP81,
CS420X_MBA42,
CS420X_AUTO,
/* aliases */
CS420X_IMAC27_122 = CS420X_GPIO_23,
......@@ -346,6 +347,7 @@ static const struct hda_model_fixup cs420x_models[] = {
{ .id = CS420X_APPLE, .name = "apple" },
{ .id = CS420X_MBP101, .name = "mbp101" },
{ .id = CS420X_MBP81, .name = "mbp81" },
{ .id = CS420X_MBA42, .name = "mba42" },
{}
};
......@@ -361,6 +363,7 @@ static const struct snd_pci_quirk cs420x_fixup_tbl[] = {
SND_PCI_QUIRK(0x106b, 0x1c00, "MacBookPro 8,1", CS420X_MBP81),
SND_PCI_QUIRK(0x106b, 0x2000, "iMac 12,2", CS420X_IMAC27_122),
SND_PCI_QUIRK(0x106b, 0x2800, "MacBookPro 10,1", CS420X_MBP101),
SND_PCI_QUIRK(0x106b, 0x5b00, "MacBookAir 4,2", CS420X_MBA42),
SND_PCI_QUIRK_VENDOR(0x106b, "Apple", CS420X_APPLE),
{} /* terminator */
};
......@@ -414,6 +417,20 @@ static const struct hda_pintbl mbp101_pincfgs[] = {
{} /* terminator */
};
static const struct hda_pintbl mba42_pincfgs[] = {
{ 0x09, 0x012b4030 }, /* HP */
{ 0x0a, 0x400000f0 },
{ 0x0b, 0x90100120 }, /* speaker */
{ 0x0c, 0x400000f0 },
{ 0x0d, 0x90a00110 }, /* mic */
{ 0x0e, 0x400000f0 },
{ 0x0f, 0x400000f0 },
{ 0x10, 0x400000f0 },
{ 0x12, 0x400000f0 },
{ 0x15, 0x400000f0 },
{} /* terminator */
};
static void cs420x_fixup_gpio_13(struct hda_codec *codec,
const struct hda_fixup *fix, int action)
{
......@@ -482,6 +499,12 @@ static const struct hda_fixup cs420x_fixups[] = {
.chained = true,
.chain_id = CS420X_GPIO_13,
},
[CS420X_MBA42] = {
.type = HDA_FIXUP_PINS,
.v.pins = mba42_pincfgs,
.chained = true,
.chain_id = CS420X_GPIO_13,
},
};
static struct cs_spec *cs_alloc_spec(struct hda_codec *codec, int vendor_nid)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册