Text File for the SMC TokenCard TokenRing Linux driver (smctr.c).
        By Jay Schulist <jschlst@samba.org>

The Linux SMC Token Ring driver works with the SMC TokenCard Elite (8115T) 
ISA and SMC TokenCard Elite/A (8115T/A) MCA adapters.

Latest information on this driver can be obtained on the Linux-SNA WWW site.
Please point your browser to: http://www.linux-sna.org

This driver is rather simple to use. Select Y to Token Ring adapter support
in the kernel configuration. A choice for SMC Token Ring adapters will
appear. This drives supports all SMC ISA/MCA adapters. Choose this
option. I personally recommend compiling the driver as a module (M), but if you
you would like to compile it staticly answer Y instead.

This driver supports multiple adapters without the need to load multiple copies
of the driver. You should be able to load up to 7 adapters without any kernel
modifications, if you are in need of more please contact the maintainer of this
driver.

Load the driver either by lilo/loadlin or as a module. When a module using the
following command will suffice for most:

# modprobe smctr
smctr.c: v1.00 12/6/99 by jschlst@samba.org
tr0: SMC TokenCard 8115T at Io 0x300, Irq 10, Rom 0xd8000, Ram 0xcc000.

Now just setup the device via ifconfig and set and routes you may have. After
this you are ready to start sending some tokens.

Errata:
1). For anyone wondering where to pick up the SMC adapters please browse
    to http://www.smc.com

2). If you are the first/only Token Ring Client on a Token Ring LAN, please
    specify the ringspeed with the ringspeed=[4/16] module option. If no
    ringspeed is specified the driver will attempt to autodetect the ring
    speed and/or if the adapter is the first/only station on the ring take
    the appropriate actions. 

    NOTE: Default ring speed is 16MB UTP.

3). PnP support for this adapter sucks. I recommend hard setting the 
    IO/MEM/IRQ by the jumpers on the adapter. If this is not possible
    load the module with the following io=[ioaddr] mem=[mem_addr]
    irq=[irq_num].

    The following IRQ, IO, and MEM settings are supported.

    IO ports:
    0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0, 0x300,
    0x320, 0x340, 0x360, 0x380.

    IRQs:
    2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15

    Memory addresses:
    0xA0000, 0xA4000, 0xA8000, 0xAC000, 0xB0000, 0xB4000,
    0xB8000, 0xBC000, 0xC0000, 0xC4000, 0xC8000, 0xCC000,
    0xD0000, 0xD4000, 0xD8000, 0xDC000, 0xE0000, 0xE4000,
    0xE8000, 0xEC000, 0xF0000, 0xF4000, 0xF8000, 0xFC000

This driver is under the GNU General Public License. Its Firmware image is
included as an initialized C-array and is licensed by SMC to the Linux
users of this driver. However no warranty about its fitness is expressed or
implied by SMC.
