Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
96de1a8f PM |
2 | #ifndef __LINUX_SERIAL_SCI_H |
3 | #define __LINUX_SERIAL_SCI_H | |
ecd95616 | 4 | |
d94a0a38 | 5 | #include <linux/bitops.h> |
ecd95616 | 6 | #include <linux/serial_core.h> |
14baf9d7 | 7 | #include <linux/sh_dma.h> |
ecd95616 PM |
8 | |
9 | /* | |
4b084784 | 10 | * Generic header for SuperH (H)SCI(F) (used by sh/sh64 and related parts) |
ecd95616 PM |
11 | */ |
12 | ||
26de4f1b | 13 | /* Serial Control Register (@ = not supported by all parts) */ |
d94a0a38 GU |
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 */ | |
c27ffc10 | 22 | |
f303b364 | 23 | |
61a6976b PM |
24 | enum { |
25 | SCIx_PROBE_REGTYPE, | |
26 | ||
27 | SCIx_SCI_REGTYPE, | |
28 | SCIx_IRDA_REGTYPE, | |
29 | SCIx_SCIFA_REGTYPE, | |
30 | SCIx_SCIFB_REGTYPE, | |
3af1f8a4 | 31 | SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
61a6976b PM |
32 | SCIx_SH3_SCIF_REGTYPE, |
33 | SCIx_SH4_SCIF_REGTYPE, | |
b8bbd6b2 | 34 | SCIx_SH4_SCIF_BRG_REGTYPE, |
61a6976b PM |
35 | SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
36 | SCIx_SH4_SCIF_FIFODATA_REGTYPE, | |
37 | SCIx_SH7705_SCIF_REGTYPE, | |
f303b364 | 38 | SCIx_HSCIF_REGTYPE, |
10653022 | 39 | SCIx_RZ_SCIFA_REGTYPE, |
61a6976b PM |
40 | |
41 | SCIx_NR_REGTYPES, | |
42 | }; | |
43 | ||
61a6976b PM |
44 | struct plat_sci_port_ops { |
45 | void (*init_pins)(struct uart_port *, unsigned int cflag); | |
46 | }; | |
47 | ||
ecd95616 PM |
48 | /* |
49 | * Platform device specific platform_data struct | |
50 | */ | |
51 | struct plat_sci_port { | |
f303b364 | 52 | unsigned int type; /* SCI / SCIF / IRDA / HSCIF */ |
ecd95616 | 53 | upf_t flags; /* UPF_* flags */ |
00b9de9c | 54 | |
ec09c5eb | 55 | unsigned int sampling_rate; |
00b9de9c | 56 | unsigned int scscr; /* SCSCR initialization */ |
f43dc23d | 57 | |
debf9507 PM |
58 | /* |
59 | * Platform overrides if necessary, defaults otherwise. | |
60 | */ | |
61a6976b PM |
61 | unsigned char regtype; |
62 | ||
63 | struct plat_sci_port_ops *ops; | |
ecd95616 PM |
64 | }; |
65 | ||
96de1a8f | 66 | #endif /* __LINUX_SERIAL_SCI_H */ |