Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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 
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 
35  struct work_struct work;
36  unsigned long trigger;
37  struct ps3_system_bus_device *dev; /* to convert work to device */
38 };
39 
47  int (*remove)(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 
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);
83  unsigned int bytes);
84 
85 #endif