diff options
Diffstat (limited to 'sound/soc/intel/skylake/skl.c')
-rw-r--r-- | sound/soc/intel/skylake/skl.c | 114 |
1 files changed, 103 insertions, 11 deletions
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index 4c9b5781282b..334917ee41cf 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c | |||
@@ -866,6 +866,7 @@ static void skl_remove(struct pci_dev *pci) | |||
866 | /* codec removal, invoke bus_device_remove */ | 866 | /* codec removal, invoke bus_device_remove */ |
867 | snd_hdac_ext_bus_device_remove(ebus); | 867 | snd_hdac_ext_bus_device_remove(ebus); |
868 | 868 | ||
869 | skl->debugfs = NULL; | ||
869 | skl_platform_unregister(&pci->dev); | 870 | skl_platform_unregister(&pci->dev); |
870 | skl_free_dsp(skl); | 871 | skl_free_dsp(skl); |
871 | skl_machine_device_unregister(skl); | 872 | skl_machine_device_unregister(skl); |
@@ -876,29 +877,120 @@ static void skl_remove(struct pci_dev *pci) | |||
876 | dev_set_drvdata(&pci->dev, NULL); | 877 | dev_set_drvdata(&pci->dev, NULL); |
877 | } | 878 | } |
878 | 879 | ||
880 | static struct sst_codecs skl_codecs = { | ||
881 | .num_codecs = 1, | ||
882 | .codecs = {"NAU88L25"} | ||
883 | }; | ||
884 | |||
885 | static struct sst_codecs kbl_codecs = { | ||
886 | .num_codecs = 1, | ||
887 | .codecs = {"NAU88L25"} | ||
888 | }; | ||
889 | |||
890 | static struct sst_codecs bxt_codecs = { | ||
891 | .num_codecs = 1, | ||
892 | .codecs = {"MX98357A"} | ||
893 | }; | ||
894 | |||
895 | static struct sst_codecs kbl_poppy_codecs = { | ||
896 | .num_codecs = 1, | ||
897 | .codecs = {"10EC5663"} | ||
898 | }; | ||
899 | |||
900 | static struct sst_codecs kbl_5663_5514_codecs = { | ||
901 | .num_codecs = 2, | ||
902 | .codecs = {"10EC5663", "10EC5514"} | ||
903 | }; | ||
904 | |||
905 | |||
879 | static struct sst_acpi_mach sst_skl_devdata[] = { | 906 | static struct sst_acpi_mach sst_skl_devdata[] = { |
880 | { "INT343A", "skl_alc286s_i2s", "intel/dsp_fw_release.bin", NULL, NULL, NULL }, | 907 | { |
881 | { "INT343B", "skl_n88l25_s4567", "intel/dsp_fw_release.bin", | 908 | .id = "INT343A", |
882 | NULL, NULL, &skl_dmic_data }, | 909 | .drv_name = "skl_alc286s_i2s", |
883 | { "MX98357A", "skl_n88l25_m98357a", "intel/dsp_fw_release.bin", | 910 | .fw_filename = "intel/dsp_fw_release.bin", |
884 | NULL, NULL, &skl_dmic_data }, | 911 | }, |
912 | { | ||
913 | .id = "INT343B", | ||
914 | .drv_name = "skl_n88l25_s4567", | ||
915 | .fw_filename = "intel/dsp_fw_release.bin", | ||
916 | .machine_quirk = sst_acpi_codec_list, | ||
917 | .quirk_data = &skl_codecs, | ||
918 | .pdata = &skl_dmic_data | ||
919 | }, | ||
920 | { | ||
921 | .id = "MX98357A", | ||
922 | .drv_name = "skl_n88l25_m98357a", | ||
923 | .fw_filename = "intel/dsp_fw_release.bin", | ||
924 | .machine_quirk = sst_acpi_codec_list, | ||
925 | .quirk_data = &skl_codecs, | ||
926 | .pdata = &skl_dmic_data | ||
927 | }, | ||
885 | {} | 928 | {} |
886 | }; | 929 | }; |
887 | 930 | ||
888 | static struct sst_acpi_mach sst_bxtp_devdata[] = { | 931 | static struct sst_acpi_mach sst_bxtp_devdata[] = { |
889 | { "INT343A", "bxt_alc298s_i2s", "intel/dsp_fw_bxtn.bin", NULL, NULL, NULL }, | 932 | { |
890 | { "DLGS7219", "bxt_da7219_max98357a_i2s", "intel/dsp_fw_bxtn.bin", NULL, NULL, NULL }, | 933 | .id = "INT343A", |
934 | .drv_name = "bxt_alc298s_i2s", | ||
935 | .fw_filename = "intel/dsp_fw_bxtn.bin", | ||
936 | }, | ||
937 | { | ||
938 | .id = "DLGS7219", | ||
939 | .drv_name = "bxt_da7219_max98357a_i2s", | ||
940 | .fw_filename = "intel/dsp_fw_bxtn.bin", | ||
941 | .machine_quirk = sst_acpi_codec_list, | ||
942 | .quirk_data = &bxt_codecs, | ||
943 | }, | ||
891 | }; | 944 | }; |
892 | 945 | ||
893 | static struct sst_acpi_mach sst_kbl_devdata[] = { | 946 | static struct sst_acpi_mach sst_kbl_devdata[] = { |
894 | { "INT343A", "kbl_alc286s_i2s", "intel/dsp_fw_kbl.bin", NULL, NULL, NULL }, | 947 | { |
895 | { "INT343B", "kbl_n88l25_s4567", "intel/dsp_fw_kbl.bin", NULL, NULL, &skl_dmic_data }, | 948 | .id = "INT343A", |
896 | { "MX98357A", "kbl_n88l25_m98357a", "intel/dsp_fw_kbl.bin", NULL, NULL, &skl_dmic_data }, | 949 | .drv_name = "kbl_alc286s_i2s", |
950 | .fw_filename = "intel/dsp_fw_kbl.bin", | ||
951 | }, | ||
952 | { | ||
953 | .id = "INT343B", | ||
954 | .drv_name = "kbl_n88l25_s4567", | ||
955 | .fw_filename = "intel/dsp_fw_kbl.bin", | ||
956 | .machine_quirk = sst_acpi_codec_list, | ||
957 | .quirk_data = &kbl_codecs, | ||
958 | .pdata = &skl_dmic_data | ||
959 | }, | ||
960 | { | ||
961 | .id = "MX98357A", | ||
962 | .drv_name = "kbl_n88l25_m98357a", | ||
963 | .fw_filename = "intel/dsp_fw_kbl.bin", | ||
964 | .machine_quirk = sst_acpi_codec_list, | ||
965 | .quirk_data = &kbl_codecs, | ||
966 | .pdata = &skl_dmic_data | ||
967 | }, | ||
968 | { | ||
969 | .id = "MX98927", | ||
970 | .drv_name = "kbl_r5514_5663_max", | ||
971 | .fw_filename = "intel/dsp_fw_kbl.bin", | ||
972 | .machine_quirk = sst_acpi_codec_list, | ||
973 | .quirk_data = &kbl_5663_5514_codecs, | ||
974 | .pdata = &skl_dmic_data | ||
975 | }, | ||
976 | { | ||
977 | .id = "MX98927", | ||
978 | .drv_name = "kbl_rt5663_m98927", | ||
979 | .fw_filename = "intel/dsp_fw_kbl.bin", | ||
980 | .machine_quirk = sst_acpi_codec_list, | ||
981 | .quirk_data = &kbl_poppy_codecs, | ||
982 | .pdata = &skl_dmic_data | ||
983 | }, | ||
984 | |||
897 | {} | 985 | {} |
898 | }; | 986 | }; |
899 | 987 | ||
900 | static struct sst_acpi_mach sst_glk_devdata[] = { | 988 | static struct sst_acpi_mach sst_glk_devdata[] = { |
901 | { "INT343A", "glk_alc298s_i2s", "intel/dsp_fw_glk.bin", NULL, NULL, NULL }, | 989 | { |
990 | .id = "INT343A", | ||
991 | .drv_name = "glk_alc298s_i2s", | ||
992 | .fw_filename = "intel/dsp_fw_glk.bin", | ||
993 | }, | ||
902 | }; | 994 | }; |
903 | 995 | ||
904 | /* PCI IDs */ | 996 | /* PCI IDs */ |