Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
sound
pci
echoaudio
echo3g.c
Go to the documentation of this file.
1
/*
2
* ALSA driver for Echoaudio soundcards.
3
* Copyright (C) 2003-2004 Giuliano Pochini <
[email protected]
>
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; version 2 of the License.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
*/
18
19
#define ECHO3G_FAMILY
20
#define ECHOCARD_ECHO3G
21
#define ECHOCARD_NAME "Echo3G"
22
#define ECHOCARD_HAS_MONITOR
23
#define ECHOCARD_HAS_ASIC
24
#define ECHOCARD_HAS_INPUT_NOMINAL_LEVEL
25
#define ECHOCARD_HAS_OUTPUT_NOMINAL_LEVEL
26
#define ECHOCARD_HAS_SUPER_INTERLEAVE
27
#define ECHOCARD_HAS_DIGITAL_IO
28
#define ECHOCARD_HAS_DIGITAL_MODE_SWITCH
29
#define ECHOCARD_HAS_ADAT 6
30
#define ECHOCARD_HAS_EXTERNAL_CLOCK
31
#define ECHOCARD_HAS_STEREO_BIG_ENDIAN32
32
#define ECHOCARD_HAS_MIDI
33
#define ECHOCARD_HAS_PHANTOM_POWER
34
35
/* Pipe indexes */
36
#define PX_ANALOG_OUT 0
37
#define PX_DIGITAL_OUT chip->px_digital_out
38
#define PX_ANALOG_IN chip->px_analog_in
39
#define PX_DIGITAL_IN chip->px_digital_in
40
#define PX_NUM chip->px_num
41
42
/* Bus indexes */
43
#define BX_ANALOG_OUT 0
44
#define BX_DIGITAL_OUT chip->bx_digital_out
45
#define BX_ANALOG_IN chip->bx_analog_in
46
#define BX_DIGITAL_IN chip->bx_digital_in
47
#define BX_NUM chip->bx_num
48
49
50
#include <
linux/delay.h
>
51
#include <
linux/init.h
>
52
#include <
linux/interrupt.h
>
53
#include <linux/pci.h>
54
#include <linux/module.h>
55
#include <
linux/firmware.h
>
56
#include <linux/slab.h>
57
#include <
sound/core.h
>
58
#include <
sound/info.h
>
59
#include <
sound/control.h
>
60
#include <
sound/tlv.h
>
61
#include <
sound/pcm.h
>
62
#include <
sound/pcm_params.h
>
63
#include <
sound/asoundef.h
>
64
#include <
sound/initval.h
>
65
#include <
sound/rawmidi.h
>
66
#include <asm/io.h>
67
#include <
linux/atomic.h
>
68
#include "
echoaudio.h
"
69
70
MODULE_FIRMWARE
(
"ea/loader_dsp.fw"
);
71
MODULE_FIRMWARE
(
"ea/echo3g_dsp.fw"
);
72
MODULE_FIRMWARE
(
"ea/3g_asic.fw"
);
73
74
#define FW_361_LOADER 0
75
#define FW_ECHO3G_DSP 1
76
#define FW_3G_ASIC 2
77
78
static
const
struct
firmware
card_fw[] = {
79
{0,
"loader_dsp.fw"
},
80
{0,
"echo3g_dsp.fw"
},
81
{0,
"3g_asic.fw"
}
82
};
83
84
static
DEFINE_PCI_DEVICE_TABLE
(snd_echo_ids) = {
85
{0x1057, 0x3410, 0xECC0, 0x0100, 0, 0, 0},
/* Echo 3G */
86
{0,}
87
};
88
89
static
struct
snd_pcm_hardware
pcm_hardware_skel = {
90
.info =
SNDRV_PCM_INFO_MMAP
|
91
SNDRV_PCM_INFO_INTERLEAVED
|
92
SNDRV_PCM_INFO_BLOCK_TRANSFER
|
93
SNDRV_PCM_INFO_MMAP_VALID
|
94
SNDRV_PCM_INFO_PAUSE
|
95
SNDRV_PCM_INFO_SYNC_START
,
96
.formats =
SNDRV_PCM_FMTBIT_U8
|
97
SNDRV_PCM_FMTBIT_S16_LE
|
98
SNDRV_PCM_FMTBIT_S24_3LE
|
99
SNDRV_PCM_FMTBIT_S32_LE
|
100
SNDRV_PCM_FMTBIT_S32_BE
,
101
.rates =
SNDRV_PCM_RATE_32000
|
102
SNDRV_PCM_RATE_44100
|
103
SNDRV_PCM_RATE_48000
|
104
SNDRV_PCM_RATE_88200
|
105
SNDRV_PCM_RATE_96000
|
106
SNDRV_PCM_RATE_CONTINUOUS
,
107
.rate_min = 32000,
108
.rate_max = 100000,
109
.channels_min = 1,
110
.channels_max = 8,
111
.buffer_bytes_max = 262144,
112
.period_bytes_min = 32,
113
.period_bytes_max = 131072,
114
.periods_min = 2,
115
.periods_max = 220,
116
};
117
118
#include "
echo3g_dsp.c
"
119
#include "
echoaudio_dsp.c
"
120
#include "
echoaudio_3g.c
"
121
#include "
echoaudio.c
"
122
#include "
midi.c
"
Generated on Thu Jan 10 2013 15:06:06 for Linux Kernel by
1.8.2