~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/aoa/core/alsa.c

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php