1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef __LINUX_SERIAL_SCI_H |
3 | #define __LINUX_SERIAL_SCI_H |
4 | |
5 | #include <linux/bitops.h> |
6 | #include <linux/serial_core.h> |
7 | #include <linux/sh_dma.h> |
8 | |
9 | /* |
10 | * Generic header for SuperH (H)SCI(F) (used by sh/sh64 and related parts) |
11 | */ |
12 | |
13 | /* Serial Control Register (@ = not supported by all parts) */ |
14 | #define SCSCR_TIE BIT(7) /* Transmit Interrupt Enable */ |
15 | #define SCSCR_RIE BIT(6) /* Receive Interrupt Enable */ |
16 | #define SCSCR_TE BIT(5) /* Transmit Enable */ |
17 | #define SCSCR_RE BIT(4) /* Receive Enable */ |
18 | #define SCSCR_REIE BIT(3) /* Receive Error Interrupt Enable @ */ |
19 | #define SCSCR_TOIE BIT(2) /* Timeout Interrupt Enable @ */ |
20 | #define SCSCR_CKE1 BIT(1) /* Clock Enable 1 */ |
21 | #define SCSCR_CKE0 BIT(0) /* Clock Enable 0 */ |
22 | |
23 | |
24 | enum { |
25 | SCIx_PROBE_REGTYPE, |
26 | |
27 | SCIx_SCI_REGTYPE, |
28 | SCIx_IRDA_REGTYPE, |
29 | SCIx_SCIFA_REGTYPE, |
30 | SCIx_SCIFB_REGTYPE, |
31 | SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
32 | SCIx_SH3_SCIF_REGTYPE, |
33 | SCIx_SH4_SCIF_REGTYPE, |
34 | SCIx_SH4_SCIF_BRG_REGTYPE, |
35 | SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
36 | SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
37 | SCIx_SH7705_SCIF_REGTYPE, |
38 | SCIx_HSCIF_REGTYPE, |
39 | SCIx_RZ_SCIFA_REGTYPE, |
40 | |
41 | SCIx_NR_REGTYPES, |
42 | }; |
43 | |
44 | struct plat_sci_port_ops { |
45 | void (*init_pins)(struct uart_port *, unsigned int cflag); |
46 | }; |
47 | |
48 | /* |
49 | * Platform device specific platform_data struct |
50 | */ |
51 | struct plat_sci_port { |
52 | unsigned int type; /* SCI / SCIF / IRDA / HSCIF */ |
53 | upf_t flags; /* UPF_* flags */ |
54 | |
55 | unsigned int sampling_rate; |
56 | unsigned int scscr; /* SCSCR initialization */ |
57 | |
58 | /* |
59 | * Platform overrides if necessary, defaults otherwise. |
60 | */ |
61 | unsigned char regtype; |
62 | |
63 | struct plat_sci_port_ops *ops; |
64 | }; |
65 | |
66 | #endif /* __LINUX_SERIAL_SCI_H */ |
67 | |