From 97c591f58f5a0f3a85714b2304ec720e46f1cef2 Mon Sep 17 00:00:00 2001 From: Mark Poliakov Date: Sun, 30 Jan 2022 17:15:28 +0200 Subject: [PATCH] fix: bcm2837 serial --- Makefile | 1 + etc/bcm2837-rpi-3-b-plus.dtb | Bin 0 -> 21025 bytes kernel/src/arch/aarch64/mach_rpi3/mod.rs | 2 ++ kernel/src/util.rs | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 etc/bcm2837-rpi-3-b-plus.dtb diff --git a/Makefile b/Makefile index 3aaee72..ee1c0e2 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,7 @@ endif ifeq ($(MACH),rpi3) QEMU_OPTS+=-kernel $(O)/kernel.bin \ -initrd $(O)/initrd.img \ + -dtb etc/bcm2837-rpi-3-b-plus.dtb \ -M raspi3b \ -serial mon:stdio \ -display none \ diff --git a/etc/bcm2837-rpi-3-b-plus.dtb b/etc/bcm2837-rpi-3-b-plus.dtb new file mode 100644 index 0000000000000000000000000000000000000000..c717004ef4197bd8138201df093d860e8af594b1 GIT binary patch literal 21025 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 i6l#2t$R}GwWIHnT Result<(), Errno> { unsafe { IRQCHIP.enable()?; UART.init_irqs()?; + devfs::add_char_device(&UART, CharDeviceType::TtySerial)?; EMMC.enable()?; } diff --git a/kernel/src/util.rs b/kernel/src/util.rs index 4a68a9f..e35c7ae 100644 --- a/kernel/src/util.rs +++ b/kernel/src/util.rs @@ -71,6 +71,6 @@ macro_rules! block { }}; ($cond:expr, $timeout:expr) => { - crate::block!($cond, $timeout, return Err(error::Errno::TimedOut)) + crate::block!($cond, $timeout, return Err(libsys::error::Errno::TimedOut)) }; }