1 #ifndef __LINUX_SERIAL_SCI_H
2 #define __LINUX_SERIAL_SCI_H
4 #include <linux/serial_core.h>
5 #include <linux/sh_dma.h>
8 * Generic header for SuperH (H)SCI(F) (used by sh/sh64 and related parts)
11 #define SCIx_NOT_SUPPORTED (-1)
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) /* not supported by all parts */
18 #define SCSCR_TOIE (1 << 2) /* not supported by all parts */
19 #define SCSCR_CKE1 (1 << 1)
20 #define SCSCR_CKE0 (1 << 0)
30 #define SCI_DEFAULT_ERROR_MASK (SCI_PER | SCI_FER)
32 /* SCxSR SCIF, HSCIF */
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
42 #define SCIF_DEFAULT_ERROR_MASK (SCIF_PER | SCIF_FER | SCIF_ER | SCIF_BRK)
44 /* SCSPTR, optional */
45 #define SCSPTR_RTSIO (1 << 7)
46 #define SCSPTR_CTSIO (1 << 5)
47 #define SCSPTR_SPB2IO (1 << 1)
48 #define SCSPTR_SPB2DT (1 << 0)
51 #define HSCIF_SRE 0x8000
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
,
72 * SCI register subset common for all port types.
73 * Not all registers will exist on all parts.
76 SCSMR
, SCBRR
, SCSCR
, SCxSR
,
77 SCFCR
, SCFDR
, SCxTDR
, SCxRDR
,
78 SCLSR
, SCTFDR
, SCRFDR
, SCSPTR
,
86 struct plat_sci_port_ops
{
87 void (*init_pins
)(struct uart_port
*, unsigned int cflag
);
91 * Port-specific capabilities
93 #define SCIx_HAVE_RTSCTS (1 << 0)
96 * Platform device specific platform_data struct
98 struct plat_sci_port
{
99 unsigned int type
; /* SCI / SCIF / IRDA / HSCIF */
100 upf_t flags
; /* UPF_* flags */
101 unsigned long capabilities
; /* Port features/capabilities */
103 unsigned int sampling_rate
;
104 unsigned int scscr
; /* SCSCR initialization */
107 * Platform overrides if necessary, defaults otherwise.
110 unsigned char regshift
;
111 unsigned char regtype
;
113 struct plat_sci_port_ops
*ops
;
115 unsigned int dma_slave_tx
;
116 unsigned int dma_slave_rx
;
119 #endif /* __LINUX_SERIAL_SCI_H */