diff options
author | Tim Blechmann <tim@klingt.org> | 2009-03-24 07:24:35 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-04-14 06:01:46 -0400 |
commit | 02bec490450836ebbd628e97ec03f10b57def8ce (patch) | |
tree | cd276c822afc81613f166b7b2e19e1ec0ab12e14 /sound/pci/lx6464es/lx6464es.h | |
parent | 577c9c456f0e1371cbade38eaf91ae8e8a308555 (diff) |
ALSA: lx6464es - driver for the digigram lx6464es interface
prototype of a driver for the digigram lx6464es 64 channel ethersound
interface.
Signed-off-by: Tim Blechmann <tim@klingt.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/lx6464es/lx6464es.h')
-rw-r--r-- | sound/pci/lx6464es/lx6464es.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/sound/pci/lx6464es/lx6464es.h b/sound/pci/lx6464es/lx6464es.h new file mode 100644 index 000000000000..012c010c8c89 --- /dev/null +++ b/sound/pci/lx6464es/lx6464es.h | |||
@@ -0,0 +1,114 @@ | |||
1 | /* -*- linux-c -*- * | ||
2 | * | ||
3 | * ALSA driver for the digigram lx6464es interface | ||
4 | * | ||
5 | * Copyright (c) 2009 Tim Blechmann <tim@klingt.org> | ||
6 | * | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; see the file COPYING. If not, write to | ||
20 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||
21 | * Boston, MA 02111-1307, USA. | ||
22 | * | ||
23 | */ | ||
24 | |||
25 | #ifndef LX6464ES_H | ||
26 | #define LX6464ES_H | ||
27 | |||
28 | #include <linux/spinlock.h> | ||
29 | #include <asm/atomic.h> | ||
30 | |||
31 | #include <sound/core.h> | ||
32 | #include <sound/pcm.h> | ||
33 | |||
34 | #include "lx_core.h" | ||
35 | |||
36 | #define LXP "LX6464ES: " | ||
37 | |||
38 | enum { | ||
39 | ES_cmd_free = 0, /* no command executing */ | ||
40 | ES_cmd_processing = 1, /* execution of a read/write command */ | ||
41 | ES_read_pending = 2, /* a asynchron read command is pending */ | ||
42 | ES_read_finishing = 3, /* a read command has finished waiting (set by | ||
43 | * Interrupt or CancelIrp) */ | ||
44 | }; | ||
45 | |||
46 | enum lx_stream_status { | ||
47 | LX_STREAM_STATUS_FREE, | ||
48 | /* LX_STREAM_STATUS_OPEN, */ | ||
49 | LX_STREAM_STATUS_SCHEDULE_RUN, | ||
50 | /* LX_STREAM_STATUS_STARTED, */ | ||
51 | LX_STREAM_STATUS_RUNNING, | ||
52 | LX_STREAM_STATUS_SCHEDULE_STOP, | ||
53 | /* LX_STREAM_STATUS_STOPPED, */ | ||
54 | /* LX_STREAM_STATUS_PAUSED */ | ||
55 | }; | ||
56 | |||
57 | |||
58 | struct lx_stream { | ||
59 | struct snd_pcm_substream *stream; | ||
60 | snd_pcm_uframes_t frame_pos; | ||
61 | enum lx_stream_status status; /* free, open, running, draining | ||
62 | * pause */ | ||
63 | int is_capture:1; | ||
64 | }; | ||
65 | |||
66 | |||
67 | struct lx6464es { | ||
68 | struct snd_card *card; | ||
69 | struct pci_dev *pci; | ||
70 | int irq; | ||
71 | |||
72 | spinlock_t lock; /* interrupt spinlock */ | ||
73 | struct mutex setup_mutex; /* mutex used in hw_params, open | ||
74 | * and close */ | ||
75 | |||
76 | struct tasklet_struct trigger_tasklet; /* trigger tasklet */ | ||
77 | struct tasklet_struct tasklet_capture; | ||
78 | struct tasklet_struct tasklet_playback; | ||
79 | |||
80 | /* ports */ | ||
81 | unsigned long port_plx; /* io port (size=256) */ | ||
82 | void __iomem *port_plx_remapped; /* remapped plx port */ | ||
83 | void __iomem *port_dsp_bar; /* memory port (32-bit, | ||
84 | * non-prefetchable, | ||
85 | * size=8K) */ | ||
86 | |||
87 | /* messaging */ | ||
88 | spinlock_t msg_lock; /* message spinlock */ | ||
89 | atomic_t send_message_locked; | ||
90 | struct lx_rmh rmh; | ||
91 | |||
92 | /* configuration */ | ||
93 | uint freq_ratio : 2; | ||
94 | uint playback_mute : 1; | ||
95 | uint hardware_running[2]; | ||
96 | u32 board_sample_rate; /* sample rate read from | ||
97 | * board */ | ||
98 | u32 sample_rate; /* our sample rate */ | ||
99 | u16 pcm_granularity; /* board blocksize */ | ||
100 | |||
101 | /* dma */ | ||
102 | struct snd_dma_buffer capture_dma_buf; | ||
103 | struct snd_dma_buffer playback_dma_buf; | ||
104 | |||
105 | /* pcm */ | ||
106 | struct snd_pcm *pcm; | ||
107 | |||
108 | /* streams */ | ||
109 | struct lx_stream capture_stream; | ||
110 | struct lx_stream playback_stream; | ||
111 | }; | ||
112 | |||
113 | |||
114 | #endif /* LX6464ES_H */ | ||