Device.h 795 B

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. * Copyright (c) 2020, Liav A. <liavalb@hotmail.co.il>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/Types.h>
  8. #include <Kernel/Bus/PCI/Definitions.h>
  9. namespace Kernel {
  10. class PCI::Device {
  11. public:
  12. Address pci_address() const { return m_pci_address; };
  13. virtual ~Device() = default;
  14. void enable_pin_based_interrupts() const;
  15. void disable_pin_based_interrupts() const;
  16. bool is_msi_capable() const;
  17. bool is_msix_capable() const;
  18. void enable_message_signalled_interrupts();
  19. void disable_message_signalled_interrupts();
  20. void enable_extended_message_signalled_interrupts();
  21. void disable_extended_message_signalled_interrupts();
  22. protected:
  23. explicit Device(Address pci_address);
  24. private:
  25. Address m_pci_address;
  26. };
  27. }