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

TOMOYO Linux Cross Reference
Linux/sound/core/misc.c

Version: ~ [ linux-5.16-rc3 ] ~ [ linux-5.15.5 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.82 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.162 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.218 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.256 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.291 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.293 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.18.140 ] ~ [ linux-3.16.85 ] ~ [ linux-3.14.79 ] ~ [ linux-3.12.74 ] ~ [ 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.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  *  Misc and compatibility things
  3  *  Copyright (c) by Jaroslav Kysela <perex@perex.cz>
  4  *
  5  *
  6  *   This program is free software; you can redistribute it and/or modify
  7  *   it under the terms of the GNU General Public License as published by
  8  *   the Free Software Foundation; either version 2 of the License, or
  9  *   (at your option) any later version.
 10  *
 11  *   This program is distributed in the hope that it will be useful,
 12  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 14  *   GNU General Public License for more details.
 15  *
 16  *   You should have received a copy of the GNU General Public License
 17  *   along with this program; if not, write to the Free Software
 18  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 19  *
 20  */
 21 
 22 #include <linux/init.h>
 23 #include <linux/time.h>
 24 #include <linux/ioport.h>
 25 #include <sound/core.h>
 26 
 27 #ifdef CONFIG_SND_DEBUG
 28 
 29 #ifdef CONFIG_SND_DEBUG_VERBOSE
 30 #define DEFAULT_DEBUG_LEVEL     2
 31 #else
 32 #define DEFAULT_DEBUG_LEVEL     1
 33 #endif
 34 
 35 static int debug = DEFAULT_DEBUG_LEVEL;
 36 module_param(debug, int, 0644);
 37 MODULE_PARM_DESC(debug, "Debug level (0 = disable)");
 38 
 39 #endif /* CONFIG_SND_DEBUG */
 40 
 41 void release_and_free_resource(struct resource *res)
 42 {
 43         if (res) {
 44                 release_resource(res);
 45                 kfree(res);
 46         }
 47 }
 48 
 49 EXPORT_SYMBOL(release_and_free_resource);
 50 
 51 #ifdef CONFIG_SND_VERBOSE_PRINTK
 52 /* strip the leading path if the given path is absolute */
 53 static const char *sanity_file_name(const char *path)
 54 {
 55         if (*path == '/')
 56                 return strrchr(path, '/') + 1;
 57         else
 58                 return path;
 59 }
 60 
 61 /* print file and line with a certain printk prefix */
 62 static int print_snd_pfx(unsigned int level, const char *path, int line,
 63                          const char *format)
 64 {
 65         const char *file = sanity_file_name(path);
 66         char tmp[] = "<0>";
 67         const char *pfx = level ? KERN_DEBUG : KERN_DEFAULT;
 68         int ret = 0;
 69 
 70         if (format[0] == '<' && format[2] == '>') {
 71                 tmp[1] = format[1];
 72                 pfx = tmp;
 73                 ret = 1;
 74         }
 75         printk("%sALSA %s:%d: ", pfx, file, line);
 76         return ret;
 77 }
 78 #else
 79 #define print_snd_pfx(level, path, line, format)        0
 80 #endif
 81 
 82 #if defined(CONFIG_SND_DEBUG) || defined(CONFIG_SND_VERBOSE_PRINTK)
 83 void __snd_printk(unsigned int level, const char *path, int line,
 84                   const char *format, ...)
 85 {
 86         va_list args;
 87         
 88 #ifdef CONFIG_SND_DEBUG 
 89         if (debug < level)
 90                 return;
 91 #endif
 92         va_start(args, format);
 93         if (print_snd_pfx(level, path, line, format))
 94                 format += 3; /* skip the printk level-prefix */
 95         vprintk(format, args);
 96         va_end(args);
 97 }
 98 EXPORT_SYMBOL_GPL(__snd_printk);
 99 #endif
100 
101 #ifdef CONFIG_PCI
102 #include <linux/pci.h>
103 /**
104  * snd_pci_quirk_lookup - look up a PCI SSID quirk list
105  * @pci: pci_dev handle
106  * @list: quirk list, terminated by a null entry
107  *
108  * Look through the given quirk list and finds a matching entry
109  * with the same PCI SSID.  When subdevice is 0, all subdevice
110  * values may match.
111  *
112  * Returns the matched entry pointer, or NULL if nothing matched.
113  */
114 const struct snd_pci_quirk *
115 snd_pci_quirk_lookup(struct pci_dev *pci, const struct snd_pci_quirk *list)
116 {
117         const struct snd_pci_quirk *q;
118 
119         for (q = list; q->subvendor; q++) {
120                 if (q->subvendor != pci->subsystem_vendor)
121                         continue;
122                 if (!q->subdevice ||
123                     (pci->subsystem_device & q->subdevice_mask) == q->subdevice)
124                         return q;
125         }
126         return NULL;
127 }
128 EXPORT_SYMBOL(snd_pci_quirk_lookup);
129 #endif
130 

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

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | 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.

osdn.jp