1#ifndef __LINUX_SERIAL_SCI_H
2#define __LINUX_SERIAL_SCI_H
3
4#include <linux/serial_core.h>
5#include <linux/sh_dma.h>
6
7
8
9
10
11#define SCIx_NOT_SUPPORTED (-1)
12
13#define SCSCR_TIE (1 << 7)
14#define SCSCR_RIE (1 << 6)
15#define SCSCR_TE (1 << 5)
16#define SCSCR_RE (1 << 4)
17#define SCSCR_REIE (1 << 3)
18#define SCSCR_TOIE (1 << 2)
19#define SCSCR_CKE1 (1 << 1)
20#define SCSCR_CKE0 (1 << 0)
21
22
23#define SCI_TDRE 0x80
24#define SCI_RDRF 0x40
25#define SCI_ORER 0x20
26#define SCI_FER 0x10
27#define SCI_PER 0x08
28#define SCI_TEND 0x04
29
30#define SCI_DEFAULT_ERROR_MASK (SCI_PER | SCI_FER)
31
32
33#define SCIF_ER 0x0080
34#define SCIF_TEND 0x0040
35#define SCIF_TDFE 0x0020
36#define SCIF_BRK 0x0010
37#define SCIF_FER 0x0008
38#define SCIF_PER 0x0004
39#define SCIF_RDF 0x0002
40#define SCIF_DR 0x0001
41
42#define SCIF_DEFAULT_ERROR_MASK (SCIF_PER | SCIF_FER | SCIF_ER | SCIF_BRK)
43
44
45#define SCSPTR_RTSIO (1 << 7)
46#define SCSPTR_CTSIO (1 << 5)
47#define SCSPTR_SPB2IO (1 << 1)
48#define SCSPTR_SPB2DT (1 << 0)
49
50
51#define HSCIF_SRE 0x8000
52
53enum {
54 SCIx_PROBE_REGTYPE,
55
56 SCIx_SCI_REGTYPE,
57 SCIx_IRDA_REGTYPE,
58 SCIx_SCIFA_REGTYPE,
59 SCIx_SCIFB_REGTYPE,
60 SCIx_SH2_SCIF_FIFODATA_REGTYPE,
61 SCIx_SH3_SCIF_REGTYPE,
62 SCIx_SH4_SCIF_REGTYPE,
63 SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,
64 SCIx_SH4_SCIF_FIFODATA_REGTYPE,
65 SCIx_SH7705_SCIF_REGTYPE,
66 SCIx_HSCIF_REGTYPE,
67
68 SCIx_NR_REGTYPES,
69};
70
71
72
73
74
75enum {
76 SCSMR, SCBRR, SCSCR, SCxSR,
77 SCFCR, SCFDR, SCxTDR, SCxRDR,
78 SCLSR, SCTFDR, SCRFDR, SCSPTR,
79 HSSRR,
80
81 SCIx_NR_REGS,
82};
83
84struct device;
85
86struct plat_sci_port_ops {
87 void (*init_pins)(struct uart_port *, unsigned int cflag);
88};
89
90
91
92
93#define SCIx_HAVE_RTSCTS (1 << 0)
94
95
96
97
98struct plat_sci_port {
99 unsigned int type;
100 upf_t flags;
101 unsigned long capabilities;
102
103 unsigned int sampling_rate;
104 unsigned int scscr;
105
106
107
108
109 int port_reg;
110 unsigned char regshift;
111 unsigned char regtype;
112
113 struct plat_sci_port_ops *ops;
114
115 unsigned int dma_slave_tx;
116 unsigned int dma_slave_rx;
117};
118
119#endif
120