diff options
| author | Paul Mundt <lethal@linux-sh.org> | 2011-06-08 05:19:37 -0400 |
|---|---|---|
| committer | Paul Mundt <lethal@linux-sh.org> | 2011-06-08 05:19:37 -0400 |
| commit | debf9507166eede1e676d27d3298cdfb27399cb4 (patch) | |
| tree | 3c41311a485be79ab16d707c8c7f997990e95cd8 /include/linux | |
| parent | b03034016184b7e9fd19f2a24ffb131953fdcc41 (diff) | |
serial: sh-sci: Generalize overrun handling.
This consolidates all of the broken out overrun handling and ensures that
we have sensible defaults per-port type, in addition to making sure that
overruns are flagged appropriately in the error mask for parts that
haven't explicitly disabled support for it.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/serial_sci.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/include/linux/serial_sci.h b/include/linux/serial_sci.h index a2afc9fbe186..5fac3bccfd87 100644 --- a/include/linux/serial_sci.h +++ b/include/linux/serial_sci.h | |||
| @@ -8,6 +8,8 @@ | |||
| 8 | * Generic header for SuperH SCI(F) (used by sh/sh64/h8300 and related parts) | 8 | * Generic header for SuperH SCI(F) (used by sh/sh64/h8300 and related parts) |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #define SCIx_NOT_SUPPORTED (-1) | ||
| 12 | |||
| 11 | enum { | 13 | enum { |
| 12 | SCBRR_ALGO_1, /* ((clk + 16 * bps) / (16 * bps) - 1) */ | 14 | SCBRR_ALGO_1, /* ((clk + 16 * bps) / (16 * bps) - 1) */ |
| 13 | SCBRR_ALGO_2, /* ((clk + 16 * bps) / (32 * bps) - 1) */ | 15 | SCBRR_ALGO_2, /* ((clk + 16 * bps) / (32 * bps) - 1) */ |
| @@ -25,6 +27,28 @@ enum { | |||
| 25 | #define SCSCR_CKE1 (1 << 1) | 27 | #define SCSCR_CKE1 (1 << 1) |
| 26 | #define SCSCR_CKE0 (1 << 0) | 28 | #define SCSCR_CKE0 (1 << 0) |
| 27 | 29 | ||
| 30 | /* SCxSR SCI */ | ||
| 31 | #define SCI_TDRE 0x80 | ||
| 32 | #define SCI_RDRF 0x40 | ||
| 33 | #define SCI_ORER 0x20 | ||
| 34 | #define SCI_FER 0x10 | ||
| 35 | #define SCI_PER 0x08 | ||
| 36 | #define SCI_TEND 0x04 | ||
| 37 | |||
| 38 | #define SCI_DEFAULT_ERROR_MASK (SCI_PER | SCI_FER) | ||
| 39 | |||
| 40 | /* SCxSR SCIF */ | ||
| 41 | #define SCIF_ER 0x0080 | ||
| 42 | #define SCIF_TEND 0x0040 | ||
| 43 | #define SCIF_TDFE 0x0020 | ||
| 44 | #define SCIF_BRK 0x0010 | ||
| 45 | #define SCIF_FER 0x0008 | ||
| 46 | #define SCIF_PER 0x0004 | ||
| 47 | #define SCIF_RDF 0x0002 | ||
| 48 | #define SCIF_DR 0x0001 | ||
| 49 | |||
| 50 | #define SCIF_DEFAULT_ERROR_MASK (SCIF_PER | SCIF_FER | SCIF_ER | SCIF_BRK) | ||
| 51 | |||
| 28 | /* Offsets into the sci_port->irqs array */ | 52 | /* Offsets into the sci_port->irqs array */ |
| 29 | enum { | 53 | enum { |
| 30 | SCIx_ERI_IRQ, | 54 | SCIx_ERI_IRQ, |
| @@ -56,6 +80,12 @@ struct plat_sci_port { | |||
| 56 | unsigned int scbrr_algo_id; /* SCBRR calculation algo */ | 80 | unsigned int scbrr_algo_id; /* SCBRR calculation algo */ |
| 57 | unsigned int scscr; /* SCSCR initialization */ | 81 | unsigned int scscr; /* SCSCR initialization */ |
| 58 | 82 | ||
| 83 | /* | ||
| 84 | * Platform overrides if necessary, defaults otherwise. | ||
| 85 | */ | ||
| 86 | int overrun_bit; | ||
| 87 | unsigned int error_mask; | ||
| 88 | |||
| 59 | struct device *dma_dev; | 89 | struct device *dma_dev; |
| 60 | 90 | ||
| 61 | unsigned int dma_slave_tx; | 91 | unsigned int dma_slave_tx; |
