History log of /haiku/src/system/boot/platform/efi/dtb.cpp
Revision Date Author Comments
# b9cca28d 22-Jun-2023 David Karoly <karolyd577@gmail.com>

boot: implement skip-init when detecting UART from FDT

Change-Id: I012c6238b083197c8e268185904aa0ecf6641ba3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6638
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# b965b55d 12-Mar-2023 Alexander von Gluck IV <kallisti5@unixzen.com>

efi/serial: re-init serial after efi detatchment

* This prevents haiku from "messing" with the gUART until
EFI boot services are exiting.
* The previous design meant that our loader started fiddling
with the gUART while EFI BIOS services were still being
used. On the SiFive, this broke serial output.
* Now, we guard on serial_init if EFI is unavailable, and
only fallback to direct UART usage when EFI is no longer
available.
* tldr; we're more closely managing serial across architectures
* serial_init use EFI and init it
* kernel_serial_handoff, stop using EFI
* serial_init, oh no EFI. Use gUART and Init it
* one gap is likely if no serial is available in EFI, but I
haven't seen that yet.

Change-Id: I644b51e4912272110435d288a95517d43a76740d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6200
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>


# 2435e24c 03-Jan-2023 Alexander von Gluck IV <kallisti5@unixzen.com>

efi/dtb: Search for snps,dw-apb-uart on all architectures

* This is actually a generic Synopsys DesignWare ABP UART
which can be found on riscv boards like the StarFive as
well as ARM. Just make generic.

Change-Id: If3c047560d66ebb8a76410c55c22e216cbf5d4e2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5978
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Reviewed-by: David Karoly <karolyd577@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# fe2b6d77 09-Aug-2022 David Karoly <karolyd577@gmail.com>

arm: detect SoC timer from FDT for OMAP3 and PXA

Change-Id: Ib03a11f016cb937d748d2696a17158e17c86e317
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5522
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: David Karoly <karolyd577@gmail.com>


# 0404f954 08-Aug-2022 David Karoly <karolyd577@gmail.com>

boot/efi/dtb: dump PCI interrupt map

see:
https://www.kernel.org/doc/Documentation/devicetree/bindings/pci/host-generic-pci.txt
https://www.devicetree.org/open-firmware/practice/imap/imap0_9d.pdf

Change-Id: Iba53457384d6330f99ac0b3b6b2894da83471c48
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5537
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>


# f5aba47e 08-Aug-2022 David Karoly <karolyd577@gmail.com>

boot/efi/dtb: code cleanup for FDT dump

* conditional compile for dump_fdt() with #ifdef
* rename functions according to coding standard
* use dprintf() for printing

Change-Id: Ie486739d87f1cb9a005188a46a43f470b6000319
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5536
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>


# 6a1f9758 23-Jul-2022 David Karoly <karolyd577@gmail.com>

arm: move SPI interrupt offset calculation to FDT code

Most common values for interrupt-cells are 1 or 2.
- one cell: the single cell defines the index of the interrupt
within the controller.
- two cells: the first cell defines the index of the interrupt
within the controller, while the second cell is specifies
interrupt flags like active-high/active-low, edge triggered
or level-sensitive.

ARM Generic Interrupt Controller uses 3 cells:
- the 1st cell is the interrupt type: 0 for SPI, 1 for PPI
- the 2nd cell contains the interrupt number
- the 3rd cell contains interrupt flags, similarly to the 2-cell format

SPI interrupts are numbered from 0 in the device tree but
they start from 32 on the GIC so an offset should be applied.

On the other hand, ACPI tables contain interrupt numbers
as they are expected by the GIC so no offset should be applied
when interrupts are read from ACPI.

see:
https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/arm%2Cgic.txt
https://developer.arm.com/documentation/198123/0301/Arm-CoreLink-GIC-fundamentals

Change-Id: Ia41371bd965347f89c17d62e391480d7b2083bae
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5490
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 17f0f4b6 30-Mar-2022 milek7 <me@milek7.pl>

arm64: Discover UART device from ACPI.

Change-Id: I4e97b05dcfcaf6abddff81fbbf676c38fe337775
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5271
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 2b5b2284 08-Apr-2022 David Karoly <karolyd577@gmail.com>

boot/efi: implement ranges property for simple-bus

see Devicetree Specification, section 2.3.8

