0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef ASM_ARM_HARDWARE_SERIAL_AMBA_H
0011 #define ASM_ARM_HARDWARE_SERIAL_AMBA_H
0012
0013 #include <linux/types.h>
0014
0015
0016
0017
0018
0019
0020 #define UART01x_DR 0x00
0021 #define UART01x_RSR 0x04
0022 #define UART01x_ECR 0x04
0023 #define UART010_LCRH 0x08
0024 #define ST_UART011_DMAWM 0x08
0025 #define UART010_LCRM 0x0C
0026 #define ST_UART011_TIMEOUT 0x0C
0027 #define UART010_LCRL 0x10
0028 #define UART010_CR 0x14
0029 #define UART01x_FR 0x18
0030 #define UART010_IIR 0x1C
0031 #define UART010_ICR 0x1C
0032 #define ST_UART011_LCRH_RX 0x1C
0033 #define UART01x_ILPR 0x20
0034 #define UART011_IBRD 0x24
0035 #define UART011_FBRD 0x28
0036 #define UART011_LCRH 0x2c
0037 #define ST_UART011_LCRH_TX 0x2c
0038 #define UART011_CR 0x30
0039 #define UART011_IFLS 0x34
0040 #define UART011_IMSC 0x38
0041 #define UART011_RIS 0x3c
0042 #define UART011_MIS 0x40
0043 #define UART011_ICR 0x44
0044 #define UART011_DMACR 0x48
0045 #define ST_UART011_XFCR 0x50
0046 #define ST_UART011_XON1 0x54
0047 #define ST_UART011_XON2 0x58
0048 #define ST_UART011_XOFF1 0x5C
0049 #define ST_UART011_XOFF2 0x60
0050 #define ST_UART011_ITCR 0x80
0051 #define ST_UART011_ITIP 0x84
0052 #define ST_UART011_ABCR 0x100
0053 #define ST_UART011_ABIMSC 0x15C
0054
0055
0056
0057
0058
0059
0060 #define ZX_UART011_DR 0x04
0061 #define ZX_UART011_FR 0x14
0062 #define ZX_UART011_IBRD 0x24
0063 #define ZX_UART011_FBRD 0x28
0064 #define ZX_UART011_LCRH 0x30
0065 #define ZX_UART011_CR 0x34
0066 #define ZX_UART011_IFLS 0x38
0067 #define ZX_UART011_IMSC 0x40
0068 #define ZX_UART011_RIS 0x44
0069 #define ZX_UART011_MIS 0x48
0070 #define ZX_UART011_ICR 0x4c
0071 #define ZX_UART011_DMACR 0x50
0072
0073 #define UART011_DR_OE (1 << 11)
0074 #define UART011_DR_BE (1 << 10)
0075 #define UART011_DR_PE (1 << 9)
0076 #define UART011_DR_FE (1 << 8)
0077
0078 #define UART01x_RSR_OE 0x08
0079 #define UART01x_RSR_BE 0x04
0080 #define UART01x_RSR_PE 0x02
0081 #define UART01x_RSR_FE 0x01
0082
0083 #define UART011_FR_RI 0x100
0084 #define UART011_FR_TXFE 0x080
0085 #define UART011_FR_RXFF 0x040
0086 #define UART01x_FR_TXFF 0x020
0087 #define UART01x_FR_RXFE 0x010
0088 #define UART01x_FR_BUSY 0x008
0089 #define UART01x_FR_DCD 0x004
0090 #define UART01x_FR_DSR 0x002
0091 #define UART01x_FR_CTS 0x001
0092 #define UART01x_FR_TMSK (UART01x_FR_TXFF + UART01x_FR_BUSY)
0093
0094
0095
0096
0097
0098 #define ZX_UART01x_FR_BUSY 0x100
0099 #define ZX_UART01x_FR_DSR 0x008
0100 #define ZX_UART01x_FR_CTS 0x002
0101 #define ZX_UART011_FR_RI 0x001
0102
0103 #define UART011_CR_CTSEN 0x8000
0104 #define UART011_CR_RTSEN 0x4000
0105 #define UART011_CR_OUT2 0x2000
0106 #define UART011_CR_OUT1 0x1000
0107 #define UART011_CR_RTS 0x0800
0108 #define UART011_CR_DTR 0x0400
0109 #define UART011_CR_RXE 0x0200
0110 #define UART011_CR_TXE 0x0100
0111 #define UART011_CR_LBE 0x0080
0112 #define UART010_CR_RTIE 0x0040
0113 #define UART010_CR_TIE 0x0020
0114 #define UART010_CR_RIE 0x0010
0115 #define UART010_CR_MSIE 0x0008
0116 #define ST_UART011_CR_OVSFACT 0x0008
0117 #define UART01x_CR_IIRLP 0x0004
0118 #define UART01x_CR_SIREN 0x0002
0119 #define UART01x_CR_UARTEN 0x0001
0120
0121 #define UART011_LCRH_SPS 0x80
0122 #define UART01x_LCRH_WLEN_8 0x60
0123 #define UART01x_LCRH_WLEN_7 0x40
0124 #define UART01x_LCRH_WLEN_6 0x20
0125 #define UART01x_LCRH_WLEN_5 0x00
0126 #define UART01x_LCRH_FEN 0x10
0127 #define UART01x_LCRH_STP2 0x08
0128 #define UART01x_LCRH_EPS 0x04
0129 #define UART01x_LCRH_PEN 0x02
0130 #define UART01x_LCRH_BRK 0x01
0131
0132 #define ST_UART011_DMAWM_RX_1 (0 << 3)
0133 #define ST_UART011_DMAWM_RX_2 (1 << 3)
0134 #define ST_UART011_DMAWM_RX_4 (2 << 3)
0135 #define ST_UART011_DMAWM_RX_8 (3 << 3)
0136 #define ST_UART011_DMAWM_RX_16 (4 << 3)
0137 #define ST_UART011_DMAWM_RX_32 (5 << 3)
0138 #define ST_UART011_DMAWM_RX_48 (6 << 3)
0139 #define ST_UART011_DMAWM_TX_1 0
0140 #define ST_UART011_DMAWM_TX_2 1
0141 #define ST_UART011_DMAWM_TX_4 2
0142 #define ST_UART011_DMAWM_TX_8 3
0143 #define ST_UART011_DMAWM_TX_16 4
0144 #define ST_UART011_DMAWM_TX_32 5
0145 #define ST_UART011_DMAWM_TX_48 6
0146
0147 #define UART010_IIR_RTIS 0x08
0148 #define UART010_IIR_TIS 0x04
0149 #define UART010_IIR_RIS 0x02
0150 #define UART010_IIR_MIS 0x01
0151
0152 #define UART011_IFLS_RX1_8 (0 << 3)
0153 #define UART011_IFLS_RX2_8 (1 << 3)
0154 #define UART011_IFLS_RX4_8 (2 << 3)
0155 #define UART011_IFLS_RX6_8 (3 << 3)
0156 #define UART011_IFLS_RX7_8 (4 << 3)
0157 #define UART011_IFLS_TX1_8 (0 << 0)
0158 #define UART011_IFLS_TX2_8 (1 << 0)
0159 #define UART011_IFLS_TX4_8 (2 << 0)
0160 #define UART011_IFLS_TX6_8 (3 << 0)
0161 #define UART011_IFLS_TX7_8 (4 << 0)
0162
0163 #define UART011_IFLS_RX_HALF (5 << 3)
0164 #define UART011_IFLS_TX_HALF (5 << 0)
0165
0166 #define UART011_OEIM (1 << 10)
0167 #define UART011_BEIM (1 << 9)
0168 #define UART011_PEIM (1 << 8)
0169 #define UART011_FEIM (1 << 7)
0170 #define UART011_RTIM (1 << 6)
0171 #define UART011_TXIM (1 << 5)
0172 #define UART011_RXIM (1 << 4)
0173 #define UART011_DSRMIM (1 << 3)
0174 #define UART011_DCDMIM (1 << 2)
0175 #define UART011_CTSMIM (1 << 1)
0176 #define UART011_RIMIM (1 << 0)
0177
0178 #define UART011_OEIS (1 << 10)
0179 #define UART011_BEIS (1 << 9)
0180 #define UART011_PEIS (1 << 8)
0181 #define UART011_FEIS (1 << 7)
0182 #define UART011_RTIS (1 << 6)
0183 #define UART011_TXIS (1 << 5)
0184 #define UART011_RXIS (1 << 4)
0185 #define UART011_DSRMIS (1 << 3)
0186 #define UART011_DCDMIS (1 << 2)
0187 #define UART011_CTSMIS (1 << 1)
0188 #define UART011_RIMIS (1 << 0)
0189
0190 #define UART011_OEIC (1 << 10)
0191 #define UART011_BEIC (1 << 9)
0192 #define UART011_PEIC (1 << 8)
0193 #define UART011_FEIC (1 << 7)
0194 #define UART011_RTIC (1 << 6)
0195 #define UART011_TXIC (1 << 5)
0196 #define UART011_RXIC (1 << 4)
0197 #define UART011_DSRMIC (1 << 3)
0198 #define UART011_DCDMIC (1 << 2)
0199 #define UART011_CTSMIC (1 << 1)
0200 #define UART011_RIMIC (1 << 0)
0201
0202 #define UART011_DMAONERR (1 << 2)
0203 #define UART011_TXDMAE (1 << 1)
0204 #define UART011_RXDMAE (1 << 0)
0205
0206 #define UART01x_RSR_ANY (UART01x_RSR_OE|UART01x_RSR_BE|UART01x_RSR_PE|UART01x_RSR_FE)
0207 #define UART01x_FR_MODEM_ANY (UART01x_FR_DCD|UART01x_FR_DSR|UART01x_FR_CTS)
0208
0209 #ifndef __ASSEMBLY__
0210 struct amba_device;
0211 struct amba_pl010_data {
0212 void (*set_mctrl)(struct amba_device *dev, void __iomem *base, unsigned int mctrl);
0213 };
0214
0215 struct dma_chan;
0216 struct amba_pl011_data {
0217 bool (*dma_filter)(struct dma_chan *chan, void *filter_param);
0218 void *dma_rx_param;
0219 void *dma_tx_param;
0220 bool dma_rx_poll_enable;
0221 unsigned int dma_rx_poll_rate;
0222 unsigned int dma_rx_poll_timeout;
0223 void (*init) (void);
0224 void (*exit) (void);
0225 };
0226 #endif
0227
0228 #endif