Blame view
sound/aoa/core/alsa.c
2.37 KB
f3d9478b2 [ALSA] snd-aoa: a... |
1 2 3 4 5 6 7 8 |
/* * Apple Onboard Audio Alsa helpers * * Copyright 2006 Johannes Berg <johannes@sipsolutions.net> * * GPL v2, can be found in COPYING. */ #include <linux/module.h> |
888dcb7cb ALSA: aoa: clean ... |
9 |
#include "alsa.h" |
f3d9478b2 [ALSA] snd-aoa: a... |
10 11 12 13 14 15 |
static int index = -1; module_param(index, int, 0444); MODULE_PARM_DESC(index, "index for AOA sound card."); static struct aoa_card *aoa_card; |
61e77107f [ALSA] create dev... |
16 |
int aoa_alsa_init(char *name, struct module *mod, struct device *dev) |
f3d9478b2 [ALSA] snd-aoa: a... |
17 18 19 20 21 22 23 |
{ struct snd_card *alsa_card; int err; if (aoa_card) /* cannot be EEXIST due to usage in aoa_fabric_register */ return -EBUSY; |
bd7dd77c2 ALSA: Convert to ... |
24 25 26 27 |
err = snd_card_create(index, name, mod, sizeof(struct aoa_card), &alsa_card); if (err < 0) return err; |
f3d9478b2 [ALSA] snd-aoa: a... |
28 29 |
aoa_card = alsa_card->private_data; aoa_card->alsa_card = alsa_card; |
61e77107f [ALSA] create dev... |
30 |
alsa_card->dev = dev; |
f3d9478b2 [ALSA] snd-aoa: a... |
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
strlcpy(alsa_card->driver, "AppleOnbdAudio", sizeof(alsa_card->driver)); strlcpy(alsa_card->shortname, name, sizeof(alsa_card->shortname)); strlcpy(alsa_card->longname, name, sizeof(alsa_card->longname)); strlcpy(alsa_card->mixername, name, sizeof(alsa_card->mixername)); err = snd_card_register(aoa_card->alsa_card); if (err < 0) { printk(KERN_ERR "snd-aoa: couldn't register alsa card "); snd_card_free(aoa_card->alsa_card); aoa_card = NULL; return err; } return 0; } struct snd_card *aoa_get_card(void) { if (aoa_card) return aoa_card->alsa_card; return NULL; } EXPORT_SYMBOL_GPL(aoa_get_card); void aoa_alsa_cleanup(void) { if (aoa_card) { snd_card_free(aoa_card->alsa_card); aoa_card = NULL; } } int aoa_snd_device_new(snd_device_type_t type, |
73e85fe84 [ALSA] aoa: set d... |
63 |
void * device_data, struct snd_device_ops * ops) |
f3d9478b2 [ALSA] snd-aoa: a... |
64 65 66 |
{ struct snd_card *card = aoa_get_card(); int err; |
888dcb7cb ALSA: aoa: clean ... |
67 |
|
f3d9478b2 [ALSA] snd-aoa: a... |
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
if (!card) return -ENOMEM; err = snd_device_new(card, type, device_data, ops); if (err) { printk(KERN_ERR "snd-aoa: failed to create snd device (%d) ", err); return err; } err = snd_device_register(card, device_data); if (err) { printk(KERN_ERR "snd-aoa: failed to register " "snd device (%d) ", err); printk(KERN_ERR "snd-aoa: have you forgotten the " "dev_register callback? "); snd_device_free(card, device_data); } return err; } EXPORT_SYMBOL_GPL(aoa_snd_device_new); int aoa_snd_ctl_add(struct snd_kcontrol* control) { int err; if (!aoa_card) return -ENODEV; err = snd_ctl_add(aoa_card->alsa_card, control); if (err) printk(KERN_ERR "snd-aoa: failed to add alsa control (%d) ", err); return err; } EXPORT_SYMBOL_GPL(aoa_snd_ctl_add); |