blob: a2b28e8629f92885d9328dae768ba0ab4374f7eb [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * mcfserial.c -- serial driver for ColdFire internal UARTS.
3 *
4 * Copyright (c) 1999 Greg Ungerer <gerg@snapgear.com>
5 * Copyright (c) 2000-2001 Lineo, Inc. <www.lineo.com>
6 * Copyright (c) 2002 SnapGear Inc., <www.snapgear.com>
7 *
8 * Based on code from 68332serial.c which was:
9 *
10 * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
11 * Copyright (C) 1998 TSHG
12 * Copyright (c) 1999 Rt-Control Inc. <jeff@uclinux.org>
13 */
14#ifndef _MCF_SERIAL_H
15#define _MCF_SERIAL_H
16
17#include <linux/config.h>
18#include <linux/serial.h>
19
20#ifdef __KERNEL__
21
22/*
23 * Define a local serial stats structure.
24 */
25
26struct mcf_stats {
27 unsigned int rx;
28 unsigned int tx;
29 unsigned int rxbreak;
30 unsigned int rxframing;
31 unsigned int rxparity;
32 unsigned int rxoverrun;
33};
34
35
36/*
37 * This is our internal structure for each serial port's state.
38 * Each serial port has one of these structures associated with it.
39 */
40
41struct mcf_serial {
42 int magic;
43 volatile unsigned char *addr; /* UART memory address */
44 int irq;
45 int flags; /* defined in tty.h */
46 int type; /* UART type */
47 struct tty_struct *tty;
48 unsigned char imr; /* Software imr register */
49 unsigned int baud;
50 int sigs;
51 int custom_divisor;
52 int x_char; /* xon/xoff character */
53 int baud_base;
54 int close_delay;
55 unsigned short closing_wait;
56 unsigned short closing_wait2;
57 unsigned long event;
58 int line;
59 int count; /* # of fd on device */
60 int blocked_open; /* # of blocked opens */
61 unsigned char *xmit_buf;
62 int xmit_head;
63 int xmit_tail;
64 int xmit_cnt;
65 struct mcf_stats stats;
66 struct work_struct tqueue;
67 struct work_struct tqueue_hangup;
68 wait_queue_head_t open_wait;
69 wait_queue_head_t close_wait;
70
71};
72
73#endif /* __KERNEL__ */
74
75#endif /* _MCF_SERIAL_H */