============================================================================
Ladbarer Videotext-Device-Treiber V1.4 fr Linux     (C) 1994-95 Martin Buck
============================================================================


Dieser Videotext-Treiber ermglicht es, Videotext-Karten unterschiedlicher
Hersteller ohne nderungen am Decoder-Programm anzusteuern. Er wurde so
geschrieben, da eine Untersttzung aller Videotext-Interfaces, die auf dem
SAA 5243 bzw. SAA 5246 von Philips basieren mit minimalen nderungen im
Treiber mglich ist. Auch Karten, die auf anderen Chipstzen basieren, aber
eine hnliche Funktionalitt bieten, knnen untersttzt werden, da hardware-
abhngige Details wie Registerbelegungen usw. fr das ansteuernde Programm
nicht sichtbar sind.

Der Treiber sorgt dafr, da im Programm selbst keine Low-Level I/O-
Operationen mehr notwendig sind, weshalb das Decoder-Programm ohne root-
Rechte laufen kann. Auerdem wird fr ein definiertes Timing gesorgt, da das
udelay()-Makro Mikrosekunden-Auflsung bietet und durch die
Verzgerungsschleife beim Booten (BogoMips) kalibriert wird.

Im Moment werden folgende Interfaces untersttzt:
o c't-Videotext-Karte: Wurde in der Zeitschrift c't 11/91 auf Seite 228 ff
  und in c't 7/92, S. 176 ff vorgestellt. Es wird nur die Version mit SAA5246
  untersttzt. Der SAA5244 ist unbrauchbar.
o serielle c't-Karte: Die in c't 7/92 vorgestellte Karte kann auch an einer
  seriellen Schnittstelle angeschlossen werden; dazu ist das Kabel mit
  Amiga-Pinbelegung notwendig:
    Videotext-Decoder             Serielle Schnittstelle
    (9-polig Sub-D)               (25-pol. / 9-pol. Sub-D)
    SCL     (Pin 8) <-----------> RTS (Pin 4 / Pin 7)
    SDA-out (Pin 7) <-----------> DCD (Pin 8 / Pin 1)
    SDA-in  (Pin 9) <-----------> DTR (Pin 20 / Pin 4)
    GND     (Pin 3) <-----------> GND (Pin 7 / Pin 5)
o VTX2000/VD3000: Wird von der Firma Wiegand Datentechnik/Videodat Medien GmbH
  hergestellt. Die VTX2000 ist eine nur-Videotext Einsteckkarte; die VD3000
  enthlt zustzlich einen (nicht untersttzten) Videodat-Decoder.
o ELV PC-VT 7000: Ein externer Decoder mit ISA-Bus-Interface. Wurde in der
  Elektronik-Zeitschrift ELV journal 2/90, S. 54, 3/90, S. 54 und 4/90, S. 16
  verffentlicht. Dieser Treiber ist noch ungetestet, ich bitte um
  Rckmeldung, falls er bei irgendjemand funktioniert.
o SATCOM: Eine externer Videotext-Decoder, der an einer seriellen Schnitt-
  stelle angeschlossen wird. Er wird von der Firma KDK SATCOM hergestellt.
o Auerdem wird ein von mir selbstentwickeltes Interface untersttzt, das
  ber die Druckerschnittstelle eine Verbindung zu einem in einem Video-
  recorder eingebauten Videotext-Decoder herstellt.

Zu anderen Interfaces liegen mir im Moment leider keine Unterlagen vor,
weshalb ich sie (noch) nicht untersttzen kann. Besitzer von nicht
untersttzten Interfaces sollten sich bei mir melden, denn wenn ich nicht
wei, da ein Bedarf vorhanden ist, werde ich mich um das entsprechende
Interface natrlich auch nicht kmmern.

Nhere Informationen zur Ansteuerung des Treibers befinden sich in der Datei
'programming.txt' (im Moment nur in Englisch). Ich bitte auch die Autoren
anderer Videotext-Decoder, sich bei mir zu melden, da ich immer an anderen
(besseren) Implementationen interessiert bin.


INSTALLATION
------------

Da der Treiber nur aus einem einzigen Sourcefile besteht, ist die
Installation nicht allzu schwierig. Allerdings sind dazu (wie bei jedem
Treiber) root-Rechte erforderlich.

