aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_analog.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-11-27 09:47:11 -0500
committerTakashi Iwai <tiwai@suse.de>2008-11-27 09:47:11 -0500
commit1289e9e8b42f973f2ab39e5f4f2239ff826c27e9 (patch)
treef0462154211f734f278e981a5d5ae1ec66f1fb03 /sound/pci/hda/patch_analog.c
parent30d72e9f614e7bd76e28d4d92bd54d90a96905bb (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.c26
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
32struct ad198x_spec { 31struct 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 */
4311struct hda_codec_preset snd_hda_preset_analog[] = { 4310static 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
4329MODULE_ALIAS("snd-hda-codec-id:11d4*");
4330
4331MODULE_LICENSE("GPL");
4332MODULE_DESCRIPTION("Analog Devices HD-audio codec");
4333
4334static struct hda_codec_preset_list analog_list = {
4335 .preset = snd_hda_preset_analog,
4336 .owner = THIS_MODULE,
4337};
4338
4339static int __init patch_analog_init(void)
4340{
4341 return snd_hda_add_codec_preset(&analog_list);
4342}
4343
4344static void __exit patch_analog_exit(void)
4345{
4346 snd_hda_delete_codec_preset(&analog_list);
4347}
4348
4349module_init(patch_analog_init)
4350module_exit(patch_analog_exit)