diff options
author | Takashi Iwai <tiwai@suse.de> | 2008-11-27 09:47:11 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-11-27 09:47:11 -0500 |
commit | 1289e9e8b42f973f2ab39e5f4f2239ff826c27e9 (patch) | |
tree | f0462154211f734f278e981a5d5ae1ec66f1fb03 /sound/pci/hda/patch_analog.c | |
parent | 30d72e9f614e7bd76e28d4d92bd54d90a96905bb (diff) |
ALSA: hda - Modularize HD-audio driver
Split the monolithc HD-audio driver into several pieces:
- snd-hda-intel HD-audio PCI controller driver; loaded via udev
- snd-hda-codec HD-audio codec bus driver
- snd-hda-codec-* Specific HD-audio codec drivers
When built as modules, snd-hda-codec (that is invoked by snd-hda-intel)
looks up the codec vendor ID and loads the corresponding codec module
automatically via request_module().
When built in a kernel, each codec drivers are statically hooked up
before probing the PCI.
This patch adds appropriate EXPORT_SYMBOL_GPL()'s and the module
information for each driver, and driver-linking codes between
codec-bus and codec drivers.
TODO:
- Avoid EXPORT_SYMBOL*() when built-in kernel
- Restore __devinit appropriately depending on the condition
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/patch_analog.c')
-rw-r--r-- | sound/pci/hda/patch_analog.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 0cc6be12b8b7..c1918a1a6df9 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <sound/core.h> | 27 | #include <sound/core.h> |
28 | #include "hda_codec.h" | 28 | #include "hda_codec.h" |
29 | #include "hda_local.h" | 29 | #include "hda_local.h" |
30 | #include "hda_patch.h" | ||
31 | 30 | ||
32 | struct ad198x_spec { | 31 | struct ad198x_spec { |
33 | struct snd_kcontrol_new *mixers[5]; | 32 | struct snd_kcontrol_new *mixers[5]; |
@@ -4308,7 +4307,7 @@ static int patch_ad1882(struct hda_codec *codec) | |||
4308 | /* | 4307 | /* |
4309 | * patch entries | 4308 | * patch entries |
4310 | */ | 4309 | */ |
4311 | struct hda_codec_preset snd_hda_preset_analog[] = { | 4310 | static struct hda_codec_preset snd_hda_preset_analog[] = { |
4312 | { .id = 0x11d4184a, .name = "AD1884A", .patch = patch_ad1884a }, | 4311 | { .id = 0x11d4184a, .name = "AD1884A", .patch = patch_ad1884a }, |
4313 | { .id = 0x11d41882, .name = "AD1882", .patch = patch_ad1882 }, | 4312 | { .id = 0x11d41882, .name = "AD1882", .patch = patch_ad1882 }, |
4314 | { .id = 0x11d41883, .name = "AD1883", .patch = patch_ad1884a }, | 4313 | { .id = 0x11d41883, .name = "AD1883", .patch = patch_ad1884a }, |
@@ -4326,3 +4325,26 @@ struct hda_codec_preset snd_hda_preset_analog[] = { | |||
4326 | { .id = 0x11d4989b, .name = "AD1989B", .patch = patch_ad1988 }, | 4325 | { .id = 0x11d4989b, .name = "AD1989B", .patch = patch_ad1988 }, |
4327 | {} /* terminator */ | 4326 | {} /* terminator */ |
4328 | }; | 4327 | }; |
4328 | |||
4329 | MODULE_ALIAS("snd-hda-codec-id:11d4*"); | ||
4330 | |||
4331 | MODULE_LICENSE("GPL"); | ||
4332 | MODULE_DESCRIPTION("Analog Devices HD-audio codec"); | ||
4333 | |||
4334 | static struct hda_codec_preset_list analog_list = { | ||
4335 | .preset = snd_hda_preset_analog, | ||
4336 | .owner = THIS_MODULE, | ||
4337 | }; | ||
4338 | |||
4339 | static int __init patch_analog_init(void) | ||
4340 | { | ||
4341 | return snd_hda_add_codec_preset(&analog_list); | ||
4342 | } | ||
4343 | |||
4344 | static void __exit patch_analog_exit(void) | ||
4345 | { | ||
4346 | snd_hda_delete_codec_preset(&analog_list); | ||
4347 | } | ||
4348 | |||
4349 | module_init(patch_analog_init) | ||
4350 | module_exit(patch_analog_exit) | ||