mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-30 08:03:59 +00:00
x86: remove special GPE handling nova <-> acpica
Remove handling of ACPI (SCI) interrupt from kernel and thereby let the handling of the ACPI irq exclusively to an Genode driver. On Genode the ACPICA library+app handles the ACPI irq, where we can now remove the contrib patches related to the synchronization between NOVA kernel and ACPICA library. Fixes #4479
This commit is contained in:
parent
65d7b3e652
commit
f6fedd5348
@ -1 +1 @@
|
|||||||
36430efef054479ea2cc06f2052a85a09e9bf232
|
6a1f0e6e6386e60748607c3c460c51a36a162307
|
||||||
|
@ -4,7 +4,7 @@ DOWNLOADS := nova.git
|
|||||||
|
|
||||||
# r10 branch
|
# r10 branch
|
||||||
URL(nova) := https://github.com/alex-ab/NOVA.git
|
URL(nova) := https://github.com/alex-ab/NOVA.git
|
||||||
REV(nova) := d7804f2125ad9ba1b86ad983261f72bdc1c0cfe7
|
REV(nova) := 7e3b5d3916825fb32e011cff4ee9b09ecdcb8d05
|
||||||
DIR(nova) := src/kernel/nova
|
DIR(nova) := src/kernel/nova
|
||||||
|
|
||||||
PATCHES := $(sort $(wildcard $(REP_DIR)/patches/*.patch))
|
PATCHES := $(sort $(wildcard $(REP_DIR)/patches/*.patch))
|
||||||
|
@ -1 +1 @@
|
|||||||
eabee3c47ec115b80e21ae830bbdd4faf705200f
|
cd5027ca2f274e0274219109ac8b3908fd9ed681
|
||||||
|
@ -1,63 +1,3 @@
|
|||||||
diff --git src/lib/acpica/source/components/events/evevent.c src/lib/acpica/source/components/events/evevent.c
|
|
||||||
index cec39cb..2a8e3a6 100644
|
|
||||||
--- src/lib/acpica/source/components/events/evevent.c
|
|
||||||
+++ src/lib/acpica/source/components/events/evevent.c
|
|
||||||
@@ -188,6 +188,9 @@ AcpiEvFixedEventInitialize (
|
|
||||||
UINT32 i;
|
|
||||||
ACPI_STATUS Status;
|
|
||||||
|
|
||||||
+ /* read enabled events by kernel and don't disable them */
|
|
||||||
+ UINT32 FixedEnable;
|
|
||||||
+ (void) AcpiHwRegisterRead (ACPI_REGISTER_PM1_ENABLE, &FixedEnable);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize the structure that keeps track of fixed event handlers and
|
|
||||||
@@ -198,6 +201,12 @@ AcpiEvFixedEventInitialize (
|
|
||||||
AcpiGbl_FixedEventHandlers[i].Handler = NULL;
|
|
||||||
AcpiGbl_FixedEventHandlers[i].Context = NULL;
|
|
||||||
|
|
||||||
+ if (FixedEnable & AcpiGbl_FixedEventInfo[i].EnableBitMask)
|
|
||||||
+ {
|
|
||||||
+ AcpiOsPrintf (" Genode: SKIP disabling event '%u'(%x) - enabled by kernel!\n", i, AcpiGbl_FixedEventInfo[i].EnableBitMask);
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* Disable the fixed event */
|
|
||||||
|
|
||||||
if (AcpiGbl_FixedEventInfo[i].EnableRegisterId != 0xFF)
|
|
||||||
@@ -262,10 +271,13 @@ AcpiEvFixedEventDetect (
|
|
||||||
*/
|
|
||||||
for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++)
|
|
||||||
{
|
|
||||||
- /* Both the status and enable bits must be on for this event */
|
|
||||||
-
|
|
||||||
- if ((FixedStatus & AcpiGbl_FixedEventInfo[i].StatusBitMask) &&
|
|
||||||
- (FixedEnable & AcpiGbl_FixedEventInfo[i].EnableBitMask))
|
|
||||||
+ /* kernel 'signals' the fixed event by disabling it in the enable
|
|
||||||
+ * register. Check for events, that have registered handlers and that
|
|
||||||
+ * are disabled in the enable register. If found, re-enable event.
|
|
||||||
+ */
|
|
||||||
+ if (AcpiGbl_FixedEventInfo[i].EnableBitMask &&
|
|
||||||
+ AcpiGbl_FixedEventHandlers[i].Handler &&
|
|
||||||
+ !(FixedEnable & AcpiGbl_FixedEventInfo[i].EnableBitMask))
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Found an active (signalled) event. Invoke global event
|
|
||||||
@@ -309,11 +321,10 @@ AcpiEvFixedEventDispatch (
|
|
||||||
ACPI_FUNCTION_ENTRY ();
|
|
||||||
|
|
||||||
|
|
||||||
- /* Clear the status bit */
|
|
||||||
-
|
|
||||||
+ /* Re-enable event - kernel disabled it */
|
|
||||||
(void) AcpiWriteBitRegister (
|
|
||||||
- AcpiGbl_FixedEventInfo[Event].StatusRegisterId,
|
|
||||||
- ACPI_CLEAR_STATUS);
|
|
||||||
+ AcpiGbl_FixedEventInfo[Event].EnableRegisterId,
|
|
||||||
+ ACPI_ENABLE_EVENT);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Make sure that a handler exists. If not, report an error
|
|
||||||
diff --git src/lib/acpica/source/include/acpixf.h src/lib/acpica/source/include/acpixf.h
|
diff --git src/lib/acpica/source/include/acpixf.h src/lib/acpica/source/include/acpixf.h
|
||||||
index 3a823a3..abc2900 100644
|
index 3a823a3..abc2900 100644
|
||||||
--- src/lib/acpica/source/include/acpixf.h
|
--- src/lib/acpica/source/include/acpixf.h
|
||||||
|
Loading…
x
Reference in New Issue
Block a user