diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/x86_64/arch/bus/isa.cpp | 58 | ||||
| -rw-r--r-- | arch/x86_64/arch/bus/isa.hpp | 10 |
2 files changed, 34 insertions, 34 deletions
diff --git a/arch/x86_64/arch/bus/isa.cpp b/arch/x86_64/arch/bus/isa.cpp index f0ed02f4..ee195519 100644 --- a/arch/x86_64/arch/bus/isa.cpp +++ b/arch/x86_64/arch/bus/isa.cpp @@ -10,37 +10,43 @@ namespace arch::bus { - isa::isa() - : kapi::devices::bus{"isa"} - {} - - auto isa::enumerate(kapi::devices::bus &) -> void - { - // NOTE: ISA does not support enumeration, but we need to fulfill the interface. - } - - auto isa::match(kapi::devices::device const & device, kapi::devices::driver const & driver) const - -> kstd::result<std::uint32_t> + namespace { - auto device_signature = device.as<isa_signature>(); - auto driver_claim = driver.as<isa_claim>(); - - if (!device_signature || !driver_claim) - { - return kstd::failure(kapi::devices::driver_match_errc::no_match); - } - - if (!std::ranges::contains(driver_claim->supported_names(), device_signature->isa_name())) + struct isa_protocol final : kapi::devices::bus_protocol { - return kstd::failure(kapi::devices::driver_match_errc::no_match); - } + auto enumerate(kapi::devices::bus &) -> void override + { + // NOTE: ISA does not support enumeration, but we need to fulfill the interface. + } + + [[nodiscard]] auto match(kapi::devices::device const & device, kapi::devices::driver const & driver) const + -> kstd::result<std::uint32_t> override + { + auto device_signature = device.as<isa_signature>(); + auto driver_claim = driver.as<isa_claim>(); + + if (!device_signature || !driver_claim) + { + return kstd::failure(kapi::devices::driver_match_errc::no_match); + } + + if (!std::ranges::contains(driver_claim->supported_names(), device_signature->isa_name())) + { + return kstd::failure(kapi::devices::driver_match_errc::no_match); + } + + return 0u; + } + } constinit protocol_instance; + } // namespace - return 0u; - } + isa::isa() + : kapi::devices::bus{"isa"} + {} - auto isa::protocol() -> isa * + auto isa::protocol() -> kapi::devices::bus_protocol * { - return this; + return &protocol_instance; } } // namespace arch::bus
\ No newline at end of file diff --git a/arch/x86_64/arch/bus/isa.hpp b/arch/x86_64/arch/bus/isa.hpp index 58bc042f..87832c3c 100644 --- a/arch/x86_64/arch/bus/isa.hpp +++ b/arch/x86_64/arch/bus/isa.hpp @@ -5,7 +5,6 @@ #include <kstd/result.hpp> -#include <cstdint> #include <span> #include <string_view> @@ -39,17 +38,12 @@ namespace arch::bus }; //! The ISA bus. - struct isa final : public kapi::devices::bus, kapi::devices::bus_protocol + struct isa final : public kapi::devices::bus { //! Construct a default ISA bus. isa(); - auto enumerate(kapi::devices::bus & self) -> void override; - - [[nodiscard]] auto match(kapi::devices::device const & device, kapi::devices::driver const & driver) const - -> kstd::result<std::uint32_t> override; - - [[nodiscard]] auto protocol() -> isa * override; + [[nodiscard]] auto protocol() -> kapi::devices::bus_protocol * override; }; } // namespace arch::bus |
