14class Uart_s3c :
public Uart
19 Type_24xx, Type_64xx, Type_s5pv210,
22 Uart_type type()
const {
return _type; }
25 explicit Uart_s3c(Uart_type type) : _type(type) {}
26 explicit Uart_s3c(Uart_type type,
unsigned ) : _type(type) {}
27 bool startup(Io_register_block
const *)
override;
29 bool change_mode(Transfer_mode m, Baud_rate r)
override;
31 void wait_tx_done()
const;
32 inline void out_char(
char c)
const;
33 int write(
char const *s,
unsigned long count,
34 bool blocking =
true)
const override;
38 int get_char(
bool blocking =
true)
const override;
41 virtual void ack_rx_irq()
const = 0;
42 virtual void wait_for_empty_tx_fifo()
const = 0;
43 virtual unsigned is_rx_fifo_non_empty()
const = 0;
44 virtual unsigned is_tx_fifo_not_full()
const = 0;
50class Uart_s3c2410 :
public Uart_s3c
53 Uart_s3c2410() : Uart_s3c(Type_24xx) {}
54 explicit Uart_s3c2410(
unsigned base_rate) : Uart_s3c(Type_24xx, base_rate) {}
57 void ack_rx_irq()
const override {}
58 void wait_for_empty_tx_fifo()
const override;
59 unsigned is_rx_fifo_non_empty()
const override;
60 unsigned is_tx_fifo_not_full()
const override;
62 void auto_flow_control(
bool on);
65class Uart_s3c64xx :
public Uart_s3c
68 Uart_s3c64xx() : Uart_s3c(Type_64xx) {}
69 explicit Uart_s3c64xx(
unsigned base_rate) : Uart_s3c(Type_64xx, base_rate) {}
72 void ack_rx_irq()
const override;
73 void wait_for_empty_tx_fifo()
const override;
74 unsigned is_rx_fifo_non_empty()
const override;
75 unsigned is_tx_fifo_not_full()
const override;
78class Uart_s5pv210 :
public Uart_s3c
81 Uart_s5pv210() : Uart_s3c(Type_s5pv210) {}
82 explicit Uart_s5pv210(
unsigned base_rate) : Uart_s3c(Type_s5pv210, base_rate) {}
85 void ack_rx_irq()
const override;
86 void wait_for_empty_tx_fifo()
const override;
87 unsigned is_rx_fifo_non_empty()
const override;
88 unsigned is_tx_fifo_not_full()
const override;
virtual void shutdown()=0
Terminate the UART driver.
virtual int char_avail() const =0
Check if there is at least one character available for reading from the UART.
L4 low-level kernel interface.