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, |
61a6976b PM |
39 | |
40 | SCIx_NR_REGTYPES, | |
41 | }; | |
42 | ||
61a6976b PM |
43 | struct plat_sci_port_ops { |
44 | void (*init_pins)(struct uart_port *, unsigned int cflag); | |
45 | }; | |
46 | ||
ecd95616 PM |
47 | /* |
48 | * Platform device specific platform_data struct | |
49 | */ | |
50 | struct plat_sci_port { | |
f303b364 | 51 | unsigned int type; /* SCI / SCIF / IRDA / HSCIF */ |
ecd95616 | 52 | upf_t flags; /* UPF_* flags */ |
00b9de9c | 53 | |
ec09c5eb | 54 | unsigned int sampling_rate; |
00b9de9c | 55 | unsigned int scscr; /* SCSCR initialization */ |
f43dc23d | 56 | |
debf9507 PM |
57 | /* |
58 | * Platform overrides if necessary, defaults otherwise. | |
59 | */ | |
61a6976b PM |
60 | unsigned char regtype; |
61 | ||
62 | struct plat_sci_port_ops *ops; | |
ecd95616 PM |
63 | }; |
64 | ||
96de1a8f | 65 | #endif /* __LINUX_SERIAL_SCI_H */ |