PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MultiIO-Port-Karte ITE887* für weiteren LPT-Port



munkmill
16.02.05, 19:45
Hallo an alle,

eigentlich hatte ich vor, meinen Zweit-Drucker über einen weiteren LPT-Port anzuschliessen. Also Karte gekauft (ITE887*, laut lspci 8874, laut Hersteller 8875) und eingebaut. Wie geschrieben, lspci -v sieht da auch was, unter Win funktioniert die Karte auch.
Nur leider unter Linux nicht, obwohl auch Treiber für Linux 2.4.19/20 dabei sind. Ich benutze aber momentan 2.6.10.

Hat vielleicht jemand eine Idee, wie man das Teil zum Laufen bewegen kann?

Hier mal die Ausgabe von lspci -v


0000:01:08.0 Serial controller: Integrated Technology Express, Inc. IT8874F PCIDual Serial Port Controller (rev 01) (prog-if 02 [16550])
Flags: medium devsel, IRQ 177
I/O ports at c000 [size=256]
I/O ports at c400 [size=256]
I/O ports at c800 [size=256]
I/O ports at cc00 [size=256]
I/O ports at d000 [size=256]
I/O ports at d400 [size=256]

und dann noch die Meldung von dmesg, bezüglich des Chipsatzes:


parport_pc: cannot find ITE8872 INTA

Leider habe ich nur einen Teil von Ahnung, wie das funktionieren soll. Vielleicht jemand von euch?

Vielen Dank im Voraus, Jan

tictactux
18.02.05, 13:39
ohne Deine Karte zu kennen, ein paar Tipps:
- notiere aus dem Gerätemanager unter Windows alle wichtigen Parameter
(Ressourcen: IO-Adressen, Speicherbereiche)
- lies im Kernel-Dokumentationsverzeichnis parport.txt bezüglich Boot- bzw.
Modul-Parameter
- Boote ein Knoppix mit Kernel 2.4 um zu prüfen, ob die Kernelversion als
Ursache in Frage kommt.
HTH
Wolfgang

derguteweka
18.02.05, 16:43
Moin,

Ich vermut' mal, dass auf deiner Karte so ein Multi-I/O Chip ist, der max. 4 serielle und 2 parallele Schnittstellen unterstuetzt. Sowas in der Art habbich auch, allerdings nur mit 2 seriellen Ports bestueckt.
Da die Portadressen nicht den Standard-PC Parallelports (ich glaub' 0x378, 0x278 und 0x3BC oder sowas) entsprechen, findet die der parport_pc Treiber nicht automatisch.
Wenn der als Modul geladen wird, musste dem als parameter die io Adressen und irq deines Chips beibringen, ich tipp mal auf die 0xd000 und/oder 0xd400. Also in wahrscheinlich in der modprobe.conf ne Zeile einfuegen, die ca. so ausschauen koennt':

options parport_pc io=0xd000,0xd400 irq=99
Den irq=99 natuerlich noch durch den echten irq ersetzen, der muesste bei cat /proc/pci rausfindbar sein.
Wenn der pc_parport Treiber fest im Kernel ist, habbich keinen Blassen, wie man ihm die Ports schmackhaft machen kann...

Gruss
WK

tictactux
18.02.05, 16:49
Wenn der pc_parport Treiber fest im Kernel ist, habbich keinen Blassen, wie man ihm die Ports schmackhaft machen kann...
eben durch in parport.txt beschriebene Boot-Argumente. Zitat von dort:
parport=0x3bc parport=0x378,7 parport=0x278,auto,nofifo

Gruß,
Wolfgang

derguteweka
18.02.05, 17:24
Moin


eben durch in parport.txt beschriebene Boot-Argumente.

Andiestirnklatsch - ich werd' auch alt und schusselig :)

Gruss
WK

munkmill
18.02.05, 18:01
Hallo,

zunächst vielen Dank für die Antworten.

Leider habe ich es auch mit eurer Hilfe nicht zum Laufen bekommen,
Windows sagt folgendes über die Karte:
IRQ18
IO: c020-c03f

Der extra eingerichtete Parallelport hat c088-c08f

Ich habe es mit den Windows-Werten, als auch mit denen von Linux probiert (parport_pc hab ich als Modul).
Trotzdem immer die Meldung: cannot find ITE8872 INTA.

In der Anleitung für Kernel 2.4 steht noch, dass die Karte über die Module für die serielle Schnittstelle erkannt werden und danach mit setserial eingerichtet werden soll. Leider weist er aber auch keine seriellen Ports zu.

Jan

weder für IRQ 177 noch für IRQ 18 ist ein Eintrag in /proc/irq zu finden...

derguteweka
18.02.05, 18:49
Moin,

Hab' grad' mal in den src vom 2.6.9 geguckt, so auf die Schnelle wuerd' ich mal sagen, ist diese printk (KERN_INFO "parport_pc: cannot find ITE8872 INTA\n");
Meldung garnicht sooo schlimm. laesst sich das parport kernelmodul denn laden, kommt sonst noch irgendne Meldung?

Gruss
WK

tictactux
18.02.05, 19:28
Wäre vielleicht hilfreich, was Google/Linux zu (ITE887x) sagt:
http://www.google.com/linux?hl=en&lr=&q=ITE887x&btnG=Google+Search
ist einiges (auch ein Patch für 2.6.x), hab's mir im Detail nicht angesehen :)

munkmill
18.02.05, 19:30
Ok,

das Modul lässt sich laden, spuckt aber nur eine Meldung zum Onboard-LPT-Anschluss aus:

parport_pc: cannot find ITE8872 INTA
parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE]
parport0: irq 7 detected
lp0: using parport0 (polling).

Hier (http://www.dragoninc.ca/mail-archives/linux-kernel/2003-06/2525.html)
habe ich was darüber gelesen, anscheinend können die Module den korrekten Chipsatz nicht erkennen. Nur, frag ich mich, wie das ohne Patch funktionieren soll...

Jan

munkmill
18.02.05, 19:39
Wäre vielleicht hilfreich, was Google/Linux zu (ITE887x) sagt:
http://www.google.com/linux?hl=en&lr=&q=ITE887x&btnG=Google+Search
ist einiges (auch ein Patch für 2.5.x), hab's mir im Detail nicht angesehen :)


Ok, da haben sich unsere Posts wohl überschnitten. Also die Google-Sachen hab ich mir schon alle angeschaut. Weiß nicht, was ich noch alles eintippen soll ;)

Auf jeden Fall scheint es Patches für die 2.5er Reihe zu geben, aber davon ist in der 2.6er Reihe nix mehr zu sehen. Einzig und allein einen Patch für Kernel 2.6.2 hab ich gefunden, der sich aber natürlich nicht auf 2.6.8 oder 10 anwenden lässt.

Inzwischen habe ich es auch mit einem 2.4.6er Kernel versucht, ohne jeglichen Erfolg.

Jan

P.S.: Auf der Treiber-CD waren wie gesagt, Patches für 2.4.19/20 drauf, also scheint es normalerweise nicht vom Kernel unterstützt zu sein

tictactux
18.02.05, 19:49
P.S.: Auf der Treiber-CD waren wie gesagt, Patches für 2.4.19/20 drauf, also scheint es normalerweise nicht vom Kernel unterstützt zu sein
in meinem 2.6.10-4er Debian Kernel ist da schon was vorhanden, mit großer
Ähnlichkeit zu Deinem verlinkten Patch. Auszug aus parport_pc.c:

/* ITE support maintained by Rich Liu <richliu@poorman.org> */
static int __devinit sio_ite_8872_probe (struct pci_dev *pdev, int autoirq,
int autodma, struct parport_pc_via_data *via)
{
short inta_addr[6] = { 0x2A0, 0x2C0, 0x220, 0x240, 0x1E0 };
struct resource *base_res;
u32 ite8872set;
u32 ite8872_lpt, ite8872_lpthi;
u8 ite8872_irq, type;
char *fake_name = "parport probe";
int irq;
int i;

DPRINTK (KERN_DEBUG "sio_ite_8872_probe()\n");
Falls Du einen älteren Kernel hast, lohnt vielleicht ein Update ?

munkmill
18.02.05, 20:40
Hm, das steht hier auch drin.

Ich hab so langsam keinen Plan mehr, was man da noch machen könnte.

Jan

munkmill
20.02.05, 11:43
So, ich hab mich jetzt nochmal etwas mit der Materie beschäftigt.

Da die Patches, die zu finden waren, nicht auf den 2.6.10er Kernel angewandt werden konnten, hab ich die Problemstellen per Hand behoben.

Ergebnis dieser Aktion war, dass die Karte noch immer nicht gefunden wird. Die I/O-Ports im Originaltreiber und in den Patches sind merkwürdigerweise Folgende:


short INTA_Addr[8] = { 0x2a0, 0x2c0, 0x220, 0x240, 0x1E0, 0x200, 0x280 };

Mit denen wird keine Karte gefunden, die Ports, die lspci ausgibt, bringen immerhin eine Meldung, dass er die Karte nicht kennt. Leider lässt sich da auch nichts machen, da er den Bereich später in der Funktion nicht reservieren kann.
Damit schliesse ich darauf, dass die lspci-Ports wohl auch nicht die richtigen sind, zumindest nicht die, die in das Array da oben gehören.

Hat jemand ne Idee, was ich noch machen könnte?

Jan

munkmill
20.02.05, 19:25
Inzwischen bin ich etwas weiter. Die Karte wird nach einigen Änderungen im parport_serial-Modul erkannt.

Ich bekomme nun folgende Meldung, wenn ich das Modul lade:

PCI parallel port detected: 1283:8872, I/O at 0xcc00(0xd000)

Leider bindet er kein Device an diesen Port, auch nicht mit den Einträgen in /etc/modules.conf.

Kann ich lp irgendwie mitteilen, dass er die Karte an /dev/lp1 binden soll?

Jan

Ok, habe nun gelesen, wie man lp sagt, welche Ports es gibt. Allerdings meint er, dass auf lp1 keine Devices existieren, was definitiv nicht der Wahrheit entspricht

tictactux
21.02.05, 13:13
dumme Frage: existieren die device-nodes dafür in /dev (könnte sein, daß
der PCI-Controller eigene nodes braucht)?
Siehe dazu im Kernel-Doku-Verzeichnis devices.txt

Gruß,
Wolfgang

munkmill
21.02.05, 18:15
dumme Frage: existieren die device-nodes dafür in /dev (könnte sein, daß
der PCI-Controller eigene nodes braucht)?
Siehe dazu im Kernel-Doku-Verzeichnis devices.txt

Gruß,
Wolfgang


Ja, die Devices existieren. Ich habe inzwischen mit dem Entwickler von ITE Kontakt aufgenommen, er schickte mir zwei neue Kernel-Module (parport_pc.c und parport_serial.c), die, wie sollte es anders sein, keine Karte gefunden haben.

Nachdem ich einige Abfragen zur Reservierung der Speicherbereiche entfernt und einige IO-Port-Zuweisungen geändert habe, funktioniert es jetzt :)

Die Teile parport_pc und parport_serial sind nun fest im Kernel und alles funktioniert auch ohne Parameter :)

Ich danke euch für eure Hilfe,

Jan

P.S.: Falls ich die Module hier reinstellen soll, schreibt es mir.