/* * Copyright (c) 2023, Jelle Raaijmakers * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Kernel::Audio::IntelHDA { class Controller; class InterruptHandler : public PCI::IRQHandler , public RefCounted { public: static ErrorOr> create(Controller& controller) { return adopt_nonnull_ref_or_enomem(new (nothrow) InterruptHandler(controller)); } // ^PCI::IRQHandler virtual StringView purpose() const override { return "IntelHDA IRQ Handler"sv; } private: InterruptHandler(Controller& controller); // ^PCI::IRQHandler virtual bool handle_irq(RegisterState const&) override; Controller& m_controller; }; }