Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: hda/sigmatel: Rewrite to new probe method

Convert the Sigmatel/IDT codec driver to use the new hda_codec_ops
probe. No functional changes.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20250709160434.1859-22-tiwai@suse.de

+203 -195
+203 -195
sound/hda/codecs/sigmatel.c
··· 2 2 /* 3 3 * Universal Interface for Intel High Definition Audio Codec 4 4 * 5 - * HD audio interface patch for SigmaTel STAC92xx 5 + * HD audio codec driver for SigmaTel STAC92xx 6 6 * 7 7 * Copyright (c) 2005 Embedded Alley Solutions, Inc. 8 8 * Matt Porter <mporter@embeddedalley.com> ··· 4391 4391 return 0; 4392 4392 } 4393 4393 4394 - #define stac_free snd_hda_gen_free 4395 - 4396 4394 #ifdef CONFIG_SND_PROC_FS 4397 4395 static void stac92hd_proc_hook(struct snd_info_buffer *buffer, 4398 4396 struct hda_codec *codec, hda_nid_t nid) ··· 4452 4454 return 0; 4453 4455 } 4454 4456 4455 - static const struct hda_codec_ops stac_patch_ops = { 4456 - .build_controls = snd_hda_gen_build_controls, 4457 - .build_pcms = snd_hda_gen_build_pcms, 4458 - .init = stac_init, 4459 - .free = stac_free, 4460 - .unsol_event = snd_hda_jack_unsol_event, 4461 - .suspend = stac_suspend, 4462 - }; 4463 - 4464 4457 static int alloc_stac_spec(struct hda_codec *codec) 4465 4458 { 4466 4459 struct sigmatel_spec *spec; ··· 4463 4474 codec->spec = spec; 4464 4475 codec->no_trigger_sense = 1; /* seems common with STAC/IDT codecs */ 4465 4476 spec->gen.dac_min_mute = true; 4466 - codec->patch_ops = stac_patch_ops; 4467 4477 return 0; 4468 4478 } 4469 4479 4470 - static int patch_stac9200(struct hda_codec *codec) 4480 + static int probe_stac9200(struct hda_codec *codec) 4471 4481 { 4472 4482 struct sigmatel_spec *spec; 4473 4483 int err; 4474 - 4475 - err = alloc_stac_spec(codec); 4476 - if (err < 0) 4477 - return err; 4478 4484 4479 4485 spec = codec->spec; 4480 4486 spec->linear_tone_beep = 1; ··· 4484 4500 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); 4485 4501 4486 4502 err = stac_parse_auto_config(codec); 4487 - if (err < 0) { 4488 - stac_free(codec); 4503 + if (err < 0) 4489 4504 return err; 4490 - } 4491 4505 4492 4506 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); 4493 4507 4494 4508 return 0; 4495 4509 } 4496 4510 4497 - static int patch_stac925x(struct hda_codec *codec) 4511 + static int probe_stac925x(struct hda_codec *codec) 4498 4512 { 4499 4513 struct sigmatel_spec *spec; 4500 4514 int err; 4501 - 4502 - err = alloc_stac_spec(codec); 4503 - if (err < 0) 4504 - return err; 4505 4515 4506 4516 spec = codec->spec; 4507 4517 spec->linear_tone_beep = 1; ··· 4508 4530 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); 4509 4531 4510 4532 err = stac_parse_auto_config(codec); 4511 - if (err < 0) { 4512 - stac_free(codec); 4533 + if (err < 0) 4513 4534 return err; 4514 - } 4515 4535 4516 4536 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); 4517 4537 4518 4538 return 0; 4519 4539 } 4520 4540 4521 - static int patch_stac92hd73xx(struct hda_codec *codec) 4541 + static int probe_stac92hd73xx(struct hda_codec *codec) 4522 4542 { 4523 4543 struct sigmatel_spec *spec; 4524 4544 int err; 4525 4545 int num_dacs; 4526 - 4527 - err = alloc_stac_spec(codec); 4528 - if (err < 0) 4529 - return err; 4530 4546 4531 4547 spec = codec->spec; 4532 4548 /* enable power_save_node only for new 92HD89xx chips, as it causes ··· 4576 4604 snd_hda_add_verbs(codec, stac92hd73xx_core_init); 4577 4605 4578 4606 err = stac_parse_auto_config(codec); 4579 - if (err < 0) { 4580 - stac_free(codec); 4607 + if (err < 0) 4581 4608 return err; 4582 - } 4583 4609 4584 4610 /* Don't GPIO-mute speakers if there are no internal speakers, because 4585 4611 * the GPIO might be necessary for Headphone ··· 4616 4646 } 4617 4647 } 4618 4648 4619 - static int patch_stac92hd83xxx(struct hda_codec *codec) 4649 + static int probe_stac92hd83xxx(struct hda_codec *codec) 4620 4650 { 4621 4651 struct sigmatel_spec *spec; 4622 4652 int err; 4623 - 4624 - err = alloc_stac_spec(codec); 4625 - if (err < 0) 4626 - return err; 4627 4653 4628 4654 /* longer delay needed for D3 */ 4629 4655 codec->core.power_caps &= ~AC_PWRST_EPSS; ··· 4645 4679 stac_setup_gpio(codec); 4646 4680 4647 4681 err = stac_parse_auto_config(codec); 4648 - if (err < 0) { 4649 - stac_free(codec); 4682 + if (err < 0) 4650 4683 return err; 4651 - } 4652 4684 4653 4685 codec->proc_widget_hook = stac92hd_proc_hook; 4654 4686 ··· 4659 4695 0x0a, 0x0b, 0x0c, 0x0d 4660 4696 }; 4661 4697 4662 - static int patch_stac92hd95(struct hda_codec *codec) 4698 + static int probe_stac92hd95(struct hda_codec *codec) 4663 4699 { 4664 4700 struct sigmatel_spec *spec; 4665 4701 int err; 4666 - 4667 - err = alloc_stac_spec(codec); 4668 - if (err < 0) 4669 - return err; 4670 4702 4671 4703 /* longer delay needed for D3 */ 4672 4704 codec->core.power_caps &= ~AC_PWRST_EPSS; ··· 4685 4725 stac_setup_gpio(codec); 4686 4726 4687 4727 err = stac_parse_auto_config(codec); 4688 - if (err < 0) { 4689 - stac_free(codec); 4728 + if (err < 0) 4690 4729 return err; 4691 - } 4692 4730 4693 4731 codec->proc_widget_hook = stac92hd_proc_hook; 4694 4732 ··· 4695 4737 return 0; 4696 4738 } 4697 4739 4698 - static int patch_stac92hd71bxx(struct hda_codec *codec) 4740 + static int probe_stac92hd71bxx(struct hda_codec *codec) 4699 4741 { 4700 4742 struct sigmatel_spec *spec; 4701 4743 const hda_nid_t *unmute_nids = stac92hd71bxx_unmute_nids; 4702 4744 int err; 4703 - 4704 - err = alloc_stac_spec(codec); 4705 - if (err < 0) 4706 - return err; 4707 4745 4708 4746 spec = codec->spec; 4709 4747 /* disabled power_save_node since it causes noises on a Dell machine */ ··· 4763 4809 stac_setup_gpio(codec); 4764 4810 4765 4811 err = stac_parse_auto_config(codec); 4766 - if (err < 0) { 4767 - stac_free(codec); 4812 + if (err < 0) 4768 4813 return err; 4769 - } 4770 4814 4771 4815 codec->proc_widget_hook = stac92hd7x_proc_hook; 4772 4816 ··· 4773 4821 return 0; 4774 4822 } 4775 4823 4776 - static int patch_stac922x(struct hda_codec *codec) 4824 + static int probe_stac922x(struct hda_codec *codec) 4777 4825 { 4778 4826 struct sigmatel_spec *spec; 4779 4827 int err; 4780 - 4781 - err = alloc_stac_spec(codec); 4782 - if (err < 0) 4783 - return err; 4784 4828 4785 4829 spec = codec->spec; 4786 4830 spec->linear_tone_beep = 1; ··· 4796 4848 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); 4797 4849 4798 4850 err = stac_parse_auto_config(codec); 4799 - if (err < 0) { 4800 - stac_free(codec); 4851 + if (err < 0) 4801 4852 return err; 4802 - } 4803 4853 4804 4854 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); 4805 4855 ··· 4809 4863 "Analog Mux 2", "Analog Mux 3", NULL 4810 4864 }; 4811 4865 4812 - static int patch_stac927x(struct hda_codec *codec) 4866 + static int probe_stac927x(struct hda_codec *codec) 4813 4867 { 4814 4868 struct sigmatel_spec *spec; 4815 4869 int err; 4816 - 4817 - err = alloc_stac_spec(codec); 4818 - if (err < 0) 4819 - return err; 4820 4870 4821 4871 spec = codec->spec; 4822 4872 spec->linear_tone_beep = 1; ··· 4839 4897 snd_hda_add_verbs(codec, stac927x_core_init); 4840 4898 4841 4899 err = stac_parse_auto_config(codec); 4842 - if (err < 0) { 4843 - stac_free(codec); 4900 + if (err < 0) 4844 4901 return err; 4845 - } 4846 4902 4847 4903 codec->proc_widget_hook = stac927x_proc_hook; 4848 4904 ··· 4861 4921 return 0; 4862 4922 } 4863 4923 4864 - static int patch_stac9205(struct hda_codec *codec) 4924 + static int probe_stac9205(struct hda_codec *codec) 4865 4925 { 4866 4926 struct sigmatel_spec *spec; 4867 4927 int err; 4868 - 4869 - err = alloc_stac_spec(codec); 4870 - if (err < 0) 4871 - return err; 4872 4928 4873 4929 spec = codec->spec; 4874 4930 spec->linear_tone_beep = 1; ··· 4891 4955 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); 4892 4956 4893 4957 err = stac_parse_auto_config(codec); 4894 - if (err < 0) { 4895 - stac_free(codec); 4958 + if (err < 0) 4896 4959 return err; 4897 - } 4898 4960 4899 4961 codec->proc_widget_hook = stac9205_proc_hook; 4900 4962 ··· 4942 5008 {} /* terminator */ 4943 5009 }; 4944 5010 4945 - static int patch_stac9872(struct hda_codec *codec) 5011 + static int probe_stac9872(struct hda_codec *codec) 4946 5012 { 4947 5013 struct sigmatel_spec *spec; 4948 5014 int err; 4949 - 4950 - err = alloc_stac_spec(codec); 4951 - if (err < 0) 4952 - return err; 4953 5015 4954 5016 spec = codec->spec; 4955 5017 spec->linear_tone_beep = 1; ··· 4958 5028 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); 4959 5029 4960 5030 err = stac_parse_auto_config(codec); 4961 - if (err < 0) { 4962 - stac_free(codec); 4963 - return -EINVAL; 4964 - } 5031 + if (err < 0) 5032 + return err; 4965 5033 4966 5034 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); 4967 5035 4968 5036 return 0; 4969 5037 } 4970 5038 5039 + /* 5040 + * common driver probe 5041 + */ 5042 + 5043 + enum { 5044 + MODEL_STAC9200, 5045 + MODEL_STAC9205, 5046 + MODEL_STAC922X, 5047 + MODEL_STAC925X, 5048 + MODEL_STAC927X, 5049 + MODEL_STAC9872, 5050 + MODEL_STAC92HD71BXX, 5051 + MODEL_STAC92HD73XX, 5052 + MODEL_STAC92HD83XXX, 5053 + MODEL_STAC92HD95, 5054 + }; 5055 + 5056 + static int stac_probe(struct hda_codec *codec, const struct hda_device_id *id) 5057 + { 5058 + int err; 5059 + 5060 + err = alloc_stac_spec(codec); 5061 + if (err < 0) 5062 + return err; 5063 + 5064 + switch (id->driver_data) { 5065 + case MODEL_STAC9200: 5066 + err = probe_stac9200(codec); 5067 + break; 5068 + case MODEL_STAC9205: 5069 + err = probe_stac9205(codec); 5070 + break; 5071 + case MODEL_STAC922X: 5072 + err = probe_stac922x(codec); 5073 + break; 5074 + case MODEL_STAC925X: 5075 + err = probe_stac925x(codec); 5076 + break; 5077 + case MODEL_STAC927X: 5078 + err = probe_stac927x(codec); 5079 + break; 5080 + case MODEL_STAC9872: 5081 + err = probe_stac9872(codec); 5082 + break; 5083 + case MODEL_STAC92HD71BXX: 5084 + err = probe_stac92hd71bxx(codec); 5085 + break; 5086 + case MODEL_STAC92HD73XX: 5087 + err = probe_stac92hd73xx(codec); 5088 + break; 5089 + case MODEL_STAC92HD83XXX: 5090 + err = probe_stac92hd83xxx(codec); 5091 + break; 5092 + case MODEL_STAC92HD95: 5093 + err = probe_stac92hd95(codec); 5094 + break; 5095 + default: 5096 + err = -EINVAL; 5097 + break; 5098 + } 5099 + 5100 + if (err < 0) { 5101 + snd_hda_gen_remove(codec); 5102 + return err; 5103 + } 5104 + 5105 + return 0; 5106 + } 5107 + 5108 + static const struct hda_codec_ops stac_codec_ops = { 5109 + .probe = stac_probe, 5110 + .remove = snd_hda_gen_remove, 5111 + .build_controls = snd_hda_gen_build_controls, 5112 + .build_pcms = snd_hda_gen_build_pcms, 5113 + .init = stac_init, 5114 + .unsol_event = snd_hda_jack_unsol_event, 5115 + .suspend = stac_suspend, 5116 + .stream_pm = snd_hda_gen_stream_pm, 5117 + }; 4971 5118 4972 5119 /* 4973 - * patch entries 5120 + * driver entries 4974 5121 */ 4975 5122 static const struct hda_device_id snd_hda_id_sigmatel[] = { 4976 - HDA_CODEC_ENTRY(0x83847690, "STAC9200", patch_stac9200), 4977 - HDA_CODEC_ENTRY(0x83847882, "STAC9220 A1", patch_stac922x), 4978 - HDA_CODEC_ENTRY(0x83847680, "STAC9221 A1", patch_stac922x), 4979 - HDA_CODEC_ENTRY(0x83847880, "STAC9220 A2", patch_stac922x), 4980 - HDA_CODEC_ENTRY(0x83847681, "STAC9220D/9223D A2", patch_stac922x), 4981 - HDA_CODEC_ENTRY(0x83847682, "STAC9221 A2", patch_stac922x), 4982 - HDA_CODEC_ENTRY(0x83847683, "STAC9221D A2", patch_stac922x), 4983 - HDA_CODEC_ENTRY(0x83847618, "STAC9227", patch_stac927x), 4984 - HDA_CODEC_ENTRY(0x83847619, "STAC9227", patch_stac927x), 4985 - HDA_CODEC_ENTRY(0x83847638, "STAC92HD700", patch_stac927x), 4986 - HDA_CODEC_ENTRY(0x83847616, "STAC9228", patch_stac927x), 4987 - HDA_CODEC_ENTRY(0x83847617, "STAC9228", patch_stac927x), 4988 - HDA_CODEC_ENTRY(0x83847614, "STAC9229", patch_stac927x), 4989 - HDA_CODEC_ENTRY(0x83847615, "STAC9229", patch_stac927x), 4990 - HDA_CODEC_ENTRY(0x83847620, "STAC9274", patch_stac927x), 4991 - HDA_CODEC_ENTRY(0x83847621, "STAC9274D", patch_stac927x), 4992 - HDA_CODEC_ENTRY(0x83847622, "STAC9273X", patch_stac927x), 4993 - HDA_CODEC_ENTRY(0x83847623, "STAC9273D", patch_stac927x), 4994 - HDA_CODEC_ENTRY(0x83847624, "STAC9272X", patch_stac927x), 4995 - HDA_CODEC_ENTRY(0x83847625, "STAC9272D", patch_stac927x), 4996 - HDA_CODEC_ENTRY(0x83847626, "STAC9271X", patch_stac927x), 4997 - HDA_CODEC_ENTRY(0x83847627, "STAC9271D", patch_stac927x), 4998 - HDA_CODEC_ENTRY(0x83847628, "STAC9274X5NH", patch_stac927x), 4999 - HDA_CODEC_ENTRY(0x83847629, "STAC9274D5NH", patch_stac927x), 5000 - HDA_CODEC_ENTRY(0x83847632, "STAC9202", patch_stac925x), 5001 - HDA_CODEC_ENTRY(0x83847633, "STAC9202D", patch_stac925x), 5002 - HDA_CODEC_ENTRY(0x83847634, "STAC9250", patch_stac925x), 5003 - HDA_CODEC_ENTRY(0x83847635, "STAC9250D", patch_stac925x), 5004 - HDA_CODEC_ENTRY(0x83847636, "STAC9251", patch_stac925x), 5005 - HDA_CODEC_ENTRY(0x83847637, "STAC9250D", patch_stac925x), 5006 - HDA_CODEC_ENTRY(0x83847645, "92HD206X", patch_stac927x), 5007 - HDA_CODEC_ENTRY(0x83847646, "92HD206D", patch_stac927x), 5123 + HDA_CODEC_ID_MODEL(0x83847690, "STAC9200", MODEL_STAC9200), 5124 + HDA_CODEC_ID_MODEL(0x83847882, "STAC9220 A1", MODEL_STAC922X), 5125 + HDA_CODEC_ID_MODEL(0x83847680, "STAC9221 A1", MODEL_STAC922X), 5126 + HDA_CODEC_ID_MODEL(0x83847880, "STAC9220 A2", MODEL_STAC922X), 5127 + HDA_CODEC_ID_MODEL(0x83847681, "STAC9220D/9223D A2", MODEL_STAC922X), 5128 + HDA_CODEC_ID_MODEL(0x83847682, "STAC9221 A2", MODEL_STAC922X), 5129 + HDA_CODEC_ID_MODEL(0x83847683, "STAC9221D A2", MODEL_STAC922X), 5130 + HDA_CODEC_ID_MODEL(0x83847618, "STAC9227", MODEL_STAC927X), 5131 + HDA_CODEC_ID_MODEL(0x83847619, "STAC9227", MODEL_STAC927X), 5132 + HDA_CODEC_ID_MODEL(0x83847638, "STAC92HD700", MODEL_STAC927X), 5133 + HDA_CODEC_ID_MODEL(0x83847616, "STAC9228", MODEL_STAC927X), 5134 + HDA_CODEC_ID_MODEL(0x83847617, "STAC9228", MODEL_STAC927X), 5135 + HDA_CODEC_ID_MODEL(0x83847614, "STAC9229", MODEL_STAC927X), 5136 + HDA_CODEC_ID_MODEL(0x83847615, "STAC9229", MODEL_STAC927X), 5137 + HDA_CODEC_ID_MODEL(0x83847620, "STAC9274", MODEL_STAC927X), 5138 + HDA_CODEC_ID_MODEL(0x83847621, "STAC9274D", MODEL_STAC927X), 5139 + HDA_CODEC_ID_MODEL(0x83847622, "STAC9273X", MODEL_STAC927X), 5140 + HDA_CODEC_ID_MODEL(0x83847623, "STAC9273D", MODEL_STAC927X), 5141 + HDA_CODEC_ID_MODEL(0x83847624, "STAC9272X", MODEL_STAC927X), 5142 + HDA_CODEC_ID_MODEL(0x83847625, "STAC9272D", MODEL_STAC927X), 5143 + HDA_CODEC_ID_MODEL(0x83847626, "STAC9271X", MODEL_STAC927X), 5144 + HDA_CODEC_ID_MODEL(0x83847627, "STAC9271D", MODEL_STAC927X), 5145 + HDA_CODEC_ID_MODEL(0x83847628, "STAC9274X5NH", MODEL_STAC927X), 5146 + HDA_CODEC_ID_MODEL(0x83847629, "STAC9274D5NH", MODEL_STAC927X), 5147 + HDA_CODEC_ID_MODEL(0x83847632, "STAC9202", MODEL_STAC925X), 5148 + HDA_CODEC_ID_MODEL(0x83847633, "STAC9202D", MODEL_STAC925X), 5149 + HDA_CODEC_ID_MODEL(0x83847634, "STAC9250", MODEL_STAC925X), 5150 + HDA_CODEC_ID_MODEL(0x83847635, "STAC9250D", MODEL_STAC925X), 5151 + HDA_CODEC_ID_MODEL(0x83847636, "STAC9251", MODEL_STAC925X), 5152 + HDA_CODEC_ID_MODEL(0x83847637, "STAC9250D", MODEL_STAC925X), 5153 + HDA_CODEC_ID_MODEL(0x83847645, "92HD206X", MODEL_STAC927X), 5154 + HDA_CODEC_ID_MODEL(0x83847646, "92HD206D", MODEL_STAC927X), 5008 5155 /* The following does not take into account .id=0x83847661 when subsys = 5009 5156 * 104D0C00 which is STAC9225s. Because of this, some SZ Notebooks are 5010 5157 * currently not fully supported. 5011 5158 */ 5012 - HDA_CODEC_ENTRY(0x83847661, "CXD9872RD/K", patch_stac9872), 5013 - HDA_CODEC_ENTRY(0x83847662, "STAC9872AK", patch_stac9872), 5014 - HDA_CODEC_ENTRY(0x83847664, "CXD9872AKD", patch_stac9872), 5015 - HDA_CODEC_ENTRY(0x83847698, "STAC9205", patch_stac9205), 5016 - HDA_CODEC_ENTRY(0x838476a0, "STAC9205", patch_stac9205), 5017 - HDA_CODEC_ENTRY(0x838476a1, "STAC9205D", patch_stac9205), 5018 - HDA_CODEC_ENTRY(0x838476a2, "STAC9204", patch_stac9205), 5019 - HDA_CODEC_ENTRY(0x838476a3, "STAC9204D", patch_stac9205), 5020 - HDA_CODEC_ENTRY(0x838476a4, "STAC9255", patch_stac9205), 5021 - HDA_CODEC_ENTRY(0x838476a5, "STAC9255D", patch_stac9205), 5022 - HDA_CODEC_ENTRY(0x838476a6, "STAC9254", patch_stac9205), 5023 - HDA_CODEC_ENTRY(0x838476a7, "STAC9254D", patch_stac9205), 5024 - HDA_CODEC_ENTRY(0x111d7603, "92HD75B3X5", patch_stac92hd71bxx), 5025 - HDA_CODEC_ENTRY(0x111d7604, "92HD83C1X5", patch_stac92hd83xxx), 5026 - HDA_CODEC_ENTRY(0x111d76d4, "92HD83C1C5", patch_stac92hd83xxx), 5027 - HDA_CODEC_ENTRY(0x111d7605, "92HD81B1X5", patch_stac92hd83xxx), 5028 - HDA_CODEC_ENTRY(0x111d76d5, "92HD81B1C5", patch_stac92hd83xxx), 5029 - HDA_CODEC_ENTRY(0x111d76d1, "92HD87B1/3", patch_stac92hd83xxx), 5030 - HDA_CODEC_ENTRY(0x111d76d9, "92HD87B2/4", patch_stac92hd83xxx), 5031 - HDA_CODEC_ENTRY(0x111d7666, "92HD88B3", patch_stac92hd83xxx), 5032 - HDA_CODEC_ENTRY(0x111d7667, "92HD88B1", patch_stac92hd83xxx), 5033 - HDA_CODEC_ENTRY(0x111d7668, "92HD88B2", patch_stac92hd83xxx), 5034 - HDA_CODEC_ENTRY(0x111d7669, "92HD88B4", patch_stac92hd83xxx), 5035 - HDA_CODEC_ENTRY(0x111d7608, "92HD75B2X5", patch_stac92hd71bxx), 5036 - HDA_CODEC_ENTRY(0x111d7674, "92HD73D1X5", patch_stac92hd73xx), 5037 - HDA_CODEC_ENTRY(0x111d7675, "92HD73C1X5", patch_stac92hd73xx), 5038 - HDA_CODEC_ENTRY(0x111d7676, "92HD73E1X5", patch_stac92hd73xx), 5039 - HDA_CODEC_ENTRY(0x111d7695, "92HD95", patch_stac92hd95), 5040 - HDA_CODEC_ENTRY(0x111d76b0, "92HD71B8X", patch_stac92hd71bxx), 5041 - HDA_CODEC_ENTRY(0x111d76b1, "92HD71B8X", patch_stac92hd71bxx), 5042 - HDA_CODEC_ENTRY(0x111d76b2, "92HD71B7X", patch_stac92hd71bxx), 5043 - HDA_CODEC_ENTRY(0x111d76b3, "92HD71B7X", patch_stac92hd71bxx), 5044 - HDA_CODEC_ENTRY(0x111d76b4, "92HD71B6X", patch_stac92hd71bxx), 5045 - HDA_CODEC_ENTRY(0x111d76b5, "92HD71B6X", patch_stac92hd71bxx), 5046 - HDA_CODEC_ENTRY(0x111d76b6, "92HD71B5X", patch_stac92hd71bxx), 5047 - HDA_CODEC_ENTRY(0x111d76b7, "92HD71B5X", patch_stac92hd71bxx), 5048 - HDA_CODEC_ENTRY(0x111d76c0, "92HD89C3", patch_stac92hd73xx), 5049 - HDA_CODEC_ENTRY(0x111d76c1, "92HD89C2", patch_stac92hd73xx), 5050 - HDA_CODEC_ENTRY(0x111d76c2, "92HD89C1", patch_stac92hd73xx), 5051 - HDA_CODEC_ENTRY(0x111d76c3, "92HD89B3", patch_stac92hd73xx), 5052 - HDA_CODEC_ENTRY(0x111d76c4, "92HD89B2", patch_stac92hd73xx), 5053 - HDA_CODEC_ENTRY(0x111d76c5, "92HD89B1", patch_stac92hd73xx), 5054 - HDA_CODEC_ENTRY(0x111d76c6, "92HD89E3", patch_stac92hd73xx), 5055 - HDA_CODEC_ENTRY(0x111d76c7, "92HD89E2", patch_stac92hd73xx), 5056 - HDA_CODEC_ENTRY(0x111d76c8, "92HD89E1", patch_stac92hd73xx), 5057 - HDA_CODEC_ENTRY(0x111d76c9, "92HD89D3", patch_stac92hd73xx), 5058 - HDA_CODEC_ENTRY(0x111d76ca, "92HD89D2", patch_stac92hd73xx), 5059 - HDA_CODEC_ENTRY(0x111d76cb, "92HD89D1", patch_stac92hd73xx), 5060 - HDA_CODEC_ENTRY(0x111d76cc, "92HD89F3", patch_stac92hd73xx), 5061 - HDA_CODEC_ENTRY(0x111d76cd, "92HD89F2", patch_stac92hd73xx), 5062 - HDA_CODEC_ENTRY(0x111d76ce, "92HD89F1", patch_stac92hd73xx), 5063 - HDA_CODEC_ENTRY(0x111d76df, "92HD93BXX", patch_stac92hd83xxx), 5064 - HDA_CODEC_ENTRY(0x111d76e0, "92HD91BXX", patch_stac92hd83xxx), 5065 - HDA_CODEC_ENTRY(0x111d76e3, "92HD98BXX", patch_stac92hd83xxx), 5066 - HDA_CODEC_ENTRY(0x111d76e5, "92HD99BXX", patch_stac92hd83xxx), 5067 - HDA_CODEC_ENTRY(0x111d76e7, "92HD90BXX", patch_stac92hd83xxx), 5068 - HDA_CODEC_ENTRY(0x111d76e8, "92HD66B1X5", patch_stac92hd83xxx), 5069 - HDA_CODEC_ENTRY(0x111d76e9, "92HD66B2X5", patch_stac92hd83xxx), 5070 - HDA_CODEC_ENTRY(0x111d76ea, "92HD66B3X5", patch_stac92hd83xxx), 5071 - HDA_CODEC_ENTRY(0x111d76eb, "92HD66C1X5", patch_stac92hd83xxx), 5072 - HDA_CODEC_ENTRY(0x111d76ec, "92HD66C2X5", patch_stac92hd83xxx), 5073 - HDA_CODEC_ENTRY(0x111d76ed, "92HD66C3X5", patch_stac92hd83xxx), 5074 - HDA_CODEC_ENTRY(0x111d76ee, "92HD66B1X3", patch_stac92hd83xxx), 5075 - HDA_CODEC_ENTRY(0x111d76ef, "92HD66B2X3", patch_stac92hd83xxx), 5076 - HDA_CODEC_ENTRY(0x111d76f0, "92HD66B3X3", patch_stac92hd83xxx), 5077 - HDA_CODEC_ENTRY(0x111d76f1, "92HD66C1X3", patch_stac92hd83xxx), 5078 - HDA_CODEC_ENTRY(0x111d76f2, "92HD66C2X3", patch_stac92hd83xxx), 5079 - HDA_CODEC_ENTRY(0x111d76f3, "92HD66C3/65", patch_stac92hd83xxx), 5159 + HDA_CODEC_ID_MODEL(0x83847661, "CXD9872RD/K", MODEL_STAC9872), 5160 + HDA_CODEC_ID_MODEL(0x83847662, "STAC9872AK", MODEL_STAC9872), 5161 + HDA_CODEC_ID_MODEL(0x83847664, "CXD9872AKD", MODEL_STAC9872), 5162 + HDA_CODEC_ID_MODEL(0x83847698, "STAC9205", MODEL_STAC9205), 5163 + HDA_CODEC_ID_MODEL(0x838476a0, "STAC9205", MODEL_STAC9205), 5164 + HDA_CODEC_ID_MODEL(0x838476a1, "STAC9205D", MODEL_STAC9205), 5165 + HDA_CODEC_ID_MODEL(0x838476a2, "STAC9204", MODEL_STAC9205), 5166 + HDA_CODEC_ID_MODEL(0x838476a3, "STAC9204D", MODEL_STAC9205), 5167 + HDA_CODEC_ID_MODEL(0x838476a4, "STAC9255", MODEL_STAC9205), 5168 + HDA_CODEC_ID_MODEL(0x838476a5, "STAC9255D", MODEL_STAC9205), 5169 + HDA_CODEC_ID_MODEL(0x838476a6, "STAC9254", MODEL_STAC9205), 5170 + HDA_CODEC_ID_MODEL(0x838476a7, "STAC9254D", MODEL_STAC9205), 5171 + HDA_CODEC_ID_MODEL(0x111d7603, "92HD75B3X5", MODEL_STAC92HD71BXX), 5172 + HDA_CODEC_ID_MODEL(0x111d7604, "92HD83C1X5", MODEL_STAC92HD83XXX), 5173 + HDA_CODEC_ID_MODEL(0x111d76d4, "92HD83C1C5", MODEL_STAC92HD83XXX), 5174 + HDA_CODEC_ID_MODEL(0x111d7605, "92HD81B1X5", MODEL_STAC92HD83XXX), 5175 + HDA_CODEC_ID_MODEL(0x111d76d5, "92HD81B1C5", MODEL_STAC92HD83XXX), 5176 + HDA_CODEC_ID_MODEL(0x111d76d1, "92HD87B1/3", MODEL_STAC92HD83XXX), 5177 + HDA_CODEC_ID_MODEL(0x111d76d9, "92HD87B2/4", MODEL_STAC92HD83XXX), 5178 + HDA_CODEC_ID_MODEL(0x111d7666, "92HD88B3", MODEL_STAC92HD83XXX), 5179 + HDA_CODEC_ID_MODEL(0x111d7667, "92HD88B1", MODEL_STAC92HD83XXX), 5180 + HDA_CODEC_ID_MODEL(0x111d7668, "92HD88B2", MODEL_STAC92HD83XXX), 5181 + HDA_CODEC_ID_MODEL(0x111d7669, "92HD88B4", MODEL_STAC92HD83XXX), 5182 + HDA_CODEC_ID_MODEL(0x111d7608, "92HD75B2X5", MODEL_STAC92HD71BXX), 5183 + HDA_CODEC_ID_MODEL(0x111d7674, "92HD73D1X5", MODEL_STAC92HD73XX), 5184 + HDA_CODEC_ID_MODEL(0x111d7675, "92HD73C1X5", MODEL_STAC92HD73XX), 5185 + HDA_CODEC_ID_MODEL(0x111d7676, "92HD73E1X5", MODEL_STAC92HD73XX), 5186 + HDA_CODEC_ID_MODEL(0x111d7695, "92HD95", MODEL_STAC92HD95), 5187 + HDA_CODEC_ID_MODEL(0x111d76b0, "92HD71B8X", MODEL_STAC92HD71BXX), 5188 + HDA_CODEC_ID_MODEL(0x111d76b1, "92HD71B8X", MODEL_STAC92HD71BXX), 5189 + HDA_CODEC_ID_MODEL(0x111d76b2, "92HD71B7X", MODEL_STAC92HD71BXX), 5190 + HDA_CODEC_ID_MODEL(0x111d76b3, "92HD71B7X", MODEL_STAC92HD71BXX), 5191 + HDA_CODEC_ID_MODEL(0x111d76b4, "92HD71B6X", MODEL_STAC92HD71BXX), 5192 + HDA_CODEC_ID_MODEL(0x111d76b5, "92HD71B6X", MODEL_STAC92HD71BXX), 5193 + HDA_CODEC_ID_MODEL(0x111d76b6, "92HD71B5X", MODEL_STAC92HD71BXX), 5194 + HDA_CODEC_ID_MODEL(0x111d76b7, "92HD71B5X", MODEL_STAC92HD71BXX), 5195 + HDA_CODEC_ID_MODEL(0x111d76c0, "92HD89C3", MODEL_STAC92HD73XX), 5196 + HDA_CODEC_ID_MODEL(0x111d76c1, "92HD89C2", MODEL_STAC92HD73XX), 5197 + HDA_CODEC_ID_MODEL(0x111d76c2, "92HD89C1", MODEL_STAC92HD73XX), 5198 + HDA_CODEC_ID_MODEL(0x111d76c3, "92HD89B3", MODEL_STAC92HD73XX), 5199 + HDA_CODEC_ID_MODEL(0x111d76c4, "92HD89B2", MODEL_STAC92HD73XX), 5200 + HDA_CODEC_ID_MODEL(0x111d76c5, "92HD89B1", MODEL_STAC92HD73XX), 5201 + HDA_CODEC_ID_MODEL(0x111d76c6, "92HD89E3", MODEL_STAC92HD73XX), 5202 + HDA_CODEC_ID_MODEL(0x111d76c7, "92HD89E2", MODEL_STAC92HD73XX), 5203 + HDA_CODEC_ID_MODEL(0x111d76c8, "92HD89E1", MODEL_STAC92HD73XX), 5204 + HDA_CODEC_ID_MODEL(0x111d76c9, "92HD89D3", MODEL_STAC92HD73XX), 5205 + HDA_CODEC_ID_MODEL(0x111d76ca, "92HD89D2", MODEL_STAC92HD73XX), 5206 + HDA_CODEC_ID_MODEL(0x111d76cb, "92HD89D1", MODEL_STAC92HD73XX), 5207 + HDA_CODEC_ID_MODEL(0x111d76cc, "92HD89F3", MODEL_STAC92HD73XX), 5208 + HDA_CODEC_ID_MODEL(0x111d76cd, "92HD89F2", MODEL_STAC92HD73XX), 5209 + HDA_CODEC_ID_MODEL(0x111d76ce, "92HD89F1", MODEL_STAC92HD73XX), 5210 + HDA_CODEC_ID_MODEL(0x111d76df, "92HD93BXX", MODEL_STAC92HD83XXX), 5211 + HDA_CODEC_ID_MODEL(0x111d76e0, "92HD91BXX", MODEL_STAC92HD83XXX), 5212 + HDA_CODEC_ID_MODEL(0x111d76e3, "92HD98BXX", MODEL_STAC92HD83XXX), 5213 + HDA_CODEC_ID_MODEL(0x111d76e5, "92HD99BXX", MODEL_STAC92HD83XXX), 5214 + HDA_CODEC_ID_MODEL(0x111d76e7, "92HD90BXX", MODEL_STAC92HD83XXX), 5215 + HDA_CODEC_ID_MODEL(0x111d76e8, "92HD66B1X5", MODEL_STAC92HD83XXX), 5216 + HDA_CODEC_ID_MODEL(0x111d76e9, "92HD66B2X5", MODEL_STAC92HD83XXX), 5217 + HDA_CODEC_ID_MODEL(0x111d76ea, "92HD66B3X5", MODEL_STAC92HD83XXX), 5218 + HDA_CODEC_ID_MODEL(0x111d76eb, "92HD66C1X5", MODEL_STAC92HD83XXX), 5219 + HDA_CODEC_ID_MODEL(0x111d76ec, "92HD66C2X5", MODEL_STAC92HD83XXX), 5220 + HDA_CODEC_ID_MODEL(0x111d76ed, "92HD66C3X5", MODEL_STAC92HD83XXX), 5221 + HDA_CODEC_ID_MODEL(0x111d76ee, "92HD66B1X3", MODEL_STAC92HD83XXX), 5222 + HDA_CODEC_ID_MODEL(0x111d76ef, "92HD66B2X3", MODEL_STAC92HD83XXX), 5223 + HDA_CODEC_ID_MODEL(0x111d76f0, "92HD66B3X3", MODEL_STAC92HD83XXX), 5224 + HDA_CODEC_ID_MODEL(0x111d76f1, "92HD66C1X3", MODEL_STAC92HD83XXX), 5225 + HDA_CODEC_ID_MODEL(0x111d76f2, "92HD66C2X3", MODEL_STAC92HD83XXX), 5226 + HDA_CODEC_ID_MODEL(0x111d76f3, "92HD66C3/65", MODEL_STAC92HD83XXX), 5080 5227 {} /* terminator */ 5081 5228 }; 5082 5229 MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_sigmatel); ··· 5163 5156 5164 5157 static struct hda_codec_driver sigmatel_driver = { 5165 5158 .id = snd_hda_id_sigmatel, 5159 + .ops = &stac_codec_ops, 5166 5160 }; 5167 5161 5168 5162 module_hda_codec_driver(sigmatel_driver);