uart.hpp
00001 #if !defined(__UART_HPP__)
00002 #define __UART_HPP__
00003
00004
00005
00006
00007 #include "core/drivers/serial/serial_driver.hpp"
00008 #include "uart_registers.hpp"
00009
00015 struct uart : public device_base, protected uart_registers
00016 {
00017 protected:
00018 l4_port_t iobase;
00019 serial_driver *driver;
00020
00021 public:
00022 uart(machine_base &machine, l4_port_t iobase, l4_irq_t irq, serial_driver *driver);
00023 virtual ~uart(void);
00024
00025
00026
00027
00028 virtual uint32_t read_ioport(l4_port_t port, access_size access_size);
00029 virtual int write_ioport(l4_port_t port, uint32_t data, access_size access_size);
00030
00031
00032
00033
00034 virtual int reset(void);
00035
00036 private:
00037 void assert_irq_id(interrupt_ids id);
00038 void clear_irq_id(void);
00039
00040 public:
00041 static device *create(machine_base &machine, config_node &device_node);
00042 };
00043
00044 #endif
00045
00046
00047