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
lx6464es
lx6464es.h
Go to the documentation of this file.
1
/* -*- linux-c -*- *
2
*
3
* ALSA driver for the digigram lx6464es interface
4
*
5
* Copyright (c) 2009 Tim Blechmann <
[email protected]
>
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 <
linux/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
unsigned
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
u8
mac_address
[6];
73
74
spinlock_t
lock
;
/* interrupt spinlock */
75
struct
mutex
setup_mutex
;
/* mutex used in hw_params, open
76
* and close */
77
78
struct
tasklet_struct
trigger_tasklet
;
/* trigger tasklet */
79
struct
tasklet_struct
tasklet_capture
;
80
struct
tasklet_struct
tasklet_playback
;
81
82
/* ports */
83
unsigned
long
port_plx
;
/* io port (size=256) */
84
void
__iomem
*
port_plx_remapped
;
/* remapped plx port */
85
void
__iomem
*
port_dsp_bar
;
/* memory port (32-bit,
86
* non-prefetchable,
87
* size=8K) */
88
89
/* messaging */
90
spinlock_t
msg_lock
;
/* message spinlock */
91
struct
lx_rmh
rmh
;
92
93
/* configuration */
94
uint
freq_ratio
: 2;
95
uint
playback_mute
: 1;
96
uint
hardware_running
[2];
97
u32
board_sample_rate
;
/* sample rate read from
98
* board */
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 */
Generated on Thu Jan 10 2013 15:06:50 for Linux Kernel by
1.8.2