Skip to content

Commit 50d833e

Browse files
committed
refactor fb & console mod structure
- move both modules to crate::drivers - no longer need `probe_fb_info` for each board
1 parent 0778f8f commit 50d833e

File tree

19 files changed

+46
-117
lines changed

19 files changed

+46
-117
lines changed

kernel/src/arch/aarch64/board/raspi3/mod.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@
33
use bcm2837::{addr::bus_to_phys, atags::Atags};
44

55
pub mod emmc;
6-
#[path = "../../../../drivers/gpu/fb.rs"]
7-
pub mod fb;
86
pub mod irq;
97
pub mod mailbox;
108
pub mod serial;
119
pub mod timer;
1210

13-
use fb::{ColorDepth, ColorFormat, FramebufferInfo, FramebufferResult};
11+
use crate::drivers::gpu::fb::{self, ColorDepth, ColorFormat, FramebufferInfo, FramebufferResult};
1412

1513
/// Initialize serial port before other initializations.
1614
pub fn init_serial_early() {
@@ -20,8 +18,9 @@ pub fn init_serial_early() {
2018

2119
/// Initialize raspi3 drivers
2220
pub fn init_driver() {
23-
#[cfg(not(feature = "nographic"))]
24-
fb::init();
21+
if let Ok(fb_info) = probe_fb_info(0, 0, 0) {
22+
fb::init(fb_info);
23+
}
2524
timer::init();
2625
emmc::init();
2726
}
@@ -40,7 +39,7 @@ pub fn probe_memory() -> Option<(usize, usize)> {
4039
None
4140
}
4241

43-
pub fn probe_fb_info(width: u32, height: u32, depth: u32) -> FramebufferResult {
42+
fn probe_fb_info(width: u32, height: u32, depth: u32) -> FramebufferResult {
4443
let (width, height) = if width == 0 || height == 0 {
4544
mailbox::framebuffer_get_physical_size()?
4645
} else {

kernel/src/arch/aarch64/driver/mod.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
//! ARM64 drivers
22
3-
use super::board;
4-
5-
pub use self::board::fb;
63
pub use self::board::serial;
7-
#[path = "../../../drivers/console/mod.rs"]
8-
pub mod console;
4+
use super::board;
95

106
/// Initialize ARM64 common drivers
117
pub fn init() {
128
board::init_driver();
13-
console::init();
9+
crate::drivers::console::init();
1410
}

kernel/src/arch/aarch64/io.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Input/output for aarch64.
22
3-
use super::driver::console::CONSOLE;
43
use super::driver::serial::*;
4+
use crate::drivers::console::CONSOLE;
55
use core::fmt::{Arguments, Write};
66

77
pub fn getchar() -> char {

kernel/src/arch/mipsel/board/malta/mod.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
use crate::drivers::bus::pci;
2+
use crate::drivers::gpu::fb::{self, FramebufferInfo};
23
use alloc::string::String;
34
use mips::registers::cp0;
45

5-
#[path = "../../../../drivers/console/mod.rs"]
6-
pub mod console;
76
pub mod consts;
8-
#[path = "../../../../drivers/gpu/fb.rs"]
9-
pub mod fb;
107
#[path = "../../../../drivers/serial/ti_16c550c.rs"]
118
pub mod serial;
129
#[path = "../../../../drivers/gpu/qemu_stdvga.rs"]
1310
pub mod vga;
1411

15-
use fb::FramebufferInfo;
16-
1712
/// Device tree bytes
1813
pub static DTB: &'static [u8] = include_bytes!("device.dtb");
1914

@@ -33,11 +28,8 @@ pub fn init_driver() {
3328
// TODO: add possibly more drivers
3429
vga::init(0xbbe00000, 0xb2050000, 800, 600);
3530
pci::init();
36-
fb::init();
37-
}
3831

39-
pub fn probe_fb_info(_width: u32, _height: u32, _depth: u32) -> fb::FramebufferResult {
40-
Ok(FramebufferInfo {
32+
let fb_info = FramebufferInfo {
4133
xres: 800,
4234
yres: 600,
4335
xres_virtual: 800,
@@ -49,5 +41,6 @@ pub fn probe_fb_info(_width: u32, _height: u32, _depth: u32) -> fb::FramebufferR
4941
paddr: 0xb0000000,
5042
vaddr: 0xb0000000,
5143
screen_size: 800 * 600,
52-
})
44+
};
45+
fb::init(fb_info);
5346
}
Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
use alloc::string::String;
2-
3-
#[path = "../../../../drivers/console/mod.rs"]
4-
pub mod console;
51
pub mod consts;
6-
#[path = "../../../../drivers/gpu/fb.rs"]
7-
pub mod fb;
82
#[path = "../../../../drivers/serial/16550_reg.rs"]
93
pub mod serial;
104

@@ -22,7 +16,3 @@ pub fn init_driver() {
2216
// TODO: add possibly more drivers
2317
// timer::init();
2418
}
25-
26-
pub fn probe_fb_info(_width: u32, _height: u32, _depth: u32) -> fb::FramebufferResult {
27-
Err(String::from("Framebuffer not usable on mipssim board"))
28-
}
Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,9 @@
1-
use alloc::string::String;
1+
use crate::drivers::gpu::fb::{self, FramebufferInfo};
22

3-
#[path = "../../../../drivers/console/mod.rs"]
4-
pub mod console;
53
pub mod consts;
6-
#[path = "../../../../drivers/gpu/fb.rs"]
7-
pub mod fb;
84
#[path = "../../../../drivers/serial/simple_uart.rs"]
95
pub mod serial;
106

11-
use fb::FramebufferInfo;
12-
use fb::FramebufferResult;
13-
147
/// Device tree bytes
158
pub static DTB: &'static [u8] = include_bytes!("device.dtb");
169

@@ -24,11 +17,8 @@ pub fn init_serial_early() {
2417
pub fn init_driver() {
2518
// TODO: add possibly more drivers
2619
// timer::init();
27-
fb::init();
28-
}
2920

30-
pub fn probe_fb_info(width: u32, height: u32, depth: u32) -> FramebufferResult {
31-
Ok(FramebufferInfo {
21+
let fb_info = FramebufferInfo {
3222
xres: 800,
3323
yres: 600,
3424
xres_virtual: 800,
@@ -40,5 +30,6 @@ pub fn probe_fb_info(width: u32, height: u32, depth: u32) -> FramebufferResult {
4030
paddr: 0xa2000000,
4131
vaddr: 0xa2000000,
4232
screen_size: 800 * 600,
43-
})
33+
};
34+
fb::init(fb_info);
4435
}

kernel/src/arch/mipsel/driver/mod.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,10 @@
22
33
use super::board;
44

5-
pub use self::board::fb;
65
pub use self::board::serial;
7-
#[path = "../../../drivers/console/mod.rs"]
8-
pub mod console;
96

107
/// Initialize common drivers
118
pub fn init() {
129
board::init_driver();
13-
console::init();
14-
if let Some(con) = console::CONSOLE.lock().as_mut() {
15-
con.clear();
16-
}
10+
crate::drivers::console::init();
1711
}

kernel/src/arch/mipsel/io.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Input/output for mipsel.
22
3-
use super::driver::console::CONSOLE;
43
use super::driver::serial::*;
4+
use crate::drivers::console::CONSOLE;
55
use core::fmt::{Arguments, Write};
66

77
pub fn getchar() -> char {

kernel/src/arch/riscv32/board/u540/mod.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
#[path = "../../../../drivers/gpu/fb.rs"]
2-
pub mod fb;
3-
41
use super::consts::KERNEL_OFFSET;
52
use crate::memory::phys_to_virt;
63

@@ -27,7 +24,3 @@ pub unsafe fn enable_serial_interrupt() {
2724
const UART_RXWM: u8 = 0x2;
2825
SERIAL_BASE.add(UART_REG_IE).write_volatile(UART_RXWM);
2926
}
30-
31-
pub fn probe_fb_info(_width: u32, _height: u32, _depth: u32) -> fb::FramebufferResult {
32-
unimplemented!()
33-
}

kernel/src/arch/riscv32/board/virt/mod.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
#[path = "../../../../drivers/gpu/fb.rs"]
2-
pub mod fb;
3-
41
use crate::memory::phys_to_virt;
52

63
/// Mask all external interrupt except serial.
@@ -19,7 +16,3 @@ pub unsafe fn enable_serial_interrupt() {
1916
UART16550.add(4).write_volatile(0x0B);
2017
UART16550.add(1).write_volatile(0x01);
2118
}
22-
23-
pub fn probe_fb_info(_width: u32, _height: u32, _depth: u32) -> fb::FramebufferResult {
24-
unimplemented!()
25-
}

0 commit comments

Comments
 (0)