2 * (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>
3 * economic rights: Technische Universität Dresden (Germany)
5 * This file is part of TUD:OS and distributed under the terms of the
6 * GNU General Public License 2.
7 * Please see the COPYING-GPL-2 file for details.
9 #ifndef L4_CXX_UART_imx_H__
10 #define L4_CXX_UART_imx_H__
12 #include "uart_base.h"
16 class Uart_imx : public Uart
19 enum platform_type { Type_imx21, Type_imx51 };
20 Uart_imx(int rx_irq, int tx_irq, enum platform_type type)
21 : Uart(rx_irq, tx_irq), _base(~0UL), _type(type) {}
22 bool startup(unsigned long base);
24 bool enable_rx_irq(bool enable = true);
25 bool enable_tx_irq(bool enable = true);
26 bool change_mode(Transfer_mode m, Baud_rate r);
27 int get_char(bool blocking = true) const;
28 int char_avail() const;
29 inline void out_char(char c) const;
30 int write(char const *s, unsigned long count) const;
34 enum platform_type _type;
36 inline unsigned long rd(unsigned long reg) const;
37 inline void wr(unsigned long reg, unsigned long val) const;
40 class Uart_imx21 : public Uart_imx
43 Uart_imx21(int rx_irq, int tx_irq)
44 : Uart_imx(rx_irq, tx_irq, Type_imx21) {}
47 class Uart_imx51 : public Uart_imx
50 Uart_imx51(int rx_irq, int tx_irq)
51 : Uart_imx(rx_irq, tx_irq, Type_imx51) {}