Loadable Videotext-Device-Driver V1.6 for Linux (C) 1994-96 Martin Buck
This videotext-driver makes it possible to use videotext-interfaces from different vendors without modifications to the decoder-program. It should be rather trivial to adapt it to other SAA 5243/SAA 5246-based cards. Interfaces using other chipsets can be supported too, since hardwarespecific deatils like register-layout etc. are hidden from user-programs.
Programs using this driver don't need to do any low-level I/O-operations, which is why they don't need any special privileges anymore. Also, there should be no trouble with incorrect timing, since this driver uses the udelay()-macro which offers microsecond-resolution and which is calibrated during system startup (the famous BogoMips-value).
At the moment, the following interfaces are supported: o c't-Videotext-card: This one was published in the german computer-magazine c't 11/91, p. 228 and c't 7/92, p. 176. Only the version with a SAA5246 is supported. The SAA5244 is completely useless. o serial c't-card: The interface published in c't 7/92 can also be connected to a serial port. You need the cable with Amiga-pinout:
videotext-decoder serial port
(9-pin Sub-D) (25-pin / 9-pin 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: These are internal cards made by Wiegand Datentechnik/
Videodat Medien GmbH, Germany. The VTX2000 is a videotext-only card, the
VD3000 has an additional videodat-decoder (unsupported). The external
version of the VTX2000 is supported, too.
o PCVTXstandard/PCVTXcircular: 2 internal ISA-cards made by TechConsult,
Munich. The PCVTXstandard uses a "normal" SAA5243, the PCVTXcircular uses
a SAA5249 and 512kB Cache. The cache stores the most recently transmitted
pages (FIFO). This eliminates delays when requesting single pages (mainly
for stations not using TOP-Text); it won't help with multi-pages, though.
o ELV PC-VT 7000: An external decoder with an ISA-bus-interface. It was
published in ELV journal 2/90, p. 54, 3/90, p. 54 and 4/90, p. 16.
o SATCOM: This is an external VTX-decoder connected to a serial port made
by KDK Satcom, Germany.
o All interfaces connected to a parallel port using Gerald Sinzing's pinout
and a SAA5243 or SAA5246 as decoder. Gerald tells you more about this
interface in the docs for his DOS-program TOPTEXT 4.1 which you can find
on my WWW-VideoteXt-page.
o An interface developped by myself which makes it possible to connect the
videotext-chipset of a VCR to the parallel port of a PC.
Since I don't have any information on other videotext-interfaces, I can't support them at the moment. But if you have an unsupported interface, please tell me; otherwise I will probably never support it.
If you want to write your own videotext-decoder please refer to the file 'programing.txt' for further information about the routines the driver offers.
INSTALLATION
Due to the fact that this drivers consists of only one single source-file installation should be rather straightforward. Nevertheless you (obviously) need root-privileges to complete the installation.
First, you should uncomment the line defining your videotext-interface in the Makefile. You also have to enter the default I/O-base-address for you card. Checking if the default major-number is already in use and changing it if necessary (use 'cat /proc/devices' to get a list of currently installed drivers & major-numbers) would also be a good idea. Also, you can change the directories, permissions and groups of the files to install if you like.
Now you can compile the driver with 'make' and install it (after having logged in as root) with 'make install'. If you already have the modutils installed, you can load the driver with 'insmod <name>'; otherwise please install this package first. To load the driver always when booting the system, insert the command in one of the rc-files in /etc (for Slackware & friends, /etc/rc.d/rc.local is probably the right one).
If you use Linux 1.1.67 or above, you should get the new modutils-package so you can pass commandline arguments when loading the driver. Currently you can redefine the base_io-address with base_io=<address>, the major-number with major=<major-number> and set slow_if=1 if you get lots out timeouts.
If you have an old kernel (1.1.x or older) and get errors about request_region or release_region being undefined when loading the driver, you should uncomment the line containing 'NO_REQUEST_REGION' in the Makefile. If you get errors about other undefined symbols, your kernel doesn't export all the necessary symbols (starting from Linux 1.1.63, all necessary symbols are exported). To change this, you have to edit the file 'kernel/ksysms.c' in your Linux source-tree. Just enter the symbols insmod complained about here (omit the leading '_'; look at the other symbols defined there); you also might have to insert the line '#include <linux/delay.h>' somewhere at the beginning of the file. After booting the new kernel, insmod should succeed.
Beware: If you use the driver with an interface attached to a serial or parallel port, you may not access the corresponding port while you use the videotext-driver. If you use the port only for VideoteXt, it would be best do disable the other driver for this port completely. Unfortunately, Linux isn't able to disable the other driver temporarily, as soon as the videotext-driver is accessed.
BUGS
If you encounter any problems when using this driver, please send me an exact description of the bug and, if possible, how to repeat it. If the driver doesn't work at all with a particular interface, please uncomment the line 'DEBUG = -DDEBUG_VTX' in the Makefile and recompile the driver. Then you should load the driver with 'insmod vtx.o debug=2' and request a page with 'vtxget 100'. The log- and errormessages which should appear in your syslog then will (hopefully) tell me what's wrong.
If you get kernel-panics etc. please send me the complete register-dump:
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
Additionally I need the start-address of the driver which is printed by insmod when loading the driver (module `vtx.drv' (1 pages @ 0x0100e000) created). ^^^^^^^^^^
Also, you should include the symbol-dump of the driver's object-file (create it with 'nm vtx.o'). If you use the new modutils (>1.1.67), the startaddress isn't printed by default. Instead use the '-m'-option with insmod and send me the symbol-table that will be printed.
If only one of these details is missing, your bug-report is worthless to me.
COPYRIGHT
You may distribute this driver freely under the terms of the GNU General Public License (file 'COPYING').
Now have fun with this driver,
Martin Buck
Internet: <martin-2.buck@student.uni-ulm.de> Snail-Mail: Martin Buck, Paukengasse 2, D-89077 Ulm, Germany
