diff --git a/kernel/src/arch/aarch64/board/raspi3/mod.rs b/kernel/src/arch/aarch64/board/raspi3/mod.rs index 0480e35..3caf828 100644 --- a/kernel/src/arch/aarch64/board/raspi3/mod.rs +++ b/kernel/src/arch/aarch64/board/raspi3/mod.rs @@ -78,5 +78,10 @@ pub fn probe_fb_info(width: u32, height: u32, depth: u32) -> FramebufferResult { ))?; } - Ok((info, fb::ColorConfig::BGRA8888, vaddr)) + let color_config = match info.depth { + 16 => ColorConfig::RGB565, + 32 => ColorConfig::BGRA8888, + _ => Err(format!("unsupported color depth {}", info.depth))?, + }; + Ok((info, color_config, vaddr)) } diff --git a/kernel/src/drivers/console/mod.rs b/kernel/src/drivers/console/mod.rs index 853cce0..fb06376 100644 --- a/kernel/src/drivers/console/mod.rs +++ b/kernel/src/drivers/console/mod.rs @@ -28,7 +28,7 @@ pub struct ConsoleChar { impl Default for ConsoleChar { fn default() -> Self { ConsoleChar { - ascii_char: 0, + ascii_char: b' ', attr: CharacterAttribute::default(), } } @@ -152,7 +152,7 @@ impl Console { fn new_line(&mut self) { let attr_blank = ConsoleChar { - ascii_char: 0, + ascii_char: b' ', attr: self.parser.char_attribute(), }; for j in self.col..self.buf.num_col { diff --git a/kernel/src/util/escape_parser.rs b/kernel/src/util/escape_parser.rs index 472f437..38b9269 100644 --- a/kernel/src/util/escape_parser.rs +++ b/kernel/src/util/escape_parser.rs @@ -156,8 +156,12 @@ impl EscapeParser { } let csi = CSI::new(byte, &self.params); if csi == CSI::SGR { - for ¶m in self.params.iter() { - self.char_attr.apply_sgr(param); + if self.params.is_empty() { + self.char_attr.apply_sgr(0); + } else { + for ¶m in self.params.iter() { + self.char_attr.apply_sgr(param); + } } } self.status = ParseStatus::Text;