]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - include/linux/serial_sci.h
serial: sh-sci: Remove useless casts
[mirror_ubuntu-artful-kernel.git] / include / linux / serial_sci.h
CommitLineData
96de1a8f
PM
1#ifndef __LINUX_SERIAL_SCI_H
2#define __LINUX_SERIAL_SCI_H
ecd95616
PM
3
4#include <linux/serial_core.h>
14baf9d7 5#include <linux/sh_dma.h>
ecd95616
PM
6
7/*
4b084784 8 * Generic header for SuperH (H)SCI(F) (used by sh/sh64 and related parts)
ecd95616
PM
9 */
10
debf9507
PM
11#define SCIx_NOT_SUPPORTED (-1)
12
00b9de9c
PM
13#define SCSCR_TIE (1 << 7)
14#define SCSCR_RIE (1 << 6)
15#define SCSCR_TE (1 << 5)
16#define SCSCR_RE (1 << 4)
f43dc23d 17#define SCSCR_REIE (1 << 3) /* not supported by all parts */
00b9de9c
PM
18#define SCSCR_TOIE (1 << 2) /* not supported by all parts */
19#define SCSCR_CKE1 (1 << 1)
20#define SCSCR_CKE0 (1 << 0)
21
debf9507
PM
22/* SCxSR SCI */
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
f303b364 32/* SCxSR SCIF, HSCIF */
debf9507
PM
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
faf02f8f
PM
44/* SCSPTR, optional */
45#define SCSPTR_RTSIO (1 << 7)
46#define SCSPTR_CTSIO (1 << 5)
bbb4ce50
SY
47#define SCSPTR_SPB2IO (1 << 1)
48#define SCSPTR_SPB2DT (1 << 0)
faf02f8f 49
f303b364
UH
50/* HSSRR HSCIF */
51#define HSCIF_SRE 0x8000
52
61a6976b
PM
53enum {
54 SCIx_PROBE_REGTYPE,
55
56 SCIx_SCI_REGTYPE,
57 SCIx_IRDA_REGTYPE,
58 SCIx_SCIFA_REGTYPE,
59 SCIx_SCIFB_REGTYPE,
3af1f8a4 60 SCIx_SH2_SCIF_FIFODATA_REGTYPE,
61a6976b
PM
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,
f303b364 66 SCIx_HSCIF_REGTYPE,
61a6976b
PM
67
68 SCIx_NR_REGTYPES,
69};
70
61a6976b
PM
71/*
72 * SCI register subset common for all port types.
73 * Not all registers will exist on all parts.
74 */
75enum {
76 SCSMR, SCBRR, SCSCR, SCxSR,
77 SCFCR, SCFDR, SCxTDR, SCxRDR,
78 SCLSR, SCTFDR, SCRFDR, SCSPTR,
f303b364 79 HSSRR,
61a6976b
PM
80
81 SCIx_NR_REGS,
82};
83
73a19e4c
GL
84struct device;
85
61a6976b
PM
86struct plat_sci_port_ops {
87 void (*init_pins)(struct uart_port *, unsigned int cflag);
88};
89
faf02f8f
PM
90/*
91 * Port-specific capabilities
92 */
93#define SCIx_HAVE_RTSCTS (1 << 0)
94
ecd95616
PM
95/*
96 * Platform device specific platform_data struct
97 */
98struct plat_sci_port {
f303b364 99 unsigned int type; /* SCI / SCIF / IRDA / HSCIF */
ecd95616 100 upf_t flags; /* UPF_* flags */
faf02f8f 101 unsigned long capabilities; /* Port features/capabilities */
00b9de9c 102
ec09c5eb 103 unsigned int sampling_rate;
00b9de9c 104 unsigned int scscr; /* SCSCR initialization */
f43dc23d 105
debf9507
PM
106 /*
107 * Platform overrides if necessary, defaults otherwise.
108 */
514820eb 109 int port_reg;
61a6976b
PM
110 unsigned char regshift;
111 unsigned char regtype;
112
113 struct plat_sci_port_ops *ops;
514820eb 114
27bd1075
PM
115 unsigned int dma_slave_tx;
116 unsigned int dma_slave_rx;
ecd95616
PM
117};
118
96de1a8f 119#endif /* __LINUX_SERIAL_SCI_H */