diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-01-13 15:03:00 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-01-13 15:03:00 -0500 |
commit | 728674a7e466628df2aeec6d11a2ae1ef968fb67 (patch) | |
tree | 83d2e44d05b257ab03230f5c95e0d6843f0ed2f9 /drivers/tty/hvc/hvc_console.h | |
parent | e691d24e9c5007486bef59c589c2a2d784e0c30b (diff) |
tty: move hvc drivers to drivers/tty/hvc/
As requested by Arnd Bergmann, the hvc drivers are now
moved to the drivers/tty/hvc/ directory. The virtio_console.c driver
was also moved, as it required the hvc_console.h file to be able to be
built, and it really is a hvc driver.
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/tty/hvc/hvc_console.h')
-rw-r--r-- | drivers/tty/hvc/hvc_console.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/drivers/tty/hvc/hvc_console.h b/drivers/tty/hvc/hvc_console.h new file mode 100644 index 000000000000..54381eba4e4a --- /dev/null +++ b/drivers/tty/hvc/hvc_console.h | |||
@@ -0,0 +1,119 @@ | |||
1 | /* | ||
2 | * hvc_console.h | ||
3 | * Copyright (C) 2005 IBM Corporation | ||
4 | * | ||
5 | * Author(s): | ||
6 | * Ryan S. Arnold <rsa@us.ibm.com> | ||
7 | * | ||
8 | * hvc_console header information: | ||
9 | * moved here from arch/powerpc/include/asm/hvconsole.h | ||
10 | * and drivers/char/hvc_console.c | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License as published by | ||
14 | * the Free Software Foundation; either version 2 of the License, or | ||
15 | * (at your option) any later version. | ||
16 | * | ||
17 | * This program is distributed in the hope that it will be useful, | ||
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | * GNU General Public License for more details. | ||
21 | * | ||
22 | * You should have received a copy of the GNU General Public License | ||
23 | * along with this program; if not, write to the Free Software | ||
24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
25 | */ | ||
26 | |||
27 | #ifndef HVC_CONSOLE_H | ||
28 | #define HVC_CONSOLE_H | ||
29 | #include <linux/kref.h> | ||
30 | #include <linux/tty.h> | ||
31 | #include <linux/spinlock.h> | ||
32 | |||
33 | /* | ||
34 | * This is the max number of console adapters that can/will be found as | ||
35 | * console devices on first stage console init. Any number beyond this range | ||
36 | * can't be used as a console device but is still a valid tty device. | ||
37 | */ | ||
38 | #define MAX_NR_HVC_CONSOLES 16 | ||
39 | |||
40 | /* | ||
41 | * The Linux TTY code does not support dynamic addition of tty derived devices | ||
42 | * so we need to know how many tty devices we might need when space is allocated | ||
43 | * for the tty device. Since this driver supports hotplug of vty adapters we | ||
44 | * need to make sure we have enough allocated. | ||
45 | */ | ||
46 | #define HVC_ALLOC_TTY_ADAPTERS 8 | ||
47 | |||
48 | struct hvc_struct { | ||
49 | spinlock_t lock; | ||
50 | int index; | ||
51 | struct tty_struct *tty; | ||
52 | int count; | ||
53 | int do_wakeup; | ||
54 | char *outbuf; | ||
55 | int outbuf_size; | ||
56 | int n_outbuf; | ||
57 | uint32_t vtermno; | ||
58 | const struct hv_ops *ops; | ||
59 | int irq_requested; | ||
60 | int data; | ||
61 | struct winsize ws; | ||
62 | struct work_struct tty_resize; | ||
63 | struct list_head next; | ||
64 | struct kref kref; /* ref count & hvc_struct lifetime */ | ||
65 | }; | ||
66 | |||
67 | /* implemented by a low level driver */ | ||
68 | struct hv_ops { | ||
69 | int (*get_chars)(uint32_t vtermno, char *buf, int count); | ||
70 | int (*put_chars)(uint32_t vtermno, const char *buf, int count); | ||
71 | |||
72 | /* Callbacks for notification. Called in open, close and hangup */ | ||
73 | int (*notifier_add)(struct hvc_struct *hp, int irq); | ||
74 | void (*notifier_del)(struct hvc_struct *hp, int irq); | ||
75 | void (*notifier_hangup)(struct hvc_struct *hp, int irq); | ||
76 | }; | ||
77 | |||
78 | /* Register a vterm and a slot index for use as a console (console_init) */ | ||
79 | extern int hvc_instantiate(uint32_t vtermno, int index, | ||
80 | const struct hv_ops *ops); | ||
81 | |||
82 | /* register a vterm for hvc tty operation (module_init or hotplug add) */ | ||
83 | extern struct hvc_struct * hvc_alloc(uint32_t vtermno, int data, | ||
84 | const struct hv_ops *ops, int outbuf_size); | ||
85 | /* remove a vterm from hvc tty operation (module_exit or hotplug remove) */ | ||
86 | extern int hvc_remove(struct hvc_struct *hp); | ||
87 | |||
88 | /* data available */ | ||
89 | int hvc_poll(struct hvc_struct *hp); | ||
90 | void hvc_kick(void); | ||
91 | |||
92 | /* Resize hvc tty terminal window */ | ||
93 | extern void __hvc_resize(struct hvc_struct *hp, struct winsize ws); | ||
94 | |||
95 | static inline void hvc_resize(struct hvc_struct *hp, struct winsize ws) | ||
96 | { | ||
97 | unsigned long flags; | ||
98 | |||
99 | spin_lock_irqsave(&hp->lock, flags); | ||
100 | __hvc_resize(hp, ws); | ||
101 | spin_unlock_irqrestore(&hp->lock, flags); | ||
102 | } | ||
103 | |||
104 | /* default notifier for irq based notification */ | ||
105 | extern int notifier_add_irq(struct hvc_struct *hp, int data); | ||
106 | extern void notifier_del_irq(struct hvc_struct *hp, int data); | ||
107 | extern void notifier_hangup_irq(struct hvc_struct *hp, int data); | ||
108 | |||
109 | |||
110 | #if defined(CONFIG_XMON) && defined(CONFIG_SMP) | ||
111 | #include <asm/xmon.h> | ||
112 | #else | ||
113 | static inline int cpus_are_in_xmon(void) | ||
114 | { | ||
115 | return 0; | ||
116 | } | ||
117 | #endif | ||
118 | |||
119 | #endif // HVC_CONSOLE_H | ||