L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
uart_pl011.h
1/*
2 * Copyright (C) 2009 Technische Universität Dresden.
3 * Copyright (C) 2023-2024 Kernkonzept GmbH.
4 * Author(s): Adam Lackorzynski <adam@os.inf.tu-dresden.de>
5 *
6 * License: see LICENSE.spdx (in this directory or the directories above)
7 */
8#pragma once
9
10#include "uart_base.h"
11
12namespace L4 {
13
14class Uart_pl011 : public Uart
15{
16public:
18 Uart_pl011(unsigned freq) : _freq(freq) {}
19 bool startup(Io_register_block const *) override;
20 void shutdown() override;
21 bool change_mode(Transfer_mode m, Baud_rate r) override;
22 int tx_avail() const;
23 void wait_tx_done() const;
24 inline void out_char(char c) const;
25 int write(char const *s, unsigned long count,
26 bool blocking = true) const override;
27
28 bool enable_rx_irq(bool enable) override;
29 int char_avail() const override;
30 int get_char(bool blocking = true) const override;
31
32private:
33 void set_rate(Baud_rate r);
34 unsigned _freq;
35};
36
37} // namespace L4
Uart driver abstraction.
Definition uart_base.h:21
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.