$Id: README.hysdn,v 1.3.6.1 2001/02/10 14:41:19 kai Exp $
The hysdn driver has been written by
Werner Cornelius (werner@isdn4linux.de or werner@titro.de)
for Hypercope GmbH Aachen Germany. Hypercope agreed to publish this driver
under the GNU General Public License.

The CAPI 2.0-support was added by Ulrich Albrecht (ualbrecht@hypercope.de)
for Hypercope GmbH Aachen, Germany.


    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Table of contents
=================

1. About the driver

2. Loading/Unloading the driver

3. Entries in the /proc filesystem

4. The /proc/net/hysdn/cardconfX file

5. The /proc/net/hysdn/cardlogX file

6. Where to get additional info and help


1. About the driver

   The drivers/isdn/hysdn subdir contains a driver for HYPERCOPEs active 
   PCI isdn cards Champ, Ergo and Metro. To enable support for this cards
   enable ISDN support in the kernel config and support for HYSDN cards in
   the active cards submenu. The driver may only be compiled and used if 
   support for loadable modules and the process filesystem have been enabled.

   These cards provide two different interfaces to the kernel. Without the
   optional CAPI 2.0 support, they register as ethernet card. IP-routing
   to a ISDN-destination is performed on the card itself. All necessary
   handlers for various protocols like ppp and others as well as config info
   and firmware may be fetched from Hypercopes WWW-Site www.hypercope.de.

   With CAPI 2.0 support enabled, the card can also be used as a CAPI 2.0 
   compliant devices with either CAPI 2.0 applications 
   (check isdn4k-utils) or -using the capidrv module- as a regular
   isdn4linux device. This is done via the same mechanism as with the 
   active AVM cards and in fact uses the same module.
   

2. Loading/Unloading the driver

   The module has no command line parameters and auto detects up to 10 cards
   in the id-range 0-9.
   If a loaded driver shall be unloaded all open files in the /proc/net/hysdn
   subdir need to be closed and all ethernet interfaces allocated by this 
   driver must be shut down. Otherwise the module counter will avoid a module
   unload.
   
   If you are using the CAPI 2.0-interface, make sure to load/modprobe the
   kernelcapi-module first.

   If you plan to use the capidrv-link to isdn4linux, make sure to load
   capidrv.o after all modules using this driver (i.e. after hysdn and
   any avm-specific modules).

3. Entries in the /proc filesystem

   When the module has been loaded it adds the directory hysdn in the 
   /proc/net tree. This directory contains exactly 2 file entries for each 
   card. One is called cardconfX and the other cardlogX, where X is the
   card id number from 0 to 9. 
   The cards are numbered in the order found in the PCI config data.

4. The /proc/net/hysdn/cardconfX file

   This file may be read to get by everyone to get info about the cards type, 
   actual state, available features and used resources.
   The first 3 entries (id, bus and slot) are PCI info fields, the following
   type field gives the information about the cards type:

   4 -> Ergo card (server card with 2 b-chans)
   5 -> Metro card (server card with 4 or 8 b-chans)
   6 -> Champ card (client card with 2 b-chans)   

   The following 3 fields show the hardware assignments for irq, iobase and the
   dual ported memory (dp-mem).
   The fields b-chans and fax-chans announce the available card resources of
   this types for the user.
   The state variable indicates the actual drivers state for this card with the
   following assignments.

   0 -> card has not been booted since driver load
   1 -> card booting is actually in progess
   2 -> card is in an error state due to a previous boot failure
   3 -> card is booted and active

   And the last field (device) shows the name of the ethernet device assigned
   to this card. Up to the first successful boot this field only shows a -
   to tell that no net device has been allocated up to now. Once a net device
   has been allocated it remains assigned to this card, even if a card is
   rebooted and an boot error occurs. 

   Writing to the cardconfX file boots the card or transfers config lines to 
   the cards firmware. The type of data is automatically detected when the 
   first data is written. Only root has write access to this file.
   The firmware boot files are normally called hyclient.pof for client cards
   and hyserver.pof for server cards.
   After successfully writing the boot file, complete config files or single
   config lines may be copied to this file.
   If an error occurs the return value given to the writing process has the 
   following additional codes (decimal):

   1000 Another process is currently bootng the card
   1001 Invalid firmware header
   1002 Boards dual-port RAM test failed
   1003 Internal firmware handler error
   1004 Boot image size invalid
   1005 First boot stage (bootstrap loader) failed
   1006 Second boot stage failure
   1007 Timeout waiting for card ready during boot
   1008 Operation only allowed in booted state
   1009 Config line too long 
   1010 Invalid channel number 
   1011 Timeout sending config data

   Additional info about error reasons may be fetched from the log output. 

5. The /proc/net/hysdn/cardlogX file
   	  
   The cardlogX file entry may be opened multiple for reading by everyone to 
   get the cards and drivers log data. Card messages always start with the
   keyword LOG. All other lines are output from the driver. 
   The driver log data may be redirected to the syslog by selecting the 
   appropriate bitmask. The cards log messages will always be send to this
   interface but never to the syslog.

   A root user may write a decimal or hex (with 0x) value t this file to select
   desired output options. As mentioned above the cards log dat is always 
   written to the cardlog file independent of the following options only used
   to check and debug the driver itself:

   For example: 
   echo "0x34560078" > /proc/net/hysdn/cardlog0
   to output the hex log mask 34560078 for card 0.
 
   The written value is regarded as an unsigned 32-Bit value, bit ored for 
   desired output. The following bits are already assigned:

   0x80000000   All driver log data is alternatively via syslog 
   0x00000001   Log memory allocation errors
   0x00000010   Firmware load start and close are logged
   0x00000020   Log firmware record parser
   0x00000040   Log every firmware write actions
   0x00000080   Log all card related boot messages
   0x00000100   Output all config data sent for debugging purposes
   0x00000200   Only non comment config lines are shown wth channel
   0x00000400   Additional conf log output
   0x00001000   Log the asynchronous scheduler actions (config and log)
   0x00100000   Log all open and close actions to /proc/net/hysdn/card files
   0x00200000   Log all actions from /proc file entries
   0x00010000   Log network interface init and deinit
   
6. Where to get additional info and help

   If you have any problems concerning the driver or configuration contact 
   the Hypercope support team (support@hypercope.de) and or the authors
   Werner Cornelius (werner@isdn4linux or cornelius@titro.de) or
   Ulrich Albrecht (ualbrecht@hypercope.de).