Change-Id: I788bbaa67c8e8f9b57f138418eb1c3131bbe2010
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5188
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# fdaa57a7 04-Apr-2022 David Karoly <karolyd577@gmail.com>

boot/efi: handle /chosen/stdout-path

Change-Id: I08ebadf274448e1319cc8b0666beaf709382c00f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5143
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 476346ac 26-Mar-2022 urnenfeld <oliver.ruiz.dorantes@gmail.com>

arm64: Enable DTB handling, Introduce LINFlex UART driver

Change-Id: Ib643545271700e6ff4a4037d0e797355194927e7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5149
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: David Karoly <karolyd577@gmail.com>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>


# 5ba6ef84 22-Mar-2022 David Karoly <karolyd577@gmail.com>

boot/efi: use 8250 driver for bcm2835 mini-UART

Change-Id: I1f42447e537ea7522ac299f028d530beb5067350
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5142
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# 9d65dbf1 22-Mar-2022 David Karoly <karolyd577@gmail.com>

boot/efi: rework address-cells and size-cells handling

see Devicetree Specification,
section 2.3.5 #address-cells and #size-cells

The #address-cells and #size-cells properties may be used in any
device node that has children in the devicetree hierarchy and
describes how child device nodes should be addressed.

The #address-cells and #size-cells properties are not inherited from
ancestors in the devicetree. They shall be explicitly defined.

If missing, a client program should assume a default value of 2
for #address-cells, and a value of 1 for #size-cells.

Change-Id: Iafed49358540f8ac7aa673c3dc0191c9b580250b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5144
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# 2d80f9e2 14-Mar-2022 Adrien Destugues <pulkomandy@pulkomandy.tk>

EFI: add support for dw-apb-uart used on Allwinner A10 SoC

Yet another 16550 clone under a different name. Why does device-tree
have a "compatible" setting if everyone puts a different name for the
same thing?

Change-Id: Ia889a527a36739df747ba48d4606c09764703607
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5103
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# ef410594 14-Mar-2022 Adrien Destugues <pulkomandy@pulkomandy.tk>

EFI: get address-cells and size-cells from the device tree

They were hardcoded to 2, which is not correct on all devices. As a
result, getting addresses and sizes on pure 32bit devices would fail.

Change-Id: Icf542c9e8d6b7136219014fe08dd601387de4762
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5102
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# f991c7ee 24-Jan-2022 David Karoly <karolyd577@gmail.com>

boot/efi/dtb: fix signedness of dtb_get_interrupt_parent()

Change-Id: Ic3a28ff003cb82dc9166200594dbf3fc58e76b51
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4884
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 023a3602 13-Dec-2021 David Karoly <karolyd577@gmail.com>

boot/efi: introduce arch_dtb

Change-Id: Iff9e4198aca706097889faf51e9559fe551126ad
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4782
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# 8ca0f03d 08-Nov-2021 X512 <danger_mail@list.ru>

riscv64/smp: Implement multi-processor support

* Working under qemu smp 1,2+
* Working on SiFive Unmatched
* x86_64 efi not broken by smp_boot_other_cpus change

Change-Id: I32ebc17913e46ed082be9ade8f56448bbf12f16e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4705
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# 98296c4a 11-Dec-2021 X512 <danger_mail@list.ru>

haiku_loader.efi: fix build for riscv64

Change-Id: I83f4b45ea950e81fdd712644433266401c0747bd
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4774
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 354655e1 02-Dec-2021 David Karoly <karolyd577@gmail.com>

boot/efi/dtb: implement interrupt controller detection

Change-Id: I045a94c5bcb7c16297bc6fdd1fa2981e5b3f3a62
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4756
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 19960ba6 28-Nov-2021 David Karoly <karolyd577@gmail.com>

boot/efi/dtb: implement interrupt-cells handling

Change-Id: Ia95c2cfecde27cdd6d5a8f0556da7e387eecb07c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4742
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 326b5263 24-Nov-2021 David Karoly <karolyd577@gmail.com>

boot/efi/dtb: implement clock frequency resolution for PL011

Factor out the code for clock frequency lookup to a separate function.

PL011 does not have clock-frequency property, it has a clocks property
instead, containing a phandle of the apb clock.

Change-Id: I5cbe2b4b2421afe1924c2804002ceef83ce37ef9
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4734
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# ff9497b5 24-Nov-2021 David Karoly <karolyd577@gmail.com>

