diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2008-10-23 09:47:56 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-10-23 12:43:42 -0400 |
commit | 888dcb7cb26fb85dfe3486d28a2431d69d3e8148 (patch) | |
tree | aad6f0dba4bdb63bc72280ed51a79f7dea284278 /sound/aoa/core/alsa.c | |
parent | 72474be62d6ec2e0337ff01ecbd737f9c5c242c7 (diff) |
ALSA: aoa: clean up file names
This cleans up the apple onboard audio driver filenames.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/aoa/core/alsa.c')
-rw-r--r-- | sound/aoa/core/alsa.c | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/sound/aoa/core/alsa.c b/sound/aoa/core/alsa.c new file mode 100644 index 000000000000..617850463582 --- /dev/null +++ b/sound/aoa/core/alsa.c | |||
@@ -0,0 +1,99 @@ | |||
1 | /* | ||
2 | * Apple Onboard Audio Alsa helpers | ||
3 | * | ||
4 | * Copyright 2006 Johannes Berg <johannes@sipsolutions.net> | ||
5 | * | ||
6 | * GPL v2, can be found in COPYING. | ||
7 | */ | ||
8 | #include <linux/module.h> | ||
9 | #include "alsa.h" | ||
10 | |||
11 | static int index = -1; | ||
12 | module_param(index, int, 0444); | ||
13 | MODULE_PARM_DESC(index, "index for AOA sound card."); | ||
14 | |||
15 | static struct aoa_card *aoa_card; | ||
16 | |||
17 | int aoa_alsa_init(char *name, struct module *mod, struct device *dev) | ||
18 | { | ||
19 | struct snd_card *alsa_card; | ||
20 | int err; | ||
21 | |||
22 | if (aoa_card) | ||
23 | /* cannot be EEXIST due to usage in aoa_fabric_register */ | ||
24 | return -EBUSY; | ||
25 | |||
26 | alsa_card = snd_card_new(index, name, mod, sizeof(struct aoa_card)); | ||
27 | if (!alsa_card) | ||
28 | return -ENOMEM; | ||
29 | aoa_card = alsa_card->private_data; | ||
30 | aoa_card->alsa_card = alsa_card; | ||
31 | alsa_card->dev = dev; | ||
32 | strlcpy(alsa_card->driver, "AppleOnbdAudio", sizeof(alsa_card->driver)); | ||
33 | strlcpy(alsa_card->shortname, name, sizeof(alsa_card->shortname)); | ||
34 | strlcpy(alsa_card->longname, name, sizeof(alsa_card->longname)); | ||
35 | strlcpy(alsa_card->mixername, name, sizeof(alsa_card->mixername)); | ||
36 | err = snd_card_register(aoa_card->alsa_card); | ||
37 | if (err < 0) { | ||
38 | printk(KERN_ERR "snd-aoa: couldn't register alsa card\n"); | ||
39 | snd_card_free(aoa_card->alsa_card); | ||
40 | aoa_card = NULL; | ||
41 | return err; | ||
42 | } | ||
43 | return 0; | ||
44 | } | ||
45 | |||
46 | struct snd_card *aoa_get_card(void) | ||
47 | { | ||
48 | if (aoa_card) | ||
49 | return aoa_card->alsa_card; | ||
50 | return NULL; | ||
51 | } | ||
52 | EXPORT_SYMBOL_GPL(aoa_get_card); | ||
53 | |||
54 | void aoa_alsa_cleanup(void) | ||
55 | { | ||
56 | if (aoa_card) { | ||
57 | snd_card_free(aoa_card->alsa_card); | ||
58 | aoa_card = NULL; | ||
59 | } | ||
60 | } | ||
61 | |||
62 | int aoa_snd_device_new(snd_device_type_t type, | ||
63 | void * device_data, struct snd_device_ops * ops) | ||
64 | { | ||
65 | struct snd_card *card = aoa_get_card(); | ||
66 | int err; | ||
67 | |||
68 | if (!card) return -ENOMEM; | ||
69 | |||
70 | err = snd_device_new(card, type, device_data, ops); | ||
71 | if (err) { | ||
72 | printk(KERN_ERR "snd-aoa: failed to create snd device (%d)\n", err); | ||
73 | return err; | ||
74 | } | ||
75 | err = snd_device_register(card, device_data); | ||
76 | if (err) { | ||
77 | printk(KERN_ERR "snd-aoa: failed to register " | ||
78 | "snd device (%d)\n", err); | ||
79 | printk(KERN_ERR "snd-aoa: have you forgotten the " | ||
80 | "dev_register callback?\n"); | ||
81 | snd_device_free(card, device_data); | ||
82 | } | ||
83 | return err; | ||
84 | } | ||
85 | EXPORT_SYMBOL_GPL(aoa_snd_device_new); | ||
86 | |||
87 | int aoa_snd_ctl_add(struct snd_kcontrol* control) | ||
88 | { | ||
89 | int err; | ||
90 | |||
91 | if (!aoa_card) return -ENODEV; | ||
92 | |||
93 | err = snd_ctl_add(aoa_card->alsa_card, control); | ||
94 | if (err) | ||
95 | printk(KERN_ERR "snd-aoa: failed to add alsa control (%d)\n", | ||
96 | err); | ||
97 | return err; | ||
98 | } | ||
99 | EXPORT_SYMBOL_GPL(aoa_snd_ctl_add); | ||