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
usb
6fire
pcm.h
Go to the documentation of this file.
1
/*
2
* Linux driver for TerraTec DMX 6Fire USB
3
*
4
* Author: Torsten Schenk <
[email protected]
>
5
* Created: Jan 01, 2011
6
* Copyright: (C) Torsten Schenk
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
14
#ifndef USB6FIRE_PCM_H
15
#define USB6FIRE_PCM_H
16
17
#include <
sound/pcm.h
>
18
#include <
linux/mutex.h
>
19
20
#include "
common.h
"
21
22
enum
/* settings for pcm */
23
{
24
/* maximum of EP_W_MAX_PACKET_SIZE[] (see firmware.c) */
25
PCM_N_URBS
= 16,
PCM_N_PACKETS_PER_URB
= 8,
PCM_MAX_PACKET_SIZE
= 604
26
};
27
28
struct
pcm_urb
{
29
struct
sfire_chip
*
chip
;
30
31
/* BEGIN DO NOT SEPARATE */
32
struct
urb
instance
;
33
struct
usb_iso_packet_descriptor
packets
[
PCM_N_PACKETS_PER_URB
];
34
/* END DO NOT SEPARATE */
35
u8
buffer
[
PCM_N_PACKETS_PER_URB
*
PCM_MAX_PACKET_SIZE
];
36
37
struct
pcm_urb
*
peer
;
38
};
39
40
struct
pcm_substream
{
41
spinlock_t
lock
;
42
struct
snd_pcm_substream
*
instance
;
43
44
bool
active
;
45
46
snd_pcm_uframes_t
dma_off
;
/* current position in alsa dma_area */
47
snd_pcm_uframes_t
period_off
;
/* current position in current period */
48
};
49
50
struct
pcm_runtime
{
51
struct
sfire_chip
*
chip
;
52
struct
snd_pcm
*
instance
;
53
54
struct
pcm_substream
playback
;
55
struct
pcm_substream
capture
;
56
bool
panic
;
/* if set driver won't do anymore pcm on device */
57
58
struct
pcm_urb
in_urbs
[
PCM_N_URBS
];
59
struct
pcm_urb
out_urbs
[
PCM_N_URBS
];
60
int
in_packet_size
;
61
int
out_packet_size
;
62
int
in_n_analog
;
/* number of analog channels soundcard sends */
63
int
out_n_analog
;
/* number of analog channels soundcard receives */
64
65
struct
mutex
stream_mutex
;
66
u8
stream_state
;
/* one of STREAM_XXX (pcm.c) */
67
u8
rate
;
/* one of PCM_RATE_XXX */
68
wait_queue_head_t
stream_wait_queue
;
69
bool
stream_wait_cond
;
70
};
71
72
int
__devinit
usb6fire_pcm_init
(
struct
sfire_chip
*
chip
);
73
void
usb6fire_pcm_abort
(
struct
sfire_chip
*
chip
);
74
void
usb6fire_pcm_destroy
(
struct
sfire_chip
*
chip
);
75
#endif
/* USB6FIRE_PCM_H */
Generated on Thu Jan 10 2013 14:29:16 for Linux Kernel by
1.8.2