/* * Copyright (c) 2021, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include namespace Kernel { class GraphicsManagement; struct BochsDisplayMMIORegisters; class BochsGraphicsAdapter final : public GenericGraphicsAdapter , public PCI::Device { friend class GraphicsManagement; public: static ErrorOr probe(PCI::DeviceIdentifier const&); static ErrorOr> create(PCI::DeviceIdentifier const&); virtual ~BochsGraphicsAdapter() = default; virtual StringView device_name() const override { return "BochsGraphicsAdapter"sv; } private: ErrorOr initialize_adapter(PCI::DeviceIdentifier const&); explicit BochsGraphicsAdapter(PCI::DeviceIdentifier const&); LockRefPtr m_display_connector; }; }