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
usb
renesas_usbhs
fifo.h
Go to the documentation of this file.
1
/*
2
* Renesas USB driver
3
*
4
* Copyright (C) 2011 Renesas Solutions Corp.
5
* Kuninori Morimoto <
[email protected]
>
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software
14
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
15
*
16
*/
17
#ifndef RENESAS_USB_FIFO_H
18
#define RENESAS_USB_FIFO_H
19
20
#include <
linux/interrupt.h
>
21
#include <
linux/sh_dma.h
>
22
#include <
linux/workqueue.h
>
23
#include <asm/dma.h>
24
#include "
pipe.h
"
25
26
#define DMA_ADDR_INVALID (~(dma_addr_t)0)
27
28
struct
usbhs_fifo
{
29
char
*
name
;
30
u32
port
;
/* xFIFO */
31
u32
sel
;
/* xFIFOSEL */
32
u32
ctr
;
/* xFIFOCTR */
33
34
struct
usbhs_pipe
*
pipe
;
35
36
struct
dma_chan
*
tx_chan
;
37
struct
dma_chan
*
rx_chan
;
38
39
struct
sh_dmae_slave
tx_slave
;
40
struct
sh_dmae_slave
rx_slave
;
41
};
42
43
struct
usbhs_fifo_info
{
44
struct
usbhs_fifo
cfifo
;
45
struct
usbhs_fifo
d0fifo
;
46
struct
usbhs_fifo
d1fifo
;
47
};
48
49
struct
usbhs_pkt_handle
;
50
struct
usbhs_pkt
{
51
struct
list_head
node
;
52
struct
usbhs_pipe
*
pipe
;
53
struct
usbhs_pkt_handle
*
handler
;
54
void
(*
done
)(
struct
usbhs_priv
*
priv
,
55
struct
usbhs_pkt
*pkt);
56
struct
work_struct
work
;
57
dma_addr_t
dma
;
58
void
*
buf
;
59
int
length
;
60
int
trans
;
61
int
actual
;
62
int
zero
;
63
int
sequence
;
64
};
65
66
struct
usbhs_pkt_handle
{
67
int
(*
prepare
)(
struct
usbhs_pkt
*pkt,
int
*is_done);
68
int
(*
try_run
)(
struct
usbhs_pkt
*pkt,
int
*is_done);
69
int
(*
dma_done
)(
struct
usbhs_pkt
*pkt,
int
*is_done);
70
};
71
72
/*
73
* fifo
74
*/
75
int
usbhs_fifo_probe
(
struct
usbhs_priv
*
priv
);
76
void
usbhs_fifo_remove
(
struct
usbhs_priv
*
priv
);
77
void
usbhs_fifo_init
(
struct
usbhs_priv
*
priv
);
78
void
usbhs_fifo_quit
(
struct
usbhs_priv
*
priv
);
79
80
/*
81
* packet info
82
*/
83
extern
struct
usbhs_pkt_handle
usbhs_fifo_pio_push_handler
;
84
extern
struct
usbhs_pkt_handle
usbhs_fifo_pio_pop_handler
;
85
extern
struct
usbhs_pkt_handle
usbhs_ctrl_stage_end_handler
;
86
87
extern
struct
usbhs_pkt_handle
usbhs_fifo_dma_push_handler
;
88
extern
struct
usbhs_pkt_handle
usbhs_fifo_dma_pop_handler
;
89
90
extern
struct
usbhs_pkt_handle
usbhs_dcp_status_stage_in_handler
;
91
extern
struct
usbhs_pkt_handle
usbhs_dcp_status_stage_out_handler
;
92
93
extern
struct
usbhs_pkt_handle
usbhs_dcp_data_stage_in_handler
;
94
extern
struct
usbhs_pkt_handle
usbhs_dcp_data_stage_out_handler
;
95
96
void
usbhs_pkt_init
(
struct
usbhs_pkt
*pkt);
97
void
usbhs_pkt_push
(
struct
usbhs_pipe
*
pipe
,
struct
usbhs_pkt
*pkt,
98
void
(*
done
)(
struct
usbhs_priv
*
priv
,
99
struct
usbhs_pkt
*pkt),
100
void
*
buf
,
int
len,
int
zero
,
int
sequence
);
101
struct
usbhs_pkt
*
usbhs_pkt_pop
(
struct
usbhs_pipe
*pipe,
struct
usbhs_pkt
*pkt);
102
void
usbhs_pkt_start
(
struct
usbhs_pipe
*pipe);
103
104
#endif
/* RENESAS_USB_FIFO_H */
Generated on Thu Jan 10 2013 13:32:42 for Linux Kernel by
1.8.2