Ich hatte mich gestern mal mit dem Problem von VoodooI2C nach dem Aufwachen im GPIO-Interrupt-Modus beschäftigt und bin der Ursache auf den Grund gegangen. Das Problem liegt offensichtlich in VoodooGPIO.kext begründet und hängt mit der Initialisierung zusammen. Beim Laden der Kext findet sie den GPIO-Controller bereits vollständig initialisiert vor, so dass die Initialisierung übersprungen wird. Das Trackpad funktioniert dann wie erwartet, aber nach dem Aufwachen aus dem Ruhezustand ist diese Konfiguration verloren, so dass der Treiber den GPIO-Controller neu initialisieren muss, was leider scheitert. Die Pins können in zwei unterschiedlichen Modi betrieben werden, dem ACPI-Modus, in welchem sie zum Erzeugen von GPE-Events benutzt werden, aber keine Interrupts generieren können, und dem GPIO-Modus, in dem der Treiber volle Kontrolle über die Pins hat, so dass sie als Interrupt Source genutzt werden können. Das Problem ist nun, dass VoodooGPIO.kext den Pin 0x1B nach dem Aufwachen im ACPI-Modus vorfindet und die Initialisierung scheitert. Theoretisch sollte es möglich sein, VoodooGPIO.kext so zu modifizieren, dass es es den Pin bei der Initialisierung nach dem Aufwachen wieder in den GPIO-Modus versetzt. Das Problem scheint also grundsätzlich lösbar zu sein, jedoch muss ich mich hier erst mal mit der Dokumentation des GPIO-Controllers befassen, um herauszufinden, wie es geht. Da ich mich zur Zeit aber mitten in der Klausurphase befinde und mit dem Studium ausgelastet bin, wird es wohl noch ein bisschen dauern, bis ich mich darum kümmern kann. Auf jeden Fall bleibe ich dran!
Ein anderes Problem ist, dass VoodooPS2Controller beim Booten des Öfteren eine Kernel Panic verursacht, wenn VoodooI2C installiert ist, auch wenn sich nur VoodooPS2Keyboard.kext im Ordner Plugins befindet. Habt ihr dafür schon eine Lösung gefunden?
PS: Sobald ich die DW1820A bekommen habe, werde ich hier einen Bericht schreiben, wie sich die Karte im Betrieb macht.