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
drivers
media
usb
pvrusb2
pvrusb2-io.h
Go to the documentation of this file.
1
/*
2
*
3
*
4
* Copyright (C) 2005 Mike Isely <
[email protected]
>
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
*
19
*/
20
#ifndef __PVRUSB2_IO_H
21
#define __PVRUSB2_IO_H
22
23
#include <
linux/usb.h
>
24
#include <linux/list.h>
25
26
typedef
void
(*
pvr2_stream_callback
)(
void
*);
27
28
enum
pvr2_buffer_state
{
29
pvr2_buffer_state_none
= 0,
// Not on any list
30
pvr2_buffer_state_idle
= 1,
// Buffer is ready to be used again
31
pvr2_buffer_state_queued
= 2,
// Buffer has been queued for filling
32
pvr2_buffer_state_ready
= 3,
// Buffer has data available
33
};
34
35
struct
pvr2_stream
;
36
struct
pvr2_buffer
;
37
38
struct
pvr2_stream_stats
{
39
unsigned
int
buffers_in_queue
;
40
unsigned
int
buffers_in_idle
;
41
unsigned
int
buffers_in_ready
;
42
unsigned
int
buffers_processed
;
43
unsigned
int
buffers_failed
;
44
unsigned
int
bytes_processed
;
45
};
46
47
/* Initialize / tear down stream structure */
48
struct
pvr2_stream
*
pvr2_stream_create
(
void
);
49
void
pvr2_stream_destroy
(
struct
pvr2_stream
*);
50
void
pvr2_stream_setup
(
struct
pvr2_stream
*,
51
struct
usb_device *
dev
,
int
endpoint
,
52
unsigned
int
tolerance);
53
void
pvr2_stream_set_callback
(
struct
pvr2_stream
*,
54
pvr2_stream_callback
func
,
55
void
*
data
);
56
void
pvr2_stream_get_stats
(
struct
pvr2_stream
*,
57
struct
pvr2_stream_stats
*,
58
int
zero_counts);
59
60
/* Query / set the nominal buffer count */
61
int
pvr2_stream_get_buffer_count
(
struct
pvr2_stream
*);
62
int
pvr2_stream_set_buffer_count
(
struct
pvr2_stream
*,
unsigned
int
);
63
64
/* Get a pointer to a buffer that is either idle, ready, or is specified
65
named. */
66
struct
pvr2_buffer
*
pvr2_stream_get_idle_buffer
(
struct
pvr2_stream
*);
67
struct
pvr2_buffer
*
pvr2_stream_get_ready_buffer
(
struct
pvr2_stream
*);
68
struct
pvr2_buffer
*
pvr2_stream_get_buffer
(
struct
pvr2_stream
*
sp
,
int
id
);
69
70
/* Find out how many buffers are idle or ready */
71
int
pvr2_stream_get_ready_count
(
struct
pvr2_stream
*);
72
73
74
/* Kill all pending buffers and throw away any ready buffers as well */
75
void
pvr2_stream_kill
(
struct
pvr2_stream
*);
76
77
/* Set up the actual storage for a buffer */
78
int
pvr2_buffer_set_buffer
(
struct
pvr2_buffer
*,
void
*
ptr
,
unsigned
int
cnt
);
79
80
/* Find out size of data in the given ready buffer */
81
unsigned
int
pvr2_buffer_get_count
(
struct
pvr2_buffer
*);
82
83
/* Retrieve completion code for given ready buffer */
84
int
pvr2_buffer_get_status
(
struct
pvr2_buffer
*);
85
86
/* Retrieve ID of given buffer */
87
int
pvr2_buffer_get_id
(
struct
pvr2_buffer
*);
88
89
/* Start reading into given buffer (kill it if needed) */
90
int
pvr2_buffer_queue
(
struct
pvr2_buffer
*);
91
92
#endif
/* __PVRUSB2_IO_H */
93
94
/*
95
Stuff for Emacs to see, in order to encourage consistent editing style:
96
*** Local Variables: ***
97
*** mode: c ***
98
*** fill-column: 75 ***
99
*** tab-width: 8 ***
100
*** c-basic-offset: 8 ***
101
*** End: ***
102
*/
Generated on Thu Jan 10 2013 13:52:10 for Linux Kernel by
1.8.2