aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2013-12-18 01:35:11 -0500
committerTakashi Iwai <tiwai@suse.de>2013-12-19 08:36:11 -0500
commit595fe1b702c3fa739ab395ab0471054875f20b90 (patch)
treee4eb0b979bfe2c569320d1dcfe983354e516e0a9 /sound/pci/hda
parentda4a7a3926d09c13ae052ede67feb7285e01e3f5 (diff)
ALSA: hda - Make CONFIG_SND_HDA_CODEC_* tristate
So far, CONFIG_SND_HDA_CODEC_* kconfigs have been booleans due to historical reasons. The major reason was that the automatic codec driver probing wouldn't work if user sets a codec driver as a module while the controller driver as a built-in. And, another reason was to avoid exporting symbols of the helper codes when all drivers are built in. But, this sort of "kindness" rather confuses people in the end, especially makes the config refinement via localmodconfig unhappy. Also, a codec module would still work if you re-bind the controller driver via sysfs (although it's no automatic loading), so there might be a slight use case. That said, better to let people fallen into a pitfall than being too smart and restrict something. Let's make things straightforward: now all CONFIG_SND_HDA_CODEC_* become tristate, and all symbols exported unconditionally. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda')
-rw-r--r--sound/pci/hda/Kconfig115
-rw-r--r--sound/pci/hda/Makefile50
-rw-r--r--sound/pci/hda/hda_codec.h13
3 files changed, 37 insertions, 141 deletions
diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig
index 4cdd9ded4563..b0c0481c3339 100644
--- a/sound/pci/hda/Kconfig
+++ b/sound/pci/hda/Kconfig
@@ -87,126 +87,72 @@ config SND_HDA_PATCH_LOADER
87 This option turns on hwdep and reconfig features automatically. 87 This option turns on hwdep and reconfig features automatically.
88 88
89config SND_HDA_CODEC_REALTEK 89config SND_HDA_CODEC_REALTEK
90 bool "Build Realtek HD-audio codec support" 90 tristate "Build Realtek HD-audio codec support"
91 default y
92 select SND_HDA_GENERIC 91 select SND_HDA_GENERIC
93 help 92 help
94 Say Y here to include Realtek HD-audio codec support in 93 Say Y or M here to include Realtek HD-audio codec support in
95 snd-hda-intel driver, such as ALC880. 94 snd-hda-intel driver, such as ALC880.
96 95
97 When the HD-audio driver is built as a module, the codec
98 support code is also built as another module,
99 snd-hda-codec-realtek.
100 This module is automatically loaded at probing.
101
102config SND_HDA_CODEC_ANALOG 96config SND_HDA_CODEC_ANALOG
103 bool "Build Analog Device HD-audio codec support" 97 tristate "Build Analog Device HD-audio codec support"
104 default y
105 select SND_HDA_GENERIC 98 select SND_HDA_GENERIC
106 help 99 help
107 Say Y here to include Analog Device HD-audio codec support in 100 Say Y or M here to include Analog Device HD-audio codec support in
108 snd-hda-intel driver, such as AD1986A. 101 snd-hda-intel driver, such as AD1986A.
109 102
110 When the HD-audio driver is built as a module, the codec
111 support code is also built as another module,
112 snd-hda-codec-analog.
113 This module is automatically loaded at probing.
114
115config SND_HDA_CODEC_SIGMATEL 103config SND_HDA_CODEC_SIGMATEL
116 bool "Build IDT/Sigmatel HD-audio codec support" 104 tristate "Build IDT/Sigmatel HD-audio codec support"
117 default y
118 select SND_HDA_GENERIC 105 select SND_HDA_GENERIC
119 help 106 help
120 Say Y here to include IDT (Sigmatel) HD-audio codec support in 107 Say Y or M here to include IDT (Sigmatel) HD-audio codec support in
121 snd-hda-intel driver, such as STAC9200. 108 snd-hda-intel driver, such as STAC9200.
122 109
123 When the HD-audio driver is built as a module, the codec
124 support code is also built as another module,
125 snd-hda-codec-idt.
126 This module is automatically loaded at probing.
127
128config SND_HDA_CODEC_VIA 110config SND_HDA_CODEC_VIA
129 bool "Build VIA HD-audio codec support" 111 tristate "Build VIA HD-audio codec support"
130 default y
131 select SND_HDA_GENERIC 112 select SND_HDA_GENERIC
132 help 113 help
133 Say Y here to include VIA HD-audio codec support in 114 Say Y or M here to include VIA HD-audio codec support in
134 snd-hda-intel driver, such as VT1708. 115 snd-hda-intel driver, such as VT1708.
135 116
136 When the HD-audio driver is built as a module, the codec
137 support code is also built as another module,
138 snd-hda-codec-via.
139 This module is automatically loaded at probing.
140
141config SND_HDA_CODEC_HDMI 117config SND_HDA_CODEC_HDMI
142 bool "Build HDMI/DisplayPort HD-audio codec support" 118 tristate "Build HDMI/DisplayPort HD-audio codec support"
143 default y
144 help 119 help
145 Say Y here to include HDMI and DisplayPort HD-audio codec 120 Say Y or M here to include HDMI and DisplayPort HD-audio codec
146 support in snd-hda-intel driver. This includes all AMD/ATI, 121 support in snd-hda-intel driver. This includes all AMD/ATI,
147 Intel and Nvidia HDMI/DisplayPort codecs. 122 Intel and Nvidia HDMI/DisplayPort codecs.
148 123
149 When the HD-audio driver is built as a module, the codec
150 support code is also built as another module,
151 snd-hda-codec-hdmi.
152 This module is automatically loaded at probing.
153
154config SND_HDA_I915 124config SND_HDA_I915
155 bool 125 bool
156 default y 126 default y
157 depends on DRM_I915 127 depends on DRM_I915
158 128
159config SND_HDA_CODEC_CIRRUS 129config SND_HDA_CODEC_CIRRUS
160 bool "Build Cirrus Logic codec support" 130 tristate "Build Cirrus Logic codec support"
161 default y
162 select SND_HDA_GENERIC 131 select SND_HDA_GENERIC
163 help 132 help
164 Say Y here to include Cirrus Logic codec support in 133 Say Y or M here to include Cirrus Logic codec support in
165 snd-hda-intel driver, such as CS4206. 134 snd-hda-intel driver, such as CS4206.
166 135
167 When the HD-audio driver is built as a module, the codec
168 support code is also built as another module,
169 snd-hda-codec-cirrus.
170 This module is automatically loaded at probing.
171
172config SND_HDA_CODEC_CONEXANT 136config SND_HDA_CODEC_CONEXANT
173 bool "Build Conexant HD-audio codec support" 137 tristate "Build Conexant HD-audio codec support"
174 default y
175 select SND_HDA_GENERIC 138 select SND_HDA_GENERIC
176 help 139 help
177 Say Y here to include Conexant HD-audio codec support in 140 Say Y or M here to include Conexant HD-audio codec support in
178 snd-hda-intel driver, such as CX20549. 141 snd-hda-intel driver, such as CX20549.
179 142
180 When the HD-audio driver is built as a module, the codec
181 support code is also built as another module,
182 snd-hda-codec-conexant.
183 This module is automatically loaded at probing.
184
185config SND_HDA_CODEC_CA0110 143config SND_HDA_CODEC_CA0110
186 bool "Build Creative CA0110-IBG codec support" 144 tristate "Build Creative CA0110-IBG codec support"
187 default y
188 select SND_HDA_GENERIC 145 select SND_HDA_GENERIC
189 help 146 help
190 Say Y here to include Creative CA0110-IBG codec support in 147 Say Y or M here to include Creative CA0110-IBG codec support in
191 snd-hda-intel driver, found on some Creative X-Fi cards. 148 snd-hda-intel driver, found on some Creative X-Fi cards.
192 149
193 When the HD-audio driver is built as a module, the codec
194 support code is also built as another module,
195 snd-hda-codec-ca0110.
196 This module is automatically loaded at probing.
197
198config SND_HDA_CODEC_CA0132 150config SND_HDA_CODEC_CA0132
199 bool "Build Creative CA0132 codec support" 151 tristate "Build Creative CA0132 codec support"
200 default y
201 help 152 help
202 Say Y here to include Creative CA0132 codec support in 153 Say Y or M here to include Creative CA0132 codec support in
203 snd-hda-intel driver. 154 snd-hda-intel driver.
204 155
205 When the HD-audio driver is built as a module, the codec
206 support code is also built as another module,
207 snd-hda-codec-ca0132.
208 This module is automatically loaded at probing.
209
210config SND_HDA_CODEC_CA0132_DSP 156config SND_HDA_CODEC_CA0132_DSP
211 bool "Support new DSP code for CA0132 codec" 157 bool "Support new DSP code for CA0132 codec"
212 depends on SND_HDA_CODEC_CA0132 158 depends on SND_HDA_CODEC_CA0132
@@ -220,35 +166,22 @@ config SND_HDA_CODEC_CA0132_DSP
220 (ctefx.bin). 166 (ctefx.bin).
221 167
222config SND_HDA_CODEC_CMEDIA 168config SND_HDA_CODEC_CMEDIA
223 bool "Build C-Media HD-audio codec support" 169 tristate "Build C-Media HD-audio codec support"
224 default y
225 select SND_HDA_GENERIC 170 select SND_HDA_GENERIC
226 help 171 help
227 Say Y here to include C-Media HD-audio codec support in 172 Say Y or M here to include C-Media HD-audio codec support in
228 snd-hda-intel driver, such as CMI9880. 173 snd-hda-intel driver, such as CMI9880.
229 174
230 When the HD-audio driver is built as a module, the codec
231 support code is also built as another module,
232 snd-hda-codec-cmedia.
233 This module is automatically loaded at probing.
234
235config SND_HDA_CODEC_SI3054 175config SND_HDA_CODEC_SI3054
236 bool "Build Silicon Labs 3054 HD-modem codec support" 176 tristate "Build Silicon Labs 3054 HD-modem codec support"
237 default y
238 help 177 help
239 Say Y here to include Silicon Labs 3054 HD-modem codec 178 Say Y or M here to include Silicon Labs 3054 HD-modem codec
240 (and compatibles) support in snd-hda-intel driver. 179 (and compatibles) support in snd-hda-intel driver.
241 180
242 When the HD-audio driver is built as a module, the codec
243 support code is also built as another module,
244 snd-hda-codec-si3054.
245 This module is automatically loaded at probing.
246
247config SND_HDA_GENERIC 181config SND_HDA_GENERIC
248 bool "Enable generic HD-audio codec parser" 182 tristate "Enable generic HD-audio codec parser"
249 default y
250 help 183 help
251 Say Y here to enable the generic HD-audio codec parser 184 Say Y or M here to enable the generic HD-audio codec parser
252 in snd-hda-intel driver. 185 in snd-hda-intel driver.
253 186
254config SND_HDA_POWER_SAVE_DEFAULT 187config SND_HDA_POWER_SAVE_DEFAULT
diff --git a/sound/pci/hda/Makefile b/sound/pci/hda/Makefile
index 5a40c652df41..1fcb118e480a 100644
--- a/sound/pci/hda/Makefile
+++ b/sound/pci/hda/Makefile
@@ -27,43 +27,19 @@ snd-hda-codec-hdmi-objs := patch_hdmi.o hda_eld.o
27# common driver 27# common driver
28obj-$(CONFIG_SND_HDA_INTEL) := snd-hda-codec.o 28obj-$(CONFIG_SND_HDA_INTEL) := snd-hda-codec.o
29 29
30# codec drivers (note: CONFIG_SND_HDA_CODEC_XXX are booleans) 30# codec drivers
31ifdef CONFIG_SND_HDA_GENERIC 31obj-$(CONFIG_SND_HDA_GENERIC) += snd-hda-codec-generic.o
32obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-generic.o 32obj-$(CONFIG_SND_HDA_CODEC_REALTEK) += snd-hda-codec-realtek.o
33endif 33obj-$(CONFIG_SND_HDA_CODEC_CMEDIA) += snd-hda-codec-cmedia.o
34ifdef CONFIG_SND_HDA_CODEC_REALTEK 34obj-$(CONFIG_SND_HDA_CODEC_ANALOG) += snd-hda-codec-analog.o
35obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-realtek.o 35obj-$(CONFIG_SND_HDA_CODEC_SIGMATEL) += snd-hda-codec-idt.o
36endif 36obj-$(CONFIG_SND_HDA_CODEC_SI3054) += snd-hda-codec-si3054.o
37ifdef CONFIG_SND_HDA_CODEC_CMEDIA 37obj-$(CONFIG_SND_HDA_CODEC_CIRRUS) += snd-hda-codec-cirrus.o
38obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-cmedia.o 38obj-$(CONFIG_SND_HDA_CODEC_CA0110) += snd-hda-codec-ca0110.o
39endif 39obj-$(CONFIG_SND_HDA_CODEC_CA0132) += snd-hda-codec-ca0132.o
40ifdef CONFIG_SND_HDA_CODEC_ANALOG 40obj-$(CONFIG_SND_HDA_CODEC_CONEXANT) += snd-hda-codec-conexant.o
41obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-analog.o 41obj-$(CONFIG_SND_HDA_CODEC_VIA) += snd-hda-codec-via.o
42endif 42obj-$(CONFIG_SND_HDA_CODEC_HDMI) += snd-hda-codec-hdmi.o
43ifdef CONFIG_SND_HDA_CODEC_SIGMATEL
44obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-idt.o
45endif
46ifdef CONFIG_SND_HDA_CODEC_SI3054
47obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-si3054.o
48endif
49ifdef CONFIG_SND_HDA_CODEC_CIRRUS
50obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-cirrus.o
51endif
52ifdef CONFIG_SND_HDA_CODEC_CA0110
53obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-ca0110.o
54endif
55ifdef CONFIG_SND_HDA_CODEC_CA0132
56obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-ca0132.o
57endif
58ifdef CONFIG_SND_HDA_CODEC_CONEXANT
59obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-conexant.o
60endif
61ifdef CONFIG_SND_HDA_CODEC_VIA
62obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-via.o
63endif
64ifdef CONFIG_SND_HDA_CODEC_HDMI
65obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-hdmi.o
66endif
67 43
68# this must be the last entry after codec drivers; 44# this must be the last entry after codec drivers;
69# otherwise the codec patches won't be hooked before the PCI probe 45# otherwise the codec patches won't be hooked before the PCI probe
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
index 3c484c27048b..2b5d19e48a27 100644
--- a/sound/pci/hda/hda_codec.h
+++ b/sound/pci/hda/hda_codec.h
@@ -681,19 +681,6 @@ snd_hda_codec_load_dsp_cleanup(struct hda_codec *codec,
681 struct snd_dma_buffer *dmab) {} 681 struct snd_dma_buffer *dmab) {}
682#endif 682#endif
683 683
684/*
685 * Codec modularization
686 */
687
688/* Export symbols only for communication with codec drivers;
689 * When built in kernel, all HD-audio drivers are supposed to be statically
690 * linked to the kernel. Thus, the symbols don't have to (or shouldn't) be
691 * exported unless it's built as a module.
692 */
693#ifdef MODULE
694#define EXPORT_SYMBOL_HDA(sym) EXPORT_SYMBOL_GPL(sym) 684#define EXPORT_SYMBOL_HDA(sym) EXPORT_SYMBOL_GPL(sym)
695#else
696#define EXPORT_SYMBOL_HDA(sym)
697#endif
698 685
699#endif /* __SOUND_HDA_CODEC_H */ 686#endif /* __SOUND_HDA_CODEC_H */