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
ps3
vuart.h
Go to the documentation of this file.
1
/*
2
* PS3 virtual uart
3
*
4
* Copyright (C) 2006 Sony Computer Entertainment Inc.
5
* Copyright 2006 Sony Corp.
6
*
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; version 2 of the License.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
*/
20
21
#if !defined(_PS3_VUART_H)
22
#define _PS3_VUART_H
23
24
#include <
asm/ps3.h
>
25
26
struct
ps3_vuart_stats
{
27
unsigned
long
bytes_written
;
28
unsigned
long
bytes_read
;
29
unsigned
long
tx_interrupts
;
30
unsigned
long
rx_interrupts
;
31
unsigned
long
disconnect_interrupts
;
32
};
33
34
struct
ps3_vuart_work
{
35
struct
work_struct
work
;
36
unsigned
long
trigger
;
37
struct
ps3_system_bus_device
*
dev
;
/* to convert work to device */
38
};
39
44
struct
ps3_vuart_port_driver
{
45
struct
ps3_system_bus_driver
core
;
46
int
(*
probe
)(
struct
ps3_system_bus_device
*);
47
int
(*
remove
)(
struct
ps3_system_bus_device
*);
48
void
(*
shutdown
)(
struct
ps3_system_bus_device
*);
49
void
(*
work
)(
struct
ps3_system_bus_device
*);
50
/* int (*tx_event)(struct ps3_system_bus_device *dev); */
51
/* int (*rx_event)(struct ps3_system_bus_device *dev); */
52
/* int (*disconnect_event)(struct ps3_system_bus_device *dev); */
53
/* int (*suspend)(struct ps3_system_bus_device *, pm_message_t); */
54
/* int (*resume)(struct ps3_system_bus_device *); */
55
};
56
57
int
ps3_vuart_port_driver_register
(
struct
ps3_vuart_port_driver
*drv);
58
void
ps3_vuart_port_driver_unregister
(
struct
ps3_vuart_port_driver
*drv);
59
60
static
inline
struct
ps3_vuart_port_driver
*
61
ps3_system_bus_dev_to_vuart_drv(
struct
ps3_system_bus_device
*_dev)
62
{
63
struct
ps3_system_bus_driver
*sbd =
64
ps3_system_bus_dev_to_system_bus_drv(_dev);
65
BUG_ON
(!sbd);
66
return
container_of
(sbd,
struct
ps3_vuart_port_driver
,
core
);
67
}
68
static
inline
struct
ps3_system_bus_device
*ps3_vuart_work_to_system_bus_dev(
69
struct
work_struct
*_work)
70
{
71
struct
ps3_vuart_work
*vw =
container_of
(_work,
struct
ps3_vuart_work
,
72
work
);
73
return
vw->
dev
;
74
}
75
76
int
ps3_vuart_write
(
struct
ps3_system_bus_device
*
dev
,
const
void
*
buf
,
77
unsigned
int
bytes
);
78
int
ps3_vuart_read
(
struct
ps3_system_bus_device
*
dev
,
void
*
buf
,
79
unsigned
int
bytes
);
80
int
ps3_vuart_read_async
(
struct
ps3_system_bus_device
*
dev
,
unsigned
int
bytes
);
81
void
ps3_vuart_cancel_async
(
struct
ps3_system_bus_device
*
dev
);
82
void
ps3_vuart_clear_rx_bytes
(
struct
ps3_system_bus_device
*
dev
,
83
unsigned
int
bytes
);
84
85
#endif
Generated on Thu Jan 10 2013 14:16:18 for Linux Kernel by
1.8.2