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 0000000..c717004 Binary files /dev/null and b/etc/bcm2837-rpi-3-b-plus.dtb differ diff --git a/kernel/src/arch/aarch64/mach_rpi3/mod.rs b/kernel/src/arch/aarch64/mach_rpi3/mod.rs index a7c6d79..7a51fae 100644 --- a/kernel/src/arch/aarch64/mach_rpi3/mod.rs +++ b/kernel/src/arch/aarch64/mach_rpi3/mod.rs @@ -4,6 +4,7 @@ use crate::dev::{ serial::{pl011::Pl011, SerialDevice}, Device, }; +use crate::fs::devfs::{self, CharDeviceType}; use crate::mem::phys; use libsys::error::Errno; @@ -37,6 +38,7 @@ pub fn init_board() -> 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)) }; }