summaryrefslogtreecommitdiff
path: root/na/fdt/fdt.cc
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-05-13 15:50:37 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-05-13 15:50:37 +0800
commit7f92ecc3b1dd01dd12c72ba17bc8bf1652495d2c (patch)
treec85e3555994abaa418a9dd48a337210feb3eb12b /na/fdt/fdt.cc
parent11053d1cab4fcaac7bf8808bd51647875cee1bf3 (diff)
downloadlume-7f92ecc3b1dd01dd12c72ba17bc8bf1652495d2c.tar.gz
lume-7f92ecc3b1dd01dd12c72ba17bc8bf1652495d2c.tar.xz
feat: enhance UART driver and FDT parser with MMU support and default UART settings
Diffstat (limited to 'na/fdt/fdt.cc')
-rw-r--r--na/fdt/fdt.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/na/fdt/fdt.cc b/na/fdt/fdt.cc
index fbec245..d44ebda 100644
--- a/na/fdt/fdt.cc
+++ b/na/fdt/fdt.cc
@@ -247,9 +247,16 @@ void FdtManager::early_scan_uart(uint64 fdt_paddr, uint64 *uart_addr,
if (!uart_addr || !uart_size)
return;
+ auto set_default_uart = [uart_addr, uart_size]() {
+ *uart_addr = 0x10000000ULL;
+ *uart_size = 0x100;
+ };
+
const fdt_header *hdr = reinterpret_cast<const fdt_header *>(fdt_paddr);
- if (bswap32(hdr->magic) != FDT_MAGIC)
+ if (bswap32(hdr->magic) != FDT_MAGIC) {
+ set_default_uart();
return;
+ }
const uint8 *dt_struct =
reinterpret_cast<const uint8 *>(fdt_paddr) + bswap32(hdr->off_dt_struct);
@@ -343,8 +350,7 @@ void FdtManager::early_scan_uart(uint64 fdt_paddr, uint64 *uart_addr,
}
}
- *uart_addr = 0;
- *uart_size = 0;
+ set_default_uart();
}
/* ------------------------------------------------------------------ */