serial_sci.h 1.8 KB
Newer Older
1 2
#ifndef __LINUX_SERIAL_SCI_H
#define __LINUX_SERIAL_SCI_H
3 4

#include <linux/serial_core.h>
5
#include <linux/sh_dma.h>
6 7

/*
8
 * Generic header for SuperH (H)SCI(F) (used by sh/sh64 and related parts)
9 10
 */

11 12
#define SCIx_NOT_SUPPORTED	(-1)

13 14 15 16 17 18 19 20 21
/* Serial Control Register (@ = not supported by all parts) */
#define SCSCR_TIE	(1 << 7)	/* Transmit Interrupt Enable */
#define SCSCR_RIE	(1 << 6)	/* Receive Interrupt Enable */
#define SCSCR_TE	(1 << 5)	/* Transmit Enable */
#define SCSCR_RE	(1 << 4)	/* Receive Enable */
#define SCSCR_REIE	(1 << 3)	/* Receive Error Interrupt Enable @ */
#define SCSCR_TOIE	(1 << 2)	/* Timeout Interrupt Enable @ */
#define SCSCR_CKE1	(1 << 1)	/* Clock Enable 1 */
#define SCSCR_CKE0	(1 << 0)	/* Clock Enable 0 */
22

U
Ulrich Hecht 已提交
23

24 25 26 27 28 29 30
enum {
	SCIx_PROBE_REGTYPE,

	SCIx_SCI_REGTYPE,
	SCIx_IRDA_REGTYPE,
	SCIx_SCIFA_REGTYPE,
	SCIx_SCIFB_REGTYPE,
31
	SCIx_SH2_SCIF_FIFODATA_REGTYPE,
32 33 34 35 36
	SCIx_SH3_SCIF_REGTYPE,
	SCIx_SH4_SCIF_REGTYPE,
	SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,
	SCIx_SH4_SCIF_FIFODATA_REGTYPE,
	SCIx_SH7705_SCIF_REGTYPE,
U
Ulrich Hecht 已提交
37
	SCIx_HSCIF_REGTYPE,
38 39 40 41

	SCIx_NR_REGTYPES,
};

42 43
struct device;

44 45 46 47
struct plat_sci_port_ops {
	void (*init_pins)(struct uart_port *, unsigned int cflag);
};

48 49 50 51 52
/*
 * Port-specific capabilities
 */
#define SCIx_HAVE_RTSCTS	(1 << 0)

53 54 55 56
/*
 * Platform device specific platform_data struct
 */
struct plat_sci_port {
U
Ulrich Hecht 已提交
57
	unsigned int	type;			/* SCI / SCIF / IRDA / HSCIF */
58
	upf_t		flags;			/* UPF_* flags */
59
	unsigned long	capabilities;		/* Port features/capabilities */
60

61
	unsigned int	sampling_rate;
62
	unsigned int	scscr;			/* SCSCR initialization */
P
Paul Mundt 已提交
63

64 65 66
	/*
	 * Platform overrides if necessary, defaults otherwise.
	 */
67
	int		port_reg;
68 69 70 71
	unsigned char	regshift;
	unsigned char	regtype;

	struct plat_sci_port_ops	*ops;
72

73 74
	unsigned int	dma_slave_tx;
	unsigned int	dma_slave_rx;
75 76
};

77
#endif /* __LINUX_SERIAL_SCI_H */