/* * Copyright (c) 2024, Sönke Holz * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel::DeviceTree { class Management { public: static void initialize(); static Management& the(); static ErrorOr register_driver(NonnullOwnPtr&&); ErrorOr scan_node_for_devices(::DeviceTree::DeviceTreeNodeView const& node); private: static bool attach_device_to_driver(Device&, Driver const&, StringView compatible_entry); HashMap> m_drivers; HashMap<::DeviceTree::DeviceTreeNodeView const*, Device> m_devices; }; }