]>
Commit | Line | Data |
---|---|---|
96de1a8f PM |
1 | #ifndef __LINUX_SERIAL_SCI_H |
2 | #define __LINUX_SERIAL_SCI_H | |
ecd95616 | 3 | |
d94a0a38 | 4 | #include <linux/bitops.h> |
ecd95616 | 5 | #include <linux/serial_core.h> |
14baf9d7 | 6 | #include <linux/sh_dma.h> |
ecd95616 PM |
7 | |
8 | /* | |
4b084784 | 9 | * Generic header for SuperH (H)SCI(F) (used by sh/sh64 and related parts) |
ecd95616 PM |
10 | */ |
11 | ||
debf9507 PM |
12 | #define SCIx_NOT_SUPPORTED (-1) |
13 | ||
26de4f1b | 14 | /* Serial Control Register (@ = not supported by all parts) */ |
d94a0a38 GU |
15 | #define SCSCR_TIE BIT(7) /* Transmit Interrupt Enable */ |
16 | #define SCSCR_RIE BIT(6) /* Receive Interrupt Enable */ | |
17 | #define SCSCR_TE BIT(5) /* Transmit Enable */ | |
18 | #define SCSCR_RE BIT(4) /* Receive Enable */ | |
19 | #define SCSCR_REIE BIT(3) /* Receive Error Interrupt Enable @ */ | |
20 | #define SCSCR_TOIE BIT(2) /* Timeout Interrupt Enable @ */ | |
21 | #define SCSCR_CKE1 BIT(1) /* Clock Enable 1 */ | |
22 | #define SCSCR_CKE0 BIT(0) /* Clock Enable 0 */ | |
c27ffc10 | 23 | |
f303b364 | 24 | |
61a6976b PM |
25 | enum { |
26 | SCIx_PROBE_REGTYPE, | |
27 | ||
28 | SCIx_SCI_REGTYPE, | |
29 | SCIx_IRDA_REGTYPE, | |
30 | SCIx_SCIFA_REGTYPE, | |
31 | SCIx_SCIFB_REGTYPE, | |
3af1f8a4 | 32 | SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
61a6976b PM |
33 | SCIx_SH3_SCIF_REGTYPE, |
34 | SCIx_SH4_SCIF_REGTYPE, | |
b8bbd6b2 | 35 | SCIx_SH4_SCIF_BRG_REGTYPE, |
61a6976b PM |
36 | SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
37 | SCIx_SH4_SCIF_FIFODATA_REGTYPE, | |
38 | SCIx_SH7705_SCIF_REGTYPE, | |
f303b364 | 39 | SCIx_HSCIF_REGTYPE, |
61a6976b PM |
40 | |
41 | SCIx_NR_REGTYPES, | |
42 | }; | |
43 | ||
73a19e4c GL |
44 | struct device; |
45 | ||
61a6976b PM |
46 | struct plat_sci_port_ops { |
47 | void (*init_pins)(struct uart_port *, unsigned int cflag); | |
48 | }; | |
49 | ||
faf02f8f PM |
50 | /* |
51 | * Port-specific capabilities | |
52 | */ | |
d94a0a38 | 53 | #define SCIx_HAVE_RTSCTS BIT(0) |
faf02f8f | 54 | |
ecd95616 PM |
55 | /* |
56 | * Platform device specific platform_data struct | |
57 | */ | |
58 | struct plat_sci_port { | |
f303b364 | 59 | unsigned int type; /* SCI / SCIF / IRDA / HSCIF */ |
ecd95616 | 60 | upf_t flags; /* UPF_* flags */ |
faf02f8f | 61 | unsigned long capabilities; /* Port features/capabilities */ |
00b9de9c | 62 | |
ec09c5eb | 63 | unsigned int sampling_rate; |
00b9de9c | 64 | unsigned int scscr; /* SCSCR initialization */ |
f43dc23d | 65 | |
debf9507 PM |
66 | /* |
67 | * Platform overrides if necessary, defaults otherwise. | |
68 | */ | |
514820eb | 69 | int port_reg; |
61a6976b PM |
70 | unsigned char regshift; |
71 | unsigned char regtype; | |
72 | ||
73 | struct plat_sci_port_ops *ops; | |
514820eb | 74 | |
27bd1075 PM |
75 | unsigned int dma_slave_tx; |
76 | unsigned int dma_slave_rx; | |
ecd95616 PM |
77 | }; |
78 | ||
96de1a8f | 79 | #endif /* __LINUX_SERIAL_SCI_H */ |