14 class 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;
28 void shutdown()
override;
29 bool change_mode(Transfer_mode m, Baud_rate r)
override;
30 int get_char(
bool blocking =
true)
const override;
31 int char_avail()
const override;
33 void wait_tx_done()
const;
34 inline void out_char(
char c)
const;
35 int write(
char const *s,
unsigned long count,
36 bool blocking =
true)
const override;
40 virtual void ack_rx_irq()
const = 0;
41 virtual void wait_for_empty_tx_fifo()
const = 0;
42 virtual unsigned is_rx_fifo_non_empty()
const = 0;
43 virtual unsigned is_tx_fifo_not_full()
const = 0;
49 class Uart_s3c2410 :
public Uart_s3c
52 Uart_s3c2410() : Uart_s3c(Type_24xx) {}
53 explicit Uart_s3c2410(
unsigned base_rate) : Uart_s3c(Type_24xx, base_rate) {}
56 void ack_rx_irq()
const override {}
57 void wait_for_empty_tx_fifo()
const override;
58 unsigned is_rx_fifo_non_empty()
const override;
59 unsigned is_tx_fifo_not_full()
const override;
61 void auto_flow_control(
bool on);
64 class Uart_s3c64xx :
public Uart_s3c
67 Uart_s3c64xx() : Uart_s3c(Type_64xx) {}
68 explicit Uart_s3c64xx(
unsigned base_rate) : Uart_s3c(Type_64xx, base_rate) {}
71 void ack_rx_irq()
const override;
72 void wait_for_empty_tx_fifo()
const override;
73 unsigned is_rx_fifo_non_empty()
const override;
74 unsigned is_tx_fifo_not_full()
const override;
77 class Uart_s5pv210 :
public Uart_s3c
80 Uart_s5pv210() : Uart_s3c(Type_s5pv210) {}
81 explicit Uart_s5pv210(
unsigned base_rate) : Uart_s3c(Type_s5pv210, base_rate) {}
84 void ack_rx_irq()
const override;
85 void wait_for_empty_tx_fifo()
const override;
86 unsigned is_rx_fifo_non_empty()
const override;
87 unsigned is_tx_fifo_not_full()
const override;
L4 low-level kernel interface.