31 lines
1.5 KiB
Zig
31 lines
1.5 KiB
Zig
//! /system/services/fdt — the devicetree discovery service: the ARM twin of the
|
|
//! acpi service (docs/discovery.md — firmware neutrality). **Placeholder: not
|
|
//! implemented.** It exists so the build's `-Ddiscovery` option has both of its
|
|
//! values from day one; the implementation lands with the Raspberry Pi
|
|
//! bring-up (docs/arm.md).
|
|
//!
|
|
//! What it becomes: the per-firmware discoverer for boots that hand over a
|
|
//! flattened device tree instead of ACPI tables. It claims the
|
|
//! `devicetree-blob` node the kernel publishes (the FDT the loader received),
|
|
//! walks the tree — pure data, no bytecode, so unlike the acpi service it
|
|
//! needs no port grant and no interpreter — and, like any bus-shaped driver:
|
|
//! `device_register`s what it finds (containment against the blob node's
|
|
//! recorded apertures), reports each child to the device manager
|
|
//! (`child_added`, identity = the node's `compatible` string), and stays
|
|
//! resident under the manager's supervision (hello, restart, the usual
|
|
//! contract).
|
|
//!
|
|
//! Known prerequisite recorded in docs/discovery.md: `DeviceDescriptor`'s 8-byte `hid`
|
|
//! cannot hold an FDT `compatible` string ("brcm,bcm2835-aux-uart") — identity
|
|
//! widens before this file grows a body.
|
|
|
|
const runtime = @import("runtime");
|
|
|
|
pub fn main(init: runtime.process.Init) void {
|
|
_ = init;
|
|
// Not implemented: exit cleanly and silently (a bare spawn by the
|
|
// initial-ramdisk sweep must not derange other tests' markers). The
|
|
// supervisor reads a clean exit as "meant to stop" — correct for a
|
|
// placeholder.
|
|
}
|