ladybird/Kernel
Liav A 2def16a3d2 Kernel/Graphics: Introduce the IntelDisplayConnectorGroup class
In the real world, graphics hardware tend to have multiple display
connectors. However, usually the connectors share one register space but
still keeping different PLL timings and display lanes.
This new class should represent a group of multiple display connectors
working together in the same Intel graphics adapter. This opens an
opportunity to abstract the interface so we could support future Intel
iGPU generations.

This is also a preparation before the driver can support newer devices
and utilize their capabilities.
The mentioned preparation is applied in a these aspects:
1. The code is splitted into more classes to adjust to future expansion.
2 classes are introduced: IntelDisplayPlane and IntelDisplayTranscoder,
so the IntelDisplayPlane controls the plane registers and second class
controls the pipeline (transcoder, encoder) registers. On gen4 it's not
really useful because there are probably one plane and one encoder to
care about, but in future generations, there are likely to be multiple
transcoders and planes to accommodate multi head support.
2. The set_edid_bytes method in the DisplayConnector class can now be
told to not assume the provided EDID bytes are always invalid. Therefore
it can refrain from printing error messages if this flag parameter is
true. This is useful for supporting real hardware situation when on boot
not all ports are connected to a monitor, which can result in floating
bus condition (essentially all the bytes we read are 0xFF).
3. An IntelNativeDisplayConnector could now be set to flag other types
of connections such as eDP (embedded DisplayPort), Analog output, etc.
This is important because on the Intel gen4 graphics we could assume to
have one analog output connector, but on future generations this is very
likely to not be the case, as there might be no VGA outputs, but rather
only an eDP connector which is converted to VGA by a design choice of
the motherboard manufacturer.
4. Add ConnectorIndex to IntelNativeDisplayConnector class - Currently
this is used to verify we always handle the correct connector when doing
modesetting.
Later, it will be used to locate special settings needed when handling
connector requests.
5. Prepare to support more types of display planes. For example, the
Intel Skylake register set for display planes is a bit different, so
let's ensure we can properly support it in the near future.
2023-02-19 15:01:01 -07:00
..
API Kernel: Support sending filedescriptors with sendmsg(2) and SCM_RIGHTS 2023-02-19 00:37:37 +01:00
Arch Kernel/aarch64: Disable memory access alignment check 2023-02-18 19:17:21 +01:00
Bus Everywhere: Remove needless copies of Error / ErrorOr instances 2023-02-10 09:08:52 +00:00
Devices Kernel: Remove declarations for non-existent methods 2023-01-27 20:33:18 +00:00
FileSystem Kernel+Userland: Add constants subdirectory at /sys/kernel directory 2023-02-19 13:47:11 +01:00
Firmware Kernel/PCI: Hold a reference to DeviceIdentifier in the Device class 2023-01-26 23:04:26 +01:00
Graphics Kernel/Graphics: Introduce the IntelDisplayConnectorGroup class 2023-02-19 15:01:01 -07:00
Heap Kernel+LibC: Move name length constants to Kernel/API from limits.h 2023-01-21 10:43:59 -07:00
Interrupts Everywhere: Use ReadonlySpan<T> instead of Span<T const> 2023-02-08 19:15:45 +00:00
Library Kernel: Move ScopedCritical.cpp to Kernel base directory 2022-12-29 19:32:20 -07:00
Locking Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
Memory Everywhere: Use ReadonlySpan<T> instead of Span<T const> 2023-02-08 19:15:45 +00:00
Net Kernel: Support sending filedescriptors with sendmsg(2) and SCM_RIGHTS 2023-02-19 00:37:37 +01:00
Prekernel Kernel: Unify x86-64 assembly snippets naming for RDSEED & RDRAND 2023-01-25 23:17:36 +01:00
Storage Revert "Kernel/Storage: Remove the ramdisk implementation" 2023-02-08 18:19:48 +00:00
Syscalls Kernel: Support sending filedescriptors with sendmsg(2) and SCM_RIGHTS 2023-02-19 00:37:37 +01:00
Tasks Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
Time Kernel: Remove declarations for non-existent methods 2023-01-27 20:33:18 +00:00
TTY Kernel: Remove declarations for non-existent methods 2023-01-27 20:33:18 +00:00
AddressSanitizer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
AddressSanitizer.h Everywhere: Use bgianf@serenityos.org for my copyright attribution 2021-04-22 21:15:54 +02:00
Assertions.h Kernel: Replace VERIFY_NOT_REACHED with TODO_AARCH64 2022-10-16 17:35:37 +02:00
AtomicEdgeAction.h Kernel: Add per platform Processor.h headers 2021-10-14 01:23:08 +01:00
BootInfo.h Kernel: Move Memory/PageDirectory.{cpp,h} to arch-specific directory 2023-01-27 11:41:43 +01:00
CMakeLists.txt Kernel/Graphics: Introduce the IntelDisplayConnectorGroup class 2023-02-19 15:01:01 -07:00
CommandLine.cpp Kernel: Make i8042 controller initialization sequence more robust 2023-01-06 11:09:56 +01:00
CommandLine.h Kernel: Remove declarations for non-existent methods 2023-01-27 20:33:18 +00:00
Coredump.cpp Kernel: Return proper errno codes from Coredump::write_regions method 2023-02-10 09:14:20 +00:00
Coredump.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
CrashHandler.cpp Kernel: Add optional userspace backtrace to Process::crash 2023-02-08 18:19:48 +00:00
Credentials.cpp Everywhere: Use ReadonlySpan<T> instead of Span<T const> 2023-02-08 19:15:45 +00:00
Credentials.h Everywhere: Use ReadonlySpan<T> instead of Span<T const> 2023-02-08 19:15:45 +00:00
Debug.h.in Kernel: Remove the NE2000 PCI network adapter driver 2023-01-08 21:51:59 +01:00
DoubleBuffer.cpp Kernel: Move InterruptDisabler out of Arch directory 2022-10-17 20:11:31 +02:00
DoubleBuffer.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
embedmap.sh Kernel: Make new kernel build process work on macOS 2021-07-15 11:04:30 +02:00
ExecutionMode.h Kernel: Factor our PreviousMode into RegisterState::previous_mode 2023-01-27 11:41:43 +01:00
Forward.h Kernel+SystemServer+Base: Introduce the RAMFS filesystem 2023-02-04 15:32:45 -07:00
FutexQueue.cpp Kernel: Propagate OOM conditions out of sys$futex 2022-07-21 16:39:22 +02:00
FutexQueue.h AK+Kernel: Add AK::AtomicRefCounted and use everywhere in the kernel 2022-08-20 17:15:52 +02:00
generate-version-file.sh Kernel: Bake version information into the Kernel 2022-10-14 13:45:33 +02:00
InterruptDisabler.h Kernel: Move InterruptDisabler out of Arch directory 2022-10-17 20:11:31 +02:00
IOWindow.cpp Kernel/PCI: Hold a reference to DeviceIdentifier in the Device class 2023-01-26 23:04:26 +01:00
IOWindow.h Kernel: Remove declarations for non-existent methods 2023-01-27 20:33:18 +00:00
Jail.cpp Kernel: Add support for jails 2022-11-05 18:00:58 -06:00
Jail.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
JailManagement.cpp Kernel: Mark Process::jail() method as const 2023-01-07 03:44:59 +03:30
JailManagement.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
KBuffer.h Everywhere: Remove string.h include from AK/Traits.h and resolve fallout 2023-01-21 10:43:59 -07:00
KBufferBuilder.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
KBufferBuilder.h AK: Add support for "debug only" formatters 2023-01-13 21:09:26 +00:00
KLexicalPath.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
KLexicalPath.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
kprintf.cpp Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
kstdio.h Kernel: Don't blindly compile Bochs debug output code in ConsoleDevice 2022-09-20 18:43:05 +01:00
KString.cpp Kernel: Add an error propagating KString::format(..) API :^) 2021-11-30 11:16:35 +01:00
KString.h AK: Add support for "debug only" formatters 2023-01-13 21:09:26 +00:00
KSyms.cpp Kernel: Add optional userspace backtrace to Process::crash 2023-02-08 18:19:48 +00:00
KSyms.h Kernel: Add ability to dump backtrace from provided frame pointer 2022-10-01 14:09:01 +02:00
MiniStdLib.cpp Kernel: Remove i686 support 2022-12-28 11:53:41 +01:00
mkmap.sh Kernel: Use the toolchain's nm in mkmap.sh 2021-12-30 18:10:51 +01:00
Multiboot.h Kernel: Add basic aarch64 support to MemoryManager 2022-09-12 00:56:44 +01:00
Panic.cpp Kernel: Reorganize Arch/x86 directory to Arch/x86_64 after i686 removal 2022-12-28 11:53:41 +01:00
Panic.h Kernel: Implement __panic() for the aarch64 Kernel 2022-05-03 21:53:36 +02:00
PerformanceEventBuffer.cpp Everywhere: Remove needless copies of Error / ErrorOr instances 2023-02-10 09:08:52 +00:00
PerformanceEventBuffer.h Everywhere: Remove needless copies of Error / ErrorOr instances 2023-02-10 09:08:52 +00:00
PerformanceManager.h Everywhere: Remove needless copies of Error / ErrorOr instances 2023-02-10 09:08:52 +00:00
PhysicalAddress.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Process.cpp Kernel: Add optional userspace backtrace to Process::crash 2023-02-08 18:19:48 +00:00
Process.h Kernel: Add optional userspace backtrace to Process::crash 2023-02-08 18:19:48 +00:00
ProcessExposed.cpp Kernel/FileSystem: Simplify the ProcFS inode code 2023-01-29 12:59:30 +01:00
ProcessExposed.h Kernel/FileSystem: Simplify the ProcFS inode code 2023-01-29 12:59:30 +01:00
ProcessGroup.cpp Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
ProcessGroup.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
ProcessProcFSTraits.cpp Kernel/FileSystem: Simplify the ProcFS inode code 2023-01-29 12:59:30 +01:00
ProcessSpecificExposed.cpp Kernel/FileSystem: Simplify the ProcFS inode code 2023-01-29 12:59:30 +01:00
Random.cpp Kernel/aarch64: Add TimeManagement fallback entropy source to Random.cpp 2023-02-08 18:19:48 +00:00
Random.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
SanCov.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Scheduler.cpp Kernel: Factor our PreviousMode into RegisterState::previous_mode 2023-01-27 11:41:43 +01:00
Scheduler.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
ScopedCritical.cpp Kernel: Move ScopedCritical.cpp to Kernel base directory 2022-12-29 19:32:20 -07:00
ScopedCritical.h Kernel: Move ScopedCritical.cpp to Kernel base directory 2022-12-29 19:32:20 -07:00
Sections.h Kernel/aarch64: Change base address of the kernel to 0x2000000000 2023-01-24 14:54:44 +00:00
StdLib.cpp Everywhere: Run clang-format 2022-12-03 23:52:23 +00:00
StdLib.h Everywhere: Remove string.h include from AK/Traits.h and resolve fallout 2023-01-21 10:43:59 -07:00
Syscall.cpp Kernel: Add optional userspace backtrace to Process::crash 2023-02-08 18:19:48 +00:00
Thread.cpp Kernel: Update stored registers in a thread's tracer on SIGSTOP 2023-02-08 19:23:07 +01:00
Thread.h Kernel: Protect Thread::m_name with a spinlock 2023-02-06 20:36:53 +01:00
ThreadBlockers.cpp Kernel: Use InterruptsState in Spinlock code 2022-08-26 12:51:57 +02:00
ThreadTracer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ThreadTracer.h Kernel+Userland: Remove dependency on i386-specific registers 2022-12-28 11:53:41 +01:00
TimerQueue.cpp Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
TimerQueue.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
UBSanitizer.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
UnixTypes.h Kernel: Add support for SA_SIGINFO 2022-03-04 20:07:05 +01:00
UserOrKernelBuffer.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
UserOrKernelBuffer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
VirtualAddress.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
WaitQueue.cpp Kernel: Don't register thread as custom data for WaitQueueBlocker 2021-08-24 01:57:11 +02:00
WaitQueue.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
WorkQueue.cpp Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
WorkQueue.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00