IOAccess.h 1012 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 <Kernel/Bus/PCI/Access.h>
  8. namespace Kernel {
  9. namespace PCI {
  10. class IOAccess final : public PCI::Access {
  11. public:
  12. static void initialize();
  13. protected:
  14. IOAccess();
  15. private:
  16. virtual void enumerate_hardware(Function<void(Address, ID)>) override;
  17. virtual uint32_t segment_count() const override { return 1; };
  18. virtual void write8_field(Address address, u32, u8) override final;
  19. virtual void write16_field(Address address, u32, u16) override final;
  20. virtual void write32_field(Address address, u32, u32) override final;
  21. virtual u8 read8_field(Address address, u32) override;
  22. virtual u16 read16_field(Address address, u32) override;
  23. virtual u32 read32_field(Address address, u32) override;
  24. virtual uint8_t segment_start_bus(u32) const override { return 0x0; }
  25. virtual uint8_t segment_end_bus(u32) const override { return 0xFF; }
  26. };
  27. }
  28. }