boot/efi/dtb: require exact match for PL011 in device tree

Don't match PL011 for arm,primecell compatibility string
as it can indicate other peripherals.

Primecell peripherals have the generic "arm,primcecell"
name as well as a specific name in the format of "arm,pl???"

see:
https://www.kernel.org/doc/Documentation/devicetree/bindings/arm/primecell.txt

Change-Id: Ida6450e9e71dac834770d558e4ab95c5574970cb
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4733
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 4b5c7fe7 06-Nov-2021 Alexander von Gluck IV <kallisti5@unixzen.com>

system/boot: add optional alignment to kernel_args_malloc

* A few things need alignment, instead of forcing them all
to align themselves, support alignment of the kernel_args
* Default of 1 is "no alignment"

Change-Id: Iff05dcec8adaa963c8444d701464ea11616062f6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4698
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# c9d6d52b 05-Nov-2021 Alexander von Gluck IV <kallisti5@unixzen.com>

libfdt: Upgrade to 1.6.1 plus a few commits

* Catch errors and report them in bus parsing code
* Align the FDT kernel_arg to 8-bytes
* we still choose BSD-2-clause :-)

Change-Id: If2a88b7f131025ff1c1a2d903ed52f039e5bbcb5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4694
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# e28f7b8f 20-Aug-2021 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

Fixup dtb.cpp: For ARM64 we use official __aarch64__ define

It is easier if we switch compiler and reduces confusion,
other than the confusing name itself.


# a0368755 20-Aug-2021 Alexander von Gluck IV <kallisti5@unixzen.com>

platform/efi: platform_cpu_info

* This models the CpuInfo into a cross-architecture
platform_cpu_info
* Originally I was looking at merging this with "arch_cpu_info"
however that is "overall cpu" while CpuInfo is "indivial core
information" packed into an array.
* Since every dtb platform will report individual cores in fdt,
having a common cpu core info struct with at minimum the core
id makes sense.
* This could likely be refined further to some kind of core info
packed inside of arch_cpu_info, but this will fix arm,arm64,etc
for now until someone wants to dive into that.

Change-Id: Ia18a352403cd0da7130c1e637fc205d4311478ef
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4363
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# d637e0be 17-Aug-2021 Alexander von Gluck IV <kallisti5@unixzen.com>

system/kernel: Rework uart management

Change-Id: I6cb31760519c8ba4542d217d6e68439602eda558
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4356
Reviewed-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# 5855a8e3 17-Aug-2021 Przemysław Buczkowski <prem@prem.moe>

riscv: fix typo frequrency -> frequency

Change-Id: I7a2ed220ad96a9b18bff3ac5c115592c8ba87d89
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4334
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>


# 1648ab52 15-Aug-2021 Alexander von Gluck IV <kallisti5@unixzen.com>

kernel/uart: Clean up uarts, make calling convention consistent

Change-Id: I36ef92ef13edb0b006344db74e9d1b3ae52e0127
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4327
Reviewed-by: X512 <danger_mail@list.ru>
Reviewed-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# f1fa58bf 25-Jul-2021 X512 <danger_mail@list.ru>

haiku_loader.efi: update for riscv64

* Added MMU page table generation.
* Added optional FDT device detection and passing to kernel.
* Add platform address translation stubs to bios_ia32
to drop EFI ifdefs

Change-Id: I89257c93c84404fd988f621b29f927ed0df3c3b1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4304
Reviewed-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# cd9b0eed 14-May-2021 Han Pengfei <pengphei@qq.com>

efi/dtb: Fix dtb malloc failed for kernel args

kernel_args_malloc should be used after heap_init, or it will failed
when we new some region instance.

Change-Id: I457057b1e0ff6d4def9e101485e38fec1848d8de
Signed-off-by: Han Pengfei <pengphei@qq.com>
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3912
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 569564c0 21-Dec-2020 Alexander von Gluck IV <kallisti5@unixzen.com>

efi/dtb: Find potential FDT on UEFI

* Makes our UEFI bootloader somewhat FDT/DTB aware on all
architectures.
* Will report when an FDT is found, and provide it to kernels
that want it.

Change-Id: I90324fc0579a9c835e60568fa9b654c2df0aba27
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3543
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>