Serenity Operating System
1/*
2 * Copyright (c) 2021, Liav A. <liavalb@hotmail.co.il>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <AK/Types.h>
10#include <Kernel/Bus/PCI/Device.h>
11#include <Kernel/Graphics/Definitions.h>
12#include <Kernel/Graphics/Intel/DisplayConnectorGroup.h>
13#include <Kernel/Graphics/Intel/NativeDisplayConnector.h>
14#include <Kernel/PhysicalAddress.h>
15#include <LibEDID/EDID.h>
16
17namespace Kernel {
18
19class IntelNativeGraphicsAdapter final
20 : public GenericGraphicsAdapter
21 , public PCI::Device {
22
23public:
24 static ErrorOr<bool> probe(PCI::DeviceIdentifier const&);
25 static ErrorOr<NonnullLockRefPtr<GenericGraphicsAdapter>> create(PCI::DeviceIdentifier const&);
26
27 virtual ~IntelNativeGraphicsAdapter() = default;
28
29 virtual StringView device_name() const override { return "IntelNativeGraphicsAdapter"sv; }
30
31private:
32 ErrorOr<void> initialize_adapter();
33
34 explicit IntelNativeGraphicsAdapter(PCI::DeviceIdentifier const&);
35
36 LockRefPtr<IntelDisplayConnectorGroup> m_connector_group;
37};
38}