source: GPL/trunk/alsa-kernel/include/sound/initval.h

Last change on this file was 679, checked in by David Azarewicz, 5 years ago

Merge changes from Paul's uniaud32next branch.

File size: 6.0 KB
Line 
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2#ifndef __SOUND_INITVAL_H
3#define __SOUND_INITVAL_H
4
5/*
6 * Init values for soundcard modules
7 * Copyright (c) by Jaroslav Kysela <perex@perex.cz>
8 */
9
10#ifndef MODULE_GENERIC_STRING
11#ifdef MODULE
12#define MODULE_GENERIC_STRING(name, string) \
13static const char __module_generic_string_##name [] \
14 __attribute__ ((section(".modstring"))) = #name "=" string;
15#else
16#define MODULE_GENERIC_STRING(name, string)
17#endif
18#endif
19
20#ifdef TARGET_OS2
21#define MODULE_CLASSES(val)
22#define MODULE_DEVICES(val)
23#define MODULE_PARM_SYNTAX(id, val)
24#else
25#define MODULE_CLASSES(val) MODULE_GENERIC_STRING(info_classes, val)
26#define MODULE_DEVICES(val) MODULE_GENERIC_STRING(info_devices, val)
27#define MODULE_PARM_SYNTAX(id, val) MODULE_GENERIC_STRING(info_parm_##id, val)
28
29#define SNDRV_MODULE_TYPE_int "i"
30#define SNDRV_MODULE_TYPE_bool "i"
31#define SNDRV_MODULE_TYPE_uint "i"
32#define SNDRV_MODULE_TYPE_charp "s"
33#define SNDRV_MODULE_TYPE_long "l"
34#define module_param_array(name, type, nump, perm) \
35 MODULE_PARM(name, "1-" __MODULE_STRING(SNDRV_CARDS) SNDRV_MODULE_TYPE_##type)
36#define module_param(name, type, perm) \
37 MODULE_PARM(name, SNDRV_MODULE_TYPE_##type)
38
39#endif
40
41#define SNDRV_AUTO_PORT 0xffff
42#define SNDRV_AUTO_IRQ 0xffff
43#define SNDRV_AUTO_DMA 0xffff
44#define SNDRV_AUTO_DMA_SIZE (0x7fffffff)
45
46#define SNDRV_DEFAULT_IDX1 (-1)
47#define SNDRV_DEFAULT_STR1 NULL
48#define SNDRV_DEFAULT_ENABLE1 1
49#define SNDRV_DEFAULT_PORT1 SNDRV_AUTO_PORT
50#define SNDRV_DEFAULT_IRQ1 SNDRV_AUTO_IRQ
51#define SNDRV_DEFAULT_DMA1 SNDRV_AUTO_DMA
52#define SNDRV_DEFAULT_DMA_SIZE1 SNDRV_AUTO_DMA_SIZE
53#define SNDRV_DEFAULT_PTR1 SNDRV_DEFAULT_STR1
54
55#ifdef TARGET_OS2
56#define REPEAT_SNDRV(a) a,a,a,a,a,a,a,a
57#define SNDRV_DEFAULT_IDX { REPEAT_SNDRV(-1) }
58#define SNDRV_DEFAULT_STR { REPEAT_SNDRV(NULL) }
59#define SNDRV_DEFAULT_ENABLE { 1,1,1,1,1,1,1,1 }
60#define SNDRV_DEFAULT_ENABLE_PNP SNDRV_DEFAULT_ENABLE
61#define SNDRV_DEFAULT_PORT { REPEAT_SNDRV(-1) }
62#define SNDRV_DEFAULT_IRQ { REPEAT_SNDRV(SNDRV_AUTO_IRQ) }
63#define SNDRV_DEFAULT_DMA { REPEAT_SNDRV(SNDRV_AUTO_DMA) }
64#define SNDRV_DEFAULT_DMA_SIZE { REPEAT_SNDRV(SNDRV_AUTO_DMA_SIZE) }
65#define SNDRV_DEFAULT_PTR SNDRV_DEFAULT_STR
66#define SNDDRV_DEFAULT_PCM_DEVS {REPEAT_SNDRV(1)};
67#define SNDDRV_DEFAULT_PCM_SUBSTREAMS {REPEAT_SNDRV(8)};
68#define SNDDRV_DEFAULT_MIDI_DEVS {REPEAT_SNDRV(4)};
69#else
70#define SNDRV_DEFAULT_IDX { [0 ... (SNDRV_CARDS-1)] = -1 }
71#define SNDRV_DEFAULT_STR { [0 ... (SNDRV_CARDS-1)] = NULL }
72#define SNDRV_DEFAULT_ENABLE { 1, [1 ... (SNDRV_CARDS-1)] = 0 }
73#define SNDRV_DEFAULT_ENABLE_PNP { [0 ... (SNDRV_CARDS-1)] = 1 }
74#define SNDRV_DEFAULT_PORT { SNDRV_AUTO_PORT, [1 ... (SNDRV_CARDS-1)] = -1 }
75#define SNDRV_DEFAULT_IRQ { [0 ... (SNDRV_CARDS-1)] = SNDRV_AUTO_IRQ }
76#define SNDRV_DEFAULT_DMA { [0 ... (SNDRV_CARDS-1)] = SNDRV_AUTO_DMA }
77#define SNDRV_DEFAULT_DMA_SIZE { [0 ... (SNDRV_CARDS-1)] = SNDRV_AUTO_DMA_SIZE }
78#define SNDRV_DEFAULT_PTR SNDRV_DEFAULT_STR
79#endif
80
81#ifdef CONFIG_PNP
82#define SNDRV_DEFAULT_ENABLE_ISAPNP SNDRV_DEFAULT_ENABLE_PNP
83#else
84#define SNDRV_DEFAULT_ENABLE_ISAPNP SNDRV_DEFAULT_ENABLE
85#endif
86
87#define SNDRV_BOOLEAN_TRUE_DESC "allows:{{0,Disabled},{1,Enabled}},default:1,dialog:check"
88#define SNDRV_BOOLEAN_FALSE_DESC "allows:{{0,Disabled},{1,Enabled}},default:0,dialog:check"
89
90#define SNDRV_ENABLED "enable:(snd_enable)"
91
92#define SNDRV_INDEX_DESC SNDRV_ENABLED ",allows:{{0,7}},unique,skill:required,dialog:list"
93#define SNDRV_ID_DESC SNDRV_ENABLED ",unique"
94#define SNDRV_ENABLE_DESC SNDRV_BOOLEAN_FALSE_DESC
95#define SNDRV_ISAPNP_DESC SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC
96#define SNDRV_DMA8_DESC SNDRV_ENABLED ",allows:{{0,1},{3}},dialog:list"
97#define SNDRV_DMA16_DESC SNDRV_ENABLED ",allows:{{5,7}},dialog:list"
98#define SNDRV_DMA_DESC SNDRV_ENABLED ",allows:{{0,1},{3},{5,7}},dialog:list"
99#define SNDRV_IRQ_DESC SNDRV_ENABLED ",allows:{{5},{7},{9},{10,12},{14,15}},dialog:list"
100#define SNDRV_DMA_SIZE_DESC SNDRV_ENABLED ",allows:{{4,128}},default:64,skill:advanced"
101#define SNDRV_DMA8_SIZE_DESC SNDRV_ENABLED ",allows:{{4, 64}},default:64,skill:advanced"
102#define SNDRV_DMA16_SIZE_DESC SNDRV_ENABLED ",allows:{{4,128}},default:64,skill:advanced"
103#define SNDRV_PORT12_DESC SNDRV_ENABLED ",allows:{{0,0x3fff}},base:16"
104#define SNDRV_PORT_DESC SNDRV_ENABLED ",allows:{{0,0xffff}},base:16"
105
106#ifdef SNDRV_LEGACY_FIND_FREE_IOPORT
107static long snd_legacy_find_free_ioport(const long *port_table, long size)
108{
109 while (*port_table != -1) {
110 if (request_region(*port_table, size, "ALSA test")) {
111 release_region(*port_table, size);
112 return *port_table;
113 }
114 port_table++;
115 }
116 return -1;
117}
118#endif
119
120#ifdef SNDRV_LEGACY_FIND_FREE_IRQ
121#include <linux/interrupt.h>
122
123static irqreturn_t snd_legacy_empty_irq_handler(int irq, void *dev_id)
124{
125 return IRQ_HANDLED;
126}
127
128static int snd_legacy_find_free_irq(const int *irq_table)
129{
130 while (*irq_table != -1) {
131 if (!request_irq(*irq_table, snd_legacy_empty_irq_handler,
132 IRQF_PROBE_SHARED, "ALSA Test IRQ",
133 (void *) irq_table)) {
134 free_irq(*irq_table, (void *) irq_table);
135 return *irq_table;
136 }
137 irq_table++;
138 }
139 return -1;
140}
141#endif
142
143#ifdef SNDRV_LEGACY_FIND_FREE_DMA
144static int snd_legacy_find_free_dma(const int *dma_table)
145{
146 while (*dma_table != -1) {
147 if (!request_dma(*dma_table, "ALSA Test DMA")) {
148 free_dma(*dma_table);
149 return *dma_table;
150 }
151 dma_table++;
152 }
153 return -1;
154}
155#endif
156
157#if defined(SNDRV_GET_ID) && !defined(MODULE)
158#include <linux/ctype.h>
159static int __init get_id(char **str, char **dst)
160{
161 char *s, *d;
162
163 if (!(*str) || !(**str))
164 return 0;
165 for (s = *str; isalpha(*s) || isdigit(*s) || *s == '_'; s++);
166 if (s != *str) {
167 *dst = (char *)kmalloc(s - *str, GFP_KERNEL);
168 if ((d = *dst) != NULL) {
169 s = *str;
170 while (isalpha(*s) || isdigit(*s) || *s == '_')
171 *d++ = *s++;
172 }
173 }
174 *str = s;
175 if (*s == ',') {
176 (*str)++;
177 return 2;
178 }
179 return 1;
180}
181#endif
182
183#endif /* __INITVAL_H */
Note: See TracBrowser for help on using the repository browser.