19 class Uart_s3c :
public Uart
24 Type_24xx, Type_64xx, Type_s5pv210,
27 Uart_type type()
const {
return _type; }
30 explicit Uart_s3c(Uart_type type) : _type(type) {}
31 explicit Uart_s3c(Uart_type type,
unsigned ) : _type(type) {}
32 bool startup(Io_register_block
const *)
override;
33 void shutdown()
override;
34 bool change_mode(Transfer_mode m, Baud_rate r)
override;
35 int get_char(
bool blocking =
true)
const override;
36 int char_avail()
const override;
38 void wait_tx_done()
const;
39 inline void out_char(
char c)
const;
40 int write(
char const *s,
unsigned long count,
41 bool blocking =
true)
const override;
45 virtual void ack_rx_irq()
const = 0;
46 virtual void wait_for_empty_tx_fifo()
const = 0;
47 virtual unsigned is_rx_fifo_non_empty()
const = 0;
48 virtual unsigned is_tx_fifo_not_full()
const = 0;
54 class Uart_s3c2410 :
public Uart_s3c
57 Uart_s3c2410() : Uart_s3c(Type_24xx) {}
58 explicit Uart_s3c2410(
unsigned base_rate) : Uart_s3c(Type_24xx, base_rate) {}
61 void ack_rx_irq()
const override {}
62 void wait_for_empty_tx_fifo()
const override;
63 unsigned is_rx_fifo_non_empty()
const override;
64 unsigned is_tx_fifo_not_full()
const override;
66 void auto_flow_control(
bool on);
69 class Uart_s3c64xx :
public Uart_s3c
72 Uart_s3c64xx() : Uart_s3c(Type_64xx) {}
73 explicit Uart_s3c64xx(
unsigned base_rate) : Uart_s3c(Type_64xx, base_rate) {}
76 void ack_rx_irq()
const override;
77 void wait_for_empty_tx_fifo()
const override;
78 unsigned is_rx_fifo_non_empty()
const override;
79 unsigned is_tx_fifo_not_full()
const override;
82 class Uart_s5pv210 :
public Uart_s3c
85 Uart_s5pv210() : Uart_s3c(Type_s5pv210) {}
86 explicit Uart_s5pv210(
unsigned base_rate) : Uart_s3c(Type_s5pv210, base_rate) {}
89 void ack_rx_irq()
const override;
90 void wait_for_empty_tx_fifo()
const override;
91 unsigned is_rx_fifo_non_empty()
const override;
92 unsigned is_tx_fifo_not_full()
const override;
L4 low-level kernel interface.