linux/include/linux/serial_sci.h
<<
>>
Prefs
   1#ifndef __LINUX_SERIAL_SCI_H
   2#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#define SCIx_NOT_SUPPORTED      (-1)
  12
  13#define SCSCR_TIE       (1 << 7)
  14#define SCSCR_RIE       (1 << 6)
  15#define SCSCR_TE        (1 << 5)
  16#define SCSCR_RE        (1 << 4)
  17#define SCSCR_REIE      (1 << 3)        /* not supported by all parts */
  18#define SCSCR_TOIE      (1 << 2)        /* not supported by all parts */
  19#define SCSCR_CKE1      (1 << 1)
  20#define SCSCR_CKE0      (1 << 0)
  21
  22/* SCxSR SCI */
  23#define SCI_TDRE  0x80
  24#define SCI_RDRF  0x40
  25#define SCI_ORER  0x20
  26#define SCI_FER   0x10
  27#define SCI_PER   0x08
  28#define SCI_TEND  0x04
  29
  30#define SCI_DEFAULT_ERROR_MASK (SCI_PER | SCI_FER)
  31
  32/* SCxSR SCIF, HSCIF */
  33#define SCIF_ER    0x0080
  34#define SCIF_TEND  0x0040
  35#define SCIF_TDFE  0x0020
  36#define SCIF_BRK   0x0010
  37#define SCIF_FER   0x0008
  38#define SCIF_PER   0x0004
  39#define SCIF_RDF   0x0002
  40#define SCIF_DR    0x0001
  41
  42#define SCIF_DEFAULT_ERROR_MASK (SCIF_PER | SCIF_FER | SCIF_ER | SCIF_BRK)
  43
  44/* SCSPTR, optional */
  45#define SCSPTR_RTSIO    (1 << 7)
  46#define SCSPTR_CTSIO    (1 << 5)
  47#define SCSPTR_SPB2IO   (1 << 1)
  48#define SCSPTR_SPB2DT   (1 << 0)
  49
  50/* HSSRR HSCIF */
  51#define HSCIF_SRE       0x8000
  52
  53enum {
  54        SCIx_PROBE_REGTYPE,
  55
  56        SCIx_SCI_REGTYPE,
  57        SCIx_IRDA_REGTYPE,
  58        SCIx_SCIFA_REGTYPE,
  59        SCIx_SCIFB_REGTYPE,
  60        SCIx_SH2_SCIF_FIFODATA_REGTYPE,
  61        SCIx_SH3_SCIF_REGTYPE,
  62        SCIx_SH4_SCIF_REGTYPE,
  63        SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,
  64        SCIx_SH4_SCIF_FIFODATA_REGTYPE,
  65        SCIx_SH7705_SCIF_REGTYPE,
  66        SCIx_HSCIF_REGTYPE,
  67
  68        SCIx_NR_REGTYPES,
  69};
  70
  71/*
  72 * SCI register subset common for all port types.
  73 * Not all registers will exist on all parts.
  74 */
  75enum {
  76        SCSMR, SCBRR, SCSCR, SCxSR,
  77        SCFCR, SCFDR, SCxTDR, SCxRDR,
  78        SCLSR, SCTFDR, SCRFDR, SCSPTR,
  79        HSSRR,
  80
  81        SCIx_NR_REGS,
  82};
  83
  84struct device;
  85
  86struct plat_sci_port_ops {
  87        void (*init_pins)(struct uart_port *, unsigned int cflag);
  88};
  89
  90/*
  91 * Port-specific capabilities
  92 */
  93#define SCIx_HAVE_RTSCTS        (1 << 0)
  94
  95/*
  96 * Platform device specific platform_data struct
  97 */
  98struct plat_sci_port {
  99        unsigned int    type;                   /* SCI / SCIF / IRDA / HSCIF */
 100        upf_t           flags;                  /* UPF_* flags */
 101        unsigned long   capabilities;           /* Port features/capabilities */
 102
 103        unsigned int    sampling_rate;
 104        unsigned int    scscr;                  /* SCSCR initialization */
 105
 106        /*
 107         * Platform overrides if necessary, defaults otherwise.
 108         */
 109        int             port_reg;
 110        unsigned char   regshift;
 111        unsigned char   regtype;
 112
 113        struct plat_sci_port_ops        *ops;
 114
 115        unsigned int    dma_slave_tx;
 116        unsigned int    dma_slave_rx;
 117};
 118
 119#endif /* __LINUX_SERIAL_SCI_H */
 120