From 36a82188a88c95315e03f6fcede237bc66831702 Mon Sep 17 00:00:00 2001 From: Liav A Date: Fri, 19 Mar 2021 04:50:31 +0200 Subject: [PATCH] Kernel/PCI: Allow to set the PCI IRQ line of a device This will be used later by the AHCI code to set the IRQ line to be 11, if hardware by mistake changed the value to be something we can't deal with. --- Kernel/PCI/Access.cpp | 5 +++++ Kernel/PCI/Definitions.h | 1 + 2 files changed, 6 insertions(+) diff --git a/Kernel/PCI/Access.cpp b/Kernel/PCI/Access.cpp index 6197e6a7f1..de8b24a382 100644 --- a/Kernel/PCI/Access.cpp +++ b/Kernel/PCI/Access.cpp @@ -222,6 +222,11 @@ u8 get_interrupt_line(Address address) return read8(address, PCI_INTERRUPT_LINE); } +void set_interrupt_line(Address address, u8 new_line) +{ + write8(address, PCI_INTERRUPT_LINE, new_line); +} + u32 get_BAR0(Address address) { return read32(address, PCI_BAR0); diff --git a/Kernel/PCI/Definitions.h b/Kernel/PCI/Definitions.h index 23d3cf0da0..968c548e84 100644 --- a/Kernel/PCI/Definitions.h +++ b/Kernel/PCI/Definitions.h @@ -204,6 +204,7 @@ void enumerate(Function callback); void enable_interrupt_line(Address); void disable_interrupt_line(Address); u8 get_interrupt_line(Address); +void set_interrupt_line(Address, u8); void raw_access(Address, u32, size_t, u32); u32 get_BAR0(Address); u32 get_BAR1(Address);