/* * Copyright (c) 2021, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include namespace Kernel { class E1000ENetworkAdapter final : public E1000NetworkAdapter { public: static ErrorOr probe(PCI::DeviceIdentifier const&); static ErrorOr> create(PCI::DeviceIdentifier const&); virtual ErrorOr initialize(Badge) override; virtual ~E1000ENetworkAdapter() override; virtual StringView purpose() const override { return class_name(); } private: E1000ENetworkAdapter(StringView interface_name, PCI::DeviceIdentifier const&, u8 irq, NonnullOwnPtr registers_io_window, NonnullOwnPtr rx_buffer_region, NonnullOwnPtr tx_buffer_region, NonnullOwnPtr rx_descriptors_region, NonnullOwnPtr tx_descriptors_region); virtual StringView class_name() const override { return "E1000ENetworkAdapter"sv; } virtual void detect_eeprom() override; virtual u32 read_eeprom(u8 address) override; }; }