Zuerst mu im Makefile das Kommentarzeichen vor der Zeile mit dem
gewnschten Interface entfernt werden und die entsprechende Default-
Basisadresse eingetragen werden. Auerdem sollte berprft werden, ob die
voreingestellte Major-Nummer des Treibers noch frei ist (mit 'cat
/proc/devices' bekommt man eine Liste der momentan vorhandenen Treiber) und
ggf. eine andere, freie eingetragen werden. Zustzlich knnen noch die
Directories, Permissions und Gruppen der zu installierenden
Dateien/Device-Files eingestellt werden.

Jetzt kann der Treiber mit 'make' compiliert und mit 'make install' (als
root) installiert werden. Geladen wird der Treiber am besten beim Booten mit
insmod <Name>. Dazu sind die Linux-Modutils notwendig.

Das neue Modutils-Paket (Linux 1.1.67) ermglicht es, beim Laden des
Treibers Argumente zu bergeben. Im Moment kann die Basisadresse mit
base_io=<Adresse> und die Major-Nummer mit major=<Major-Nummer> eingestellt
werden. Mit slow_if=1 kann der Treiber langsamer gemacht werden, falls viele
Timeouts auftreten.

Beim Laden des Treibers knnen Fehlermeldungen wegen undefinierter Symbole
ausgegeben werden. Dies liegt daran, da vor Linux 1.1.63 noch nicht alle
notwendigen Symbole vom Kernel exportiert wurden. Um dies zu ndern, mssen
in den Kernel-Sources in der Datei 'kernel/ksyms.c' die entsprechenden
Symbole eingetragen werden (ohne '_' am Anfang, wie bei den schon
vorhandenen Symbolen auch); auerdem mu evtl. zustzlich '#include
<linux/delay.h>' am Dateianfang eingefgt werden. Nach dem Booten des neuen
Kernels sollte der Treiber dann problemlos geladen werden.

Achtung: Bei Benutzung des Treibers fr die serielle c't-Karte und den
SATCOM-Decoder ist darauf zu achten, da die benutzte serielle Schnittstelle
nicht gleichzeitig angesprochen wird. Andernfalls knnten unvorhersehbare
Ereignisse eintreten. Falls die entsprechende Schnittstelle nur fr die
Ansteuerung der Videotext- Karte benutzt wird, wre es am besten, den
Treiber fr die serielle Schnittstelle komplett zu deaktivieren. Leider
kenne ich keine Mglichkeit, die serielle Schnittstelle nur zeitweise zu
deaktivieren.


BUGS
----

Falls Probleme auftreten, bitte ich um eine mglichst genaue Beschreibung
und wenn mglich eine Anleitung, wie der Fehler reproduzierbar ist. Bei
Kernel-Panics o.. bentige ich unbedingt den Register-Dump, der alle
folgenden Informationen enthalten sollte:

        general protection: xxxx
        EIP:    0010:xxxxxxxx
        EFLAGS: xxxxxxxx
        eax: xxxxxxxx   ebx: xxxxxxxx   ecx: xxxxxxxx   edx: xxxxxxxx
        esi: xxxxxxxx   edi: xxxxxxxx   ebp: xxxxxxxx
        ds: xxxx  es: xxxx  fs: xxxx  gs: xxxx
        Pid: xx, process nr: xx
        xx xx xx xx xx xx xx xx xx xx

Auerdem bentige ich die Startadresse, die insmod beim Laden des Treibers
ausgibt: module `vtx.drv' (1 pages @ 0x0100e000) created
                                     ^^^^^^^^^^
Was auch nicht fehlen sollte ist ein Dump der Symbole aus dem Objekt-File
des Treibers (mit 'nm /etc/drivers/vtx.drv' erzeugen). Mit den neuen
Modutils (1.1.67) wird die Startadresse standardmig nicht ausgegeben,
stattdessen kann mit 'insmod -m' beim Laden ein Symbol-Dump erstellt werden.

Falls auch nur eine der Angaben fehlt, ist der Bug-Report fr mich wertlos.


COPYRIGHT
---------

Der Treiber kann unter Beachtung der Bedingungen der GNU General Public
License (Datei 'COPYING') frei kopiert werden.



So, jetzt aber viel Spa mit dem Treiber,
Martin Buck

Internet: <martin.buck@student.uni-ulm.de>
Sackpost: Martin Buck, Paukengasse 2, D-89077 Ulm, Deutschland
