Commit 3fc24d850708b8dfd3472b25eac0c32dd7708925
Committed by
Jaroslav Kysela
1 parent
cc69d12d0a
Exists in
master
and in
20 other branches
[ALSA] hda-codec - Define pin configs for MacBooks
Define pin configs for MacBook and MacBook Pro with STAC92xx codecs. The latter is detected automatically by checking codec SSID now. Also, fixed the documentation regarding available modeliof sigmatel codec chips. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Showing 2 changed files with 37 additions and 4 deletions Side-by-side Diff
Documentation/sound/alsa/ALSA-Configuration.txt
... | ... | @@ -895,10 +895,16 @@ |
895 | 895 | can be adjusted. Appearing only when compiled with |
896 | 896 | $CONFIG_SND_DEBUG=y |
897 | 897 | |
898 | - STAC9200/9205/9220/9221/9254 | |
898 | + STAC9200/9205/9254 | |
899 | 899 | ref Reference board |
900 | + | |
901 | + STAC9220/9221 | |
902 | + ref Reference board | |
900 | 903 | 3stack D945 3stack |
901 | 904 | 5stack D945 5stack + SPDIF |
905 | + macmini Intel Mac Mini | |
906 | + macbook Intel Mac Book | |
907 | + macbook-pro Intel Mac Book Pro | |
902 | 908 | |
903 | 909 | STAC9202/9250/9251 |
904 | 910 | ref Reference board, base config |
sound/pci/hda/patch_sigmatel.c
... | ... | @@ -59,6 +59,8 @@ |
59 | 59 | STAC_D945GTP3, |
60 | 60 | STAC_D945GTP5, |
61 | 61 | STAC_MACMINI, |
62 | + STAC_MACBOOK, | |
63 | + STAC_MACBOOK_PRO, | |
62 | 64 | STAC_922X_MODELS |
63 | 65 | }; |
64 | 66 | |
65 | 67 | |
... | ... | @@ -521,11 +523,25 @@ |
521 | 523 | 0x02a19320, 0x40000100, |
522 | 524 | }; |
523 | 525 | |
526 | +static unsigned int macbook_pin_configs[10] = { | |
527 | + 0x0321e230, 0x03a1e020, 0x400000fd, 0x9017e110, | |
528 | + 0x400000fe, 0x0381e021, 0x1345e240, 0x13c5e22e, | |
529 | + 0x400000fc, 0x400000fb, | |
530 | +}; | |
531 | + | |
532 | +static unsigned int macbook_pro_pin_configs[10] = { | |
533 | + 0x0221401f, 0x90a70120, 0x01813024, 0x01014010, | |
534 | + 0x400000fd, 0x01016011, 0x1345e240, 0x13c5e22e, | |
535 | + 0x400000fc, 0x400000fb, | |
536 | +}; | |
537 | + | |
524 | 538 | static unsigned int *stac922x_brd_tbl[STAC_922X_MODELS] = { |
525 | 539 | [STAC_D945_REF] = ref922x_pin_configs, |
526 | 540 | [STAC_D945GTP3] = d945gtp3_pin_configs, |
527 | 541 | [STAC_D945GTP5] = d945gtp5_pin_configs, |
528 | 542 | [STAC_MACMINI] = d945gtp5_pin_configs, |
543 | + [STAC_MACBOOK] = macbook_pin_configs, | |
544 | + [STAC_MACBOOK_PRO] = macbook_pro_pin_configs, | |
529 | 545 | }; |
530 | 546 | |
531 | 547 | static const char *stac922x_models[STAC_922X_MODELS] = { |
... | ... | @@ -533,6 +549,8 @@ |
533 | 549 | [STAC_D945GTP5] = "5stack", |
534 | 550 | [STAC_D945GTP3] = "3stack", |
535 | 551 | [STAC_MACMINI] = "macmini", |
552 | + [STAC_MACBOOK] = "macbook", | |
553 | + [STAC_MACBOOK_PRO] = "macbook-pro", | |
536 | 554 | }; |
537 | 555 | |
538 | 556 | static struct snd_pci_quirk stac922x_cfg_tbl[] = { |
... | ... | @@ -1866,6 +1884,18 @@ |
1866 | 1884 | spec->board_config = snd_hda_check_board_config(codec, STAC_922X_MODELS, |
1867 | 1885 | stac922x_models, |
1868 | 1886 | stac922x_cfg_tbl); |
1887 | + if (spec->board_config == STAC_MACMINI) { | |
1888 | + spec->gpio_mute = 1; | |
1889 | + /* Intel Macs have all same PCI SSID, so we need to check | |
1890 | + * codec SSID to distinguish the exact models | |
1891 | + */ | |
1892 | + switch (codec->subsystem_id) { | |
1893 | + case 0x106b1e00: | |
1894 | + spec->board_config = STAC_MACBOOK_PRO; | |
1895 | + break; | |
1896 | + } | |
1897 | + } | |
1898 | + | |
1869 | 1899 | again: |
1870 | 1900 | if (spec->board_config < 0) { |
1871 | 1901 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC922x, " |
... | ... | @@ -1905,9 +1935,6 @@ |
1905 | 1935 | stac92xx_free(codec); |
1906 | 1936 | return err; |
1907 | 1937 | } |
1908 | - | |
1909 | - if (spec->board_config == STAC_MACMINI) | |
1910 | - spec->gpio_mute = 1; | |
1911 | 1938 | |
1912 | 1939 | codec->patch_ops = stac92xx_patch_ops; |
1913 | 1940 |