L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
uart_bcm2835.h
1/*
2 * Copyright (C) 2026 Kernkonzept GmbH.
3 * Author(s): Jakub Jermar <jakub.jermar@kernkonzept.com>
4 *
5 * License: see LICENSE.spdx (in this directory or the directories above)
6 */
7
8#pragma once
9
10#include "uart_16550.h"
11
12namespace L4 {
13
14/*
15 * According to the BCM2835 ARM Peripherals document, the mini UART is not
16 * compatible with the 16550 UART, but has a 16550-like register layout.
17 * The document is known to have many errors, including the mini UART part, as
18 * described in this errata:
19 *
20 * https://elinux.org/BCM2835_datasheet_errata#p12
21 *
22 * Even from the errata the meaning of some bits in the IER is not very clear.
23 */
24class Uart_bcm2835 : public Uart_16550
25{
26public:
27 explicit Uart_bcm2835(unsigned long base_rate)
28 : Uart_16550(base_rate, 0, 8)
29 {}
30
31 bool reg_shift(unsigned char *shift) const override
32 {
33 *shift = 2;
34 return true;
35 }
36};
37
38} // namespace L4
L4 low-level kernel interface.