IDE Treiber und Interrupts

Sklaventreiber
DBoxBaer
Senior Member
Beiträge: 255
Registriert: Donnerstag 25. August 2005, 11:34

IDE Treiber und Interrupts

Beitrag von DBoxBaer »

Moin!

Die letzte Änderung im CPLD war das die Interrupt Leitung der Platte
invertiert wird. Hintergrund ist, das der Port C Pin auf nur eine Flanke
hin einen Int generieren soll: Das kann man konfigurieren, aber nur
auf die fallende Flanke, darum muss das Original Signal der Platte
invertiert sein.

Für die alten Treiber ändert das gar nichts, und so ist wohl auch
noch der Stand im CVS.

Besser fürs System sollte es aber mit folgenden zwei Anpassungen sein:

1. im ide Treiber eine Funktion hinzufügen:

Code: Alles auswählen

void configure_interrupt()
{
  immap_t *immap=(immap_t *)IMAP_ADDR ;

  // configure Port C, Pin 15 to create an Int  only for High->Low changes
  immap->im_ioport.iop_pcint |= 0x0001;
}
und natürlich den Aufruf der Funktion, am Besten vor dboxide_register() einfügen:

Code: Alles auswählen

  ...
  configure_interrupt();

  dboxide_register();
}
2. Den "Shared-IRQ Patch" für den Kernel rauswerfen:
Dieser war notwendig, weil ja offensichtlich zuviele Interrupts kamen,
(beide Flanken) und so der IDE Treiber damit aber zurecht kam.
Da jetzt nur noch die richtige Anzahl Interrupts kommt, sollte der
Patch nicht mehr notwendig sein.

Die Frage ist dann, ob dann Lost Interrupts auftreten, oder andere
seltsame Effekte, ganz sicher bin ich mir da noch nicht, obwohl das
Interrupt Handling dann ja "Original Linux-Kernel Implementierung" ist
und kein bisschen mit meinem Treiber zu tun hat (ausser der Nummer
des gewünschten Int und der Konfiguration des Pins).


Ciao,

DboxBaer
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 21:06

Re: IDE Treiber und Interrupts

Beitrag von gurgel »

DBoxBaer hat geschrieben: Für die alten Treiber ändert das gar nichts, und so ist wohl auch
noch der Stand im CVS.
das ist CVS-Stand..., allerdings nicht so schön in einer Funktion wie du es hier vorschlägst.
Tests haben ergeben das es ohne Probleme funktioniert.
Test
DBoxBaer
Senior Member
Beiträge: 255
Registriert: Donnerstag 25. August 2005, 11:34

Re: IDE Treiber und Interrupts

Beitrag von DBoxBaer »

gurgel hat geschrieben:
DBoxBaer hat geschrieben: Für die alten Treiber ändert das gar nichts, und so ist wohl auch
noch der Stand im CVS.
das ist CVS-Stand..., allerdings nicht so schön in einer Funktion wie du es hier vorschlägst.
Tests haben ergeben das es ohne Probleme funktioniert.
Ups, dann habe ich nicht den richtigen Stand angeschaut. Ich meine
den Patch für den Kernel noch gesehen zu haben, und der war mir
noch ein Dorn im Auge.

Wie auch immer, mit der Funktion ist das natürlich sauberer.
... und der Rest ist dann Software (TM)
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Beitrag von JtG-Riker »

@DboxBear

Villeicht checkst du einfach mal die aktuelle Version aus dem CVS aus, und änders das auf den aktuellen Stand in die Funktion und schikst es Gurgel oder mir, ich lass es dann einchecken.

Gruß Riker