diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-05-13 15:50:37 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-05-13 15:50:37 +0800 |
| commit | 7f92ecc3b1dd01dd12c72ba17bc8bf1652495d2c (patch) | |
| tree | c85e3555994abaa418a9dd48a337210feb3eb12b /na/fdt | |
| parent | 11053d1cab4fcaac7bf8808bd51647875cee1bf3 (diff) | |
| download | lume-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')
| -rw-r--r-- | na/fdt/fdt.cc | 12 |
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(); } /* ------------------------------------------------------------------ */ |
