^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __SOUND_INITVAL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __SOUND_INITVAL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Init values for soundcard modules
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Copyright (c) by Jaroslav Kysela <perex@perex.cz>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define SNDRV_AUTO_PORT 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define SNDRV_AUTO_IRQ 0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define SNDRV_AUTO_DMA 0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define SNDRV_AUTO_DMA_SIZE (0x7fffffff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define SNDRV_DEFAULT_IDX1 (-1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define SNDRV_DEFAULT_STR1 NULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define SNDRV_DEFAULT_ENABLE1 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define SNDRV_DEFAULT_PORT1 SNDRV_AUTO_PORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define SNDRV_DEFAULT_IRQ1 SNDRV_AUTO_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define SNDRV_DEFAULT_DMA1 SNDRV_AUTO_DMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define SNDRV_DEFAULT_DMA_SIZE1 SNDRV_AUTO_DMA_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define SNDRV_DEFAULT_PTR1 SNDRV_DEFAULT_STR1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define SNDRV_DEFAULT_IDX { [0 ... (SNDRV_CARDS-1)] = -1 }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define SNDRV_DEFAULT_STR { [0 ... (SNDRV_CARDS-1)] = NULL }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define SNDRV_DEFAULT_ENABLE { 1, [1 ... (SNDRV_CARDS-1)] = 0 }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define SNDRV_DEFAULT_ENABLE_PNP { [0 ... (SNDRV_CARDS-1)] = 1 }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #ifdef CONFIG_PNP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define SNDRV_DEFAULT_ENABLE_ISAPNP SNDRV_DEFAULT_ENABLE_PNP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define SNDRV_DEFAULT_ENABLE_ISAPNP SNDRV_DEFAULT_ENABLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define SNDRV_DEFAULT_PORT { [0 ... (SNDRV_CARDS-1)] = SNDRV_AUTO_PORT }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define SNDRV_DEFAULT_IRQ { [0 ... (SNDRV_CARDS-1)] = SNDRV_AUTO_IRQ }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define SNDRV_DEFAULT_DMA { [0 ... (SNDRV_CARDS-1)] = SNDRV_AUTO_DMA }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define SNDRV_DEFAULT_DMA_SIZE { [0 ... (SNDRV_CARDS-1)] = SNDRV_AUTO_DMA_SIZE }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define SNDRV_DEFAULT_PTR SNDRV_DEFAULT_STR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #ifdef SNDRV_LEGACY_FIND_FREE_IOPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) static long snd_legacy_find_free_ioport(const long *port_table, long size)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) while (*port_table != -1) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) if (request_region(*port_table, size, "ALSA test")) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) release_region(*port_table, size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) return *port_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) port_table++;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) return -1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #ifdef SNDRV_LEGACY_FIND_FREE_IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #include <linux/interrupt.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) static irqreturn_t snd_legacy_empty_irq_handler(int irq, void *dev_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) return IRQ_HANDLED;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) static int snd_legacy_find_free_irq(const int *irq_table)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) while (*irq_table != -1) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) if (!request_irq(*irq_table, snd_legacy_empty_irq_handler,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) IRQF_PROBE_SHARED, "ALSA Test IRQ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) (void *) irq_table)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) free_irq(*irq_table, (void *) irq_table);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) return *irq_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) irq_table++;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) return -1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) #ifdef SNDRV_LEGACY_FIND_FREE_DMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) static int snd_legacy_find_free_dma(const int *dma_table)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) while (*dma_table != -1) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) if (!request_dma(*dma_table, "ALSA Test DMA")) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) free_dma(*dma_table);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) return *dma_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) dma_table++;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) return -1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #endif /* __SOUND_INITVAL_H */