/* * Copyright (c) 2022, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include namespace Kernel { class AudioManagement { public: AudioManagement(); static AudioManagement& the(); static MajorNumber audio_type_major_number(); static MinorNumber generate_storage_minor_number(); bool initialize(); private: ErrorOr> determine_audio_device(PCI::DeviceIdentifier const& device_identifier) const; void enumerate_hardware_controllers(); SpinlockProtected, LockRank::None> m_controllers_list; }; }