xref: /haiku/headers/private/kernel/arch/arm/arch_uart_pl011.h (revision 899e0ef82b5624ace2ccfa5f5a58c8ebee54aaef)
1 /*
2  * Copyright 2011-2021 Haiku, Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Alexander von Gluck, kallisti5@unixzen.com
7  */
8 #ifndef __DEV_UART_PL011_H
9 #define __DEV_UART_PL011_H
10 
11 
12 #include <sys/types.h>
13 
14 #include <SupportDefs.h>
15 
16 #include <arch/generic/debug_uart.h>
17 
18 
19 #define UART_KIND_PL011 "pl011"
20 
21 
22 class ArchUARTPL011 : public DebugUART {
23 public:
24 							ArchUARTPL011(addr_t base, int64 clock);
25 							~ArchUARTPL011();
26 
27 			void			InitEarly();
28 			void			InitPort(uint32 baud);
29 
30 			void			Enable();
31 			void			Disable();
32 
33 			int				PutChar(char c);
34 			int				GetChar(bool wait);
35 
36 			void			FlushTx();
37 			void			FlushRx();
38 
39 private:
40 			void			Out32(int reg, uint32 value);
41 			uint32			In32(int reg);
42 	virtual	void			Barrier();
43 };
44 
45 
46 ArchUARTPL011 *arch_get_uart_pl011(addr_t base, int64 clock);
47 
48 
49 #endif
50