OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [serialP.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * Private header file for the (dumb) serial driver
3
 *
4
 * Copyright (C) 1997 by Theodore Ts'o.
5
 *
6
 * Redistribution of this file is permitted under the terms of the GNU
7
 * Public License (GPL)
8
 */
9
 
10
#ifndef _LINUX_SERIALP_H
11
#define _LINUX_SERIALP_H
12
 
13
/*
14
 * This is our internal structure for each serial port's state.
15
 *
16
 * Many fields are paralleled by the structure used by the serial_struct
17
 * structure.
18
 *
19
 * For definitions of the flags field, see tty.h
20
 */
21
 
22
#include <linux/termios.h>
23
#include <linux/workqueue.h>
24
#include <linux/interrupt.h>
25
#include <linux/circ_buf.h>
26
#include <linux/wait.h>
27
 
28
struct serial_state {
29
        int     magic;
30
        int     baud_base;
31
        unsigned long   port;
32
        int     irq;
33
        int     flags;
34
        int     hub6;
35
        int     type;
36
        int     line;
37
        int     revision;       /* Chip revision (950) */
38
        int     xmit_fifo_size;
39
        int     custom_divisor;
40
        int     count;
41
        u8      *iomem_base;
42
        u16     iomem_reg_shift;
43
        unsigned short  close_delay;
44
        unsigned short  closing_wait; /* time to wait before closing */
45
        struct async_icount     icount;
46
        int     io_type;
47
        struct async_struct *info;
48
        struct pci_dev  *dev;
49
};
50
 
51
struct async_struct {
52
        int                     magic;
53
        unsigned long           port;
54
        int                     hub6;
55
        int                     flags;
56
        int                     xmit_fifo_size;
57
        struct serial_state     *state;
58
        struct tty_struct       *tty;
59
        int                     read_status_mask;
60
        int                     ignore_status_mask;
61
        int                     timeout;
62
        int                     quot;
63
        int                     x_char; /* xon/xoff character */
64
        int                     close_delay;
65
        unsigned short          closing_wait;
66
        unsigned short          closing_wait2; /* obsolete */
67
        int                     IER;    /* Interrupt Enable Register */
68
        int                     MCR;    /* Modem control register */
69
        int                     LCR;    /* Line control register */
70
        int                     ACR;     /* 16950 Additional Control Reg. */
71
        unsigned long           event;
72
        unsigned long           last_active;
73
        int                     line;
74
        int                     blocked_open; /* # of blocked opens */
75
        struct circ_buf         xmit;
76
        spinlock_t              xmit_lock;
77
        u8                      *iomem_base;
78
        u16                     iomem_reg_shift;
79
        int                     io_type;
80
        struct work_struct                      work;
81
        struct tasklet_struct   tlet;
82
#ifdef DECLARE_WAITQUEUE
83
        wait_queue_head_t       open_wait;
84
        wait_queue_head_t       close_wait;
85
        wait_queue_head_t       delta_msr_wait;
86
#else   
87
        struct wait_queue       *open_wait;
88
        struct wait_queue       *close_wait;
89
        struct wait_queue       *delta_msr_wait;
90
#endif  
91
        struct async_struct     *next_port; /* For the linked list */
92
        struct async_struct     *prev_port;
93
};
94
 
95
#define CONFIGURED_SERIAL_PORT(info) ((info)->port || ((info)->iomem_base))
96
 
97
#define SERIAL_MAGIC 0x5301
98
#define SSTATE_MAGIC 0x5302
99
 
100
/*
101
 * Events are used to schedule things to happen at timer-interrupt
102
 * time, instead of at rs interrupt time.
103
 */
104
#define RS_EVENT_WRITE_WAKEUP   0
105
 
106
/*
107
 * Multiport serial configuration structure --- internal structure
108
 */
109
struct rs_multiport_struct {
110
        int             port1;
111
        unsigned char   mask1, match1;
112
        int             port2;
113
        unsigned char   mask2, match2;
114
        int             port3;
115
        unsigned char   mask3, match3;
116
        int             port4;
117
        unsigned char   mask4, match4;
118
        int             port_monitor;
119
};
120
 
121
#if defined(__alpha__) && !defined(CONFIG_PCI)
122
/*
123
 * Digital did something really horribly wrong with the OUT1 and OUT2
124
 * lines on at least some ALPHA's.  The failure mode is that if either
125
 * is cleared, the machine locks up with endless interrupts.
126
 *
127
 * This is still used by arch/mips/au1000/common/serial.c for some weird
128
 * reason (mips != alpha!)
129
 */
130
#define ALPHA_KLUDGE_MCR  (UART_MCR_OUT2 | UART_MCR_OUT1)
131
#elif defined(CONFIG_SBC8560)
132
/*
133
 * WindRiver did something similarly broken on their SBC8560 board. The
134
 * UART tristates its IRQ output while OUT2 is clear, but they pulled
135
 * the interrupt line _up_ instead of down, so if we register the IRQ
136
 * while the UART is in that state, we die in an IRQ storm. */
137
#define ALPHA_KLUDGE_MCR (UART_MCR_OUT2)
138
#else
139
#define ALPHA_KLUDGE_MCR 0
140
#endif
141
 
142
#endif /* _LINUX_SERIAL_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.