diff options
Diffstat (limited to 'drivers/net/irda/bfin_sir.h')
-rw-r--r-- | drivers/net/irda/bfin_sir.h | 63 |
1 files changed, 5 insertions, 58 deletions
diff --git a/drivers/net/irda/bfin_sir.h b/drivers/net/irda/bfin_sir.h index b54a6f08db45..29cbde8501ed 100644 --- a/drivers/net/irda/bfin_sir.h +++ b/drivers/net/irda/bfin_sir.h | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <asm/cacheflush.h> | 26 | #include <asm/cacheflush.h> |
27 | #include <asm/dma.h> | 27 | #include <asm/dma.h> |
28 | #include <asm/portmux.h> | 28 | #include <asm/portmux.h> |
29 | #undef DRIVER_NAME | ||
29 | 30 | ||
30 | #ifdef CONFIG_SIR_BFIN_DMA | 31 | #ifdef CONFIG_SIR_BFIN_DMA |
31 | struct dma_rx_buf { | 32 | struct dma_rx_buf { |
@@ -81,64 +82,10 @@ struct bfin_sir_self { | |||
81 | 82 | ||
82 | #define DRIVER_NAME "bfin_sir" | 83 | #define DRIVER_NAME "bfin_sir" |
83 | 84 | ||
84 | #define SIR_UART_GET_CHAR(port) bfin_read16((port)->membase + OFFSET_RBR) | 85 | #define port_membase(port) (((struct bfin_sir_port *)(port))->membase) |
85 | #define SIR_UART_GET_DLL(port) bfin_read16((port)->membase + OFFSET_DLL) | 86 | #define get_lsr_cache(port) (((struct bfin_sir_port *)(port))->lsr) |
86 | #define SIR_UART_GET_DLH(port) bfin_read16((port)->membase + OFFSET_DLH) | 87 | #define put_lsr_cache(port, v) (((struct bfin_sir_port *)(port))->lsr = (v)) |
87 | #define SIR_UART_GET_LCR(port) bfin_read16((port)->membase + OFFSET_LCR) | 88 | #include <asm/bfin_serial.h> |
88 | #define SIR_UART_GET_GCTL(port) bfin_read16((port)->membase + OFFSET_GCTL) | ||
89 | |||
90 | #define SIR_UART_PUT_CHAR(port, v) bfin_write16(((port)->membase + OFFSET_THR), v) | ||
91 | #define SIR_UART_PUT_DLL(port, v) bfin_write16(((port)->membase + OFFSET_DLL), v) | ||
92 | #define SIR_UART_PUT_DLH(port, v) bfin_write16(((port)->membase + OFFSET_DLH), v) | ||
93 | #define SIR_UART_PUT_LCR(port, v) bfin_write16(((port)->membase + OFFSET_LCR), v) | ||
94 | #define SIR_UART_PUT_GCTL(port, v) bfin_write16(((port)->membase + OFFSET_GCTL), v) | ||
95 | |||
96 | #ifdef CONFIG_BF54x | ||
97 | #define SIR_UART_GET_LSR(port) bfin_read16((port)->membase + OFFSET_LSR) | ||
98 | #define SIR_UART_GET_IER(port) bfin_read16((port)->membase + OFFSET_IER_SET) | ||
99 | #define SIR_UART_SET_IER(port, v) bfin_write16(((port)->membase + OFFSET_IER_SET), v) | ||
100 | #define SIR_UART_CLEAR_IER(port, v) bfin_write16(((port)->membase + OFFSET_IER_CLEAR), v) | ||
101 | #define SIR_UART_PUT_LSR(port, v) bfin_write16(((port)->membase + OFFSET_LSR), v) | ||
102 | #define SIR_UART_CLEAR_LSR(port) bfin_write16(((port)->membase + OFFSET_LSR), -1) | ||
103 | |||
104 | #define SIR_UART_SET_DLAB(port) | ||
105 | #define SIR_UART_CLEAR_DLAB(port) | ||
106 | |||
107 | #define SIR_UART_ENABLE_INTS(port, v) SIR_UART_SET_IER(port, v) | ||
108 | #define SIR_UART_DISABLE_INTS(port) SIR_UART_CLEAR_IER(port, 0xF) | ||
109 | #define SIR_UART_STOP_TX(port) do { SIR_UART_PUT_LSR(port, TFI); SIR_UART_CLEAR_IER(port, ETBEI); } while (0) | ||
110 | #define SIR_UART_ENABLE_TX(port) do { SIR_UART_SET_IER(port, ETBEI); } while (0) | ||
111 | #define SIR_UART_STOP_RX(port) do { SIR_UART_CLEAR_IER(port, ERBFI); } while (0) | ||
112 | #define SIR_UART_ENABLE_RX(port) do { SIR_UART_SET_IER(port, ERBFI); } while (0) | ||
113 | #else | ||
114 | |||
115 | #define SIR_UART_GET_IIR(port) bfin_read16((port)->membase + OFFSET_IIR) | ||
116 | #define SIR_UART_GET_IER(port) bfin_read16((port)->membase + OFFSET_IER) | ||
117 | #define SIR_UART_PUT_IER(port, v) bfin_write16(((port)->membase + OFFSET_IER), v) | ||
118 | |||
119 | #define SIR_UART_SET_DLAB(port) do { SIR_UART_PUT_LCR(port, SIR_UART_GET_LCR(port) | DLAB); } while (0) | ||
120 | #define SIR_UART_CLEAR_DLAB(port) do { SIR_UART_PUT_LCR(port, SIR_UART_GET_LCR(port) & ~DLAB); } while (0) | ||
121 | |||
122 | #define SIR_UART_ENABLE_INTS(port, v) SIR_UART_PUT_IER(port, v) | ||
123 | #define SIR_UART_DISABLE_INTS(port) SIR_UART_PUT_IER(port, 0) | ||
124 | #define SIR_UART_STOP_TX(port) do { SIR_UART_PUT_IER(port, SIR_UART_GET_IER(port) & ~ETBEI); } while (0) | ||
125 | #define SIR_UART_ENABLE_TX(port) do { SIR_UART_PUT_IER(port, SIR_UART_GET_IER(port) | ETBEI); } while (0) | ||
126 | #define SIR_UART_STOP_RX(port) do { SIR_UART_PUT_IER(port, SIR_UART_GET_IER(port) & ~ERBFI); } while (0) | ||
127 | #define SIR_UART_ENABLE_RX(port) do { SIR_UART_PUT_IER(port, SIR_UART_GET_IER(port) | ERBFI); } while (0) | ||
128 | |||
129 | static inline unsigned int SIR_UART_GET_LSR(struct bfin_sir_port *port) | ||
130 | { | ||
131 | unsigned int lsr = bfin_read16(port->membase + OFFSET_LSR); | ||
132 | port->lsr |= (lsr & (BI|FE|PE|OE)); | ||
133 | return lsr | port->lsr; | ||
134 | } | ||
135 | |||
136 | static inline void SIR_UART_CLEAR_LSR(struct bfin_sir_port *port) | ||
137 | { | ||
138 | port->lsr = 0; | ||
139 | bfin_read16(port->membase + OFFSET_LSR); | ||
140 | } | ||
141 | #endif | ||
142 | 89 | ||
143 | static const unsigned short per[][4] = { | 90 | static const unsigned short per[][4] = { |
144 | /* rx pin tx pin NULL uart_number */ | 91 | /* rx pin tx pin NULL uart_number */ |