kernel/arm64: Add kernel support for Samsung UART
Tested on M1 MacBook Air. Change-Id: Idda9b2a168642b55a9e30336be1c4f4936670035 Reviewed-on: https://review.haiku-os.org/c/haiku/+/10487 Tested-by: Commit checker robot <[email protected]> Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
committed by
Adrien Destugues
parent
013f25498a
commit
e438946e25
@@ -38,4 +38,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
ArchUARTSamsung *arch_get_uart_samsung(addr_t base, int64 clock);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ KernelMergeObject kernel_arch_arm64.o :
|
|||||||
# arch_uart_8250_omap.cpp
|
# arch_uart_8250_omap.cpp
|
||||||
arch_uart_pl011.cpp
|
arch_uart_pl011.cpp
|
||||||
arch_uart_linflex.cpp
|
arch_uart_linflex.cpp
|
||||||
|
arch_uart_samsung.cpp
|
||||||
|
|
||||||
:
|
:
|
||||||
$(TARGET_KERNEL_PIC_CCFLAGS) -Wno-unused
|
$(TARGET_KERNEL_PIC_CCFLAGS) -Wno-unused
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
// #include <arch/arm/arch_uart_8250_omap.h>
|
// #include <arch/arm/arch_uart_8250_omap.h>
|
||||||
#include <arch/arm/arch_uart_pl011.h>
|
#include <arch/arm/arch_uart_pl011.h>
|
||||||
#include <arch/arm64/arch_uart_linflex.h>
|
#include <arch/arm64/arch_uart_linflex.h>
|
||||||
|
#include <arch/arm64/arch_uart_samsung.h>
|
||||||
#include <boot/kernel_args.h>
|
#include <boot/kernel_args.h>
|
||||||
#include <kernel.h>
|
#include <kernel.h>
|
||||||
#include <vm/vm.h>
|
#include <vm/vm.h>
|
||||||
@@ -114,6 +115,10 @@ arch_debug_console_init(kernel_args *args)
|
|||||||
sizeof(args->arch_args.uart.kind)) == 0) {
|
sizeof(args->arch_args.uart.kind)) == 0) {
|
||||||
sArchDebugUART = arch_get_uart_8250(args->arch_args.uart.regs.start,
|
sArchDebugUART = arch_get_uart_8250(args->arch_args.uart.regs.start,
|
||||||
args->arch_args.uart.clock);
|
args->arch_args.uart.clock);
|
||||||
|
} else if (strncmp(args->arch_args.uart.kind, UART_KIND_SAMSUNG,
|
||||||
|
sizeof(args->arch_args.uart.kind)) == 0) {
|
||||||
|
sArchDebugUART = arch_get_uart_samsung(args->arch_args.uart.regs.start,
|
||||||
|
args->arch_args.uart.clock);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Oh well.
|
// Oh well.
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include <arch/generic/debug_uart.h>
|
#include <arch/generic/debug_uart.h>
|
||||||
#include <arch/arm64/arch_uart_samsung.h>
|
#include <arch/arm64/arch_uart_samsung.h>
|
||||||
|
#include <new>
|
||||||
|
|
||||||
|
|
||||||
#define ULCON 0x00 // Line control
|
#define ULCON 0x00 // Line control
|
||||||
@@ -131,3 +132,12 @@ void
|
|||||||
ArchUARTSamsung::FlushRx()
|
ArchUARTSamsung::FlushRx()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ArchUARTSamsung*
|
||||||
|
arch_get_uart_samsung(addr_t base, int64 clock)
|
||||||
|
{
|
||||||
|
static char buffer[sizeof(ArchUARTSamsung)];
|
||||||
|
ArchUARTSamsung* uart = new(buffer) ArchUARTSamsung(base, clock);
|
||||||
|
return uart;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user