mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 22:26:12 +00:00 
			
		
		
		
	 1da177e4c3
			
		
	
	
		1da177e4c3
		
	
	
	
	
		
			
			Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
		
			
				
	
	
		
			249 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			249 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| 		COMX drivers for the 2.2 kernel
 | |
| 
 | |
| Originally written by: Tivadar Szemethy, <tiv@itc.hu>
 | |
| Currently maintained by: Gergely Madarasz <gorgo@itc.hu>
 | |
| 
 | |
| Last change: 21/06/1999.
 | |
| 
 | |
| INTRODUCTION
 | |
| 
 | |
| This document describes the software drivers and their use for the 
 | |
| COMX line of synchronous serial adapters for Linux version 2.2.0 and
 | |
| above.
 | |
| The cards are produced and sold by ITC-Pro Ltd. Budapest, Hungary
 | |
| For further info contact <info@itc.hu> 
 | |
| or http://www.itc.hu (mostly in Hungarian).
 | |
| The firmware files and software are available from ftp://ftp.itc.hu
 | |
| 
 | |
| Currently, the drivers support the following cards and protocols:
 | |
| 
 | |
| COMX (2x64 kbps intelligent board)
 | |
| CMX (1x256 + 1x128 kbps intelligent board)
 | |
| HiCOMX (2x2Mbps intelligent board)
 | |
| LoCOMX (1x512 kbps passive board)
 | |
| MixCOM (1x512 or 2x512kbps passive board with a hardware watchdog an
 | |
| 	optional BRI interface and optional flashROM (1-32M))
 | |
| SliceCOM	(1x2Mbps channelized E1 board)
 | |
| PciCOM	(X21)
 | |
| 
 | |
| At the moment of writing this document, the (Cisco)-HDLC, LAPB, SyncPPP and
 | |
| Frame Relay (DTE, rfc1294 IP encapsulation with partially implemented Q933a 
 | |
| LMI) protocols are available as link-level protocol. 
 | |
| X.25 support is being worked on.
 | |
| 
 | |
| USAGE
 | |
| 
 | |
| Load the comx.o module and the hardware-specific and protocol-specific 
 | |
| modules you'll need into the running kernel using the insmod utility.
 | |
| This creates the /proc/comx directory.
 | |
| See the example scripts in the 'etc' directory.
 | |
| 
 | |
| /proc INTERFACE INTRO
 | |
| 
 | |
| The COMX driver set has a new type of user interface based on the /proc 
 | |
| filesystem which eliminates the need for external user-land software doing 
 | |
| IOCTL calls. 
 | |
| Each network interface or device (i.e. those ones you configure with 'ifconfig'
 | |
| and 'route' etc.) has a corresponding directory under /proc/comx. You can
 | |
| dynamically create a new interface by saying 'mkdir /proc/comx/comx0' (or you
 | |
| can name it whatever you want up to 8 characters long, comx[n] is just a 
 | |
| convention).
 | |
| Generally the files contained in these directories are text files, which can
 | |
| be viewed by 'cat filename' and you can write a string to such a file by
 | |
| saying 'echo _string_ >filename'. This is very similar to the sysctl interface.
 | |
| Don't use a text editor to edit these files, always use 'echo' (or 'cat'
 | |
| where appropriate).
 | |
| When you've created the comx[n] directory, two files are created automagically
 | |
| in it: 'boardtype' and 'protocol'. You have to fill in these files correctly
 | |
| for your board and protocol you intend to use (see the board and protocol 
 | |
| descriptions in this file below or the example scripts in the 'etc' directory).
 | |
| After filling in these files, other files will appear in the directory for 
 | |
| setting the various hardware- and protocol-related informations (for example
 | |
| irq and io addresses, keepalive values etc.) These files are set to default 
 | |
| values upon creation, so you don't necessarily have to change all of them.
 | |
| 
 | |
| When you're ready with filling in the files in the comx[n] directory, you can
 | |
| configure the corresponding network interface with the standard network 
 | |
| configuration utilities. If you're unable to bring the interfaces up, look up
 | |
| the various kernel log files on your system, and consult the messages for
 | |
| a probable reason.
 | |
| 
 | |
| EXAMPLE
 | |
| 
 | |
| To create the interface 'comx0' which is the first channel of a COMX card:
 | |
| 
 | |
| insmod comx 
 | |
| # insmod comx-hw-comx ; insmod comx-proto-ppp  (these are usually
 | |
| autoloaded if you use the kernel module loader)
 | |
| 
 | |
| mkdir /proc/comx/comx0
 | |
| echo comx >/proc/comx/comx0/boardtype
 | |
| echo 0x360 >/proc/comx/comx0/io		<- jumper-selectable I/O port 
 | |
| echo 0x0a >/proc/comx/comx0/irq		<- jumper-selectable IRQ line
 | |
| echo 0xd000 >/proc/comx/comx0/memaddr	<- software-configurable memory
 | |
| 					   address. COMX uses 64 KB, and this
 | |
| 					   can be: 0xa000, 0xb000, 0xc000, 
 | |
| 					   0xd000, 0xe000. Avoid conflicts
 | |
| 					   with other hardware.
 | |
| cat </etc/siol1.rom >/proc/comx/comx0/firmware <- the firmware for the card
 | |
| echo HDLC >/proc/comx/comx0/protocol	<- the data-link protocol
 | |
| echo 10 >/proc/comx/comx0/keepalive	<- the keepalive for the protocol
 | |
| ifconfig comx0 1.2.3.4 pointopoint 5.6.7.8 netmask 255.255.255.255 <-
 | |
| 					   finally configure it with ifconfig
 | |
| Check its status:
 | |
| cat /proc/comx/comx0/status
 | |
| 
 | |
| If you want to use the second channel of this board:
 | |
| 
 | |
| mkdir /proc/comx/comx1
 | |
| echo comx >/proc/comx/comx1/boardtype
 | |
| echo 0x360 >/proc/comx/comx1/io	
 | |
| echo 10 >/proc/comx/comx1/irq		
 | |
| echo 0xd000 >/proc/comx/comx1/memaddr
 | |
| echo 1 >/proc/comx/comx1/channel	<- channels are numbered 
 | |
| 					   as 0 (default) and 1
 | |
| 
 | |
| Now, check if the driver recognized that you're going to use the other
 | |
| channel of the same adapter:
 | |
| 
 | |
| cat /proc/comx/comx0/twin
 | |
| comx1
 | |
| cat /proc/comx/comx1/twin
 | |
| comx0
 | |
| 
 | |
| You don't have to load the firmware twice, if you use both channels of
 | |
| an adapter, just write it into the channel 0's /proc firmware file.
 | |
| 
 | |
| Default values: io 0x360 for COMX, 0x320 (HICOMX), irq 10, memaddr 0xd0000
 | |
| 
 | |
| THE LOCOMX HARDWARE DRIVER
 | |
| 
 | |
| The LoCOMX driver doesn't require firmware, and it doesn't use memory either,
 | |
| but it uses DMA channels 1 and 3. You can set the clock rate (if enabled by
 | |
| jumpers on the board) by writing the kbps value into the file named 'clock'.
 | |
| Set it to 'external' (it is the default) if you have external clock source.
 | |
| 
 | |
| (Note: currently the LoCOMX driver does not support the internal clock)
 | |
| 
 | |
| THE COMX, CMX AND HICOMX DRIVERS
 | |
| 
 | |
| On the HICOMX, COMX and CMX, you have to load the firmware (it is different for
 | |
| the three cards!). All these adapters can share the same memory
 | |
| address (we usually use 0xd0000). On the CMX you can set the internal
 | |
| clock rate (if enabled by jumpers on the small adapter boards) by writing
 | |
| the kbps value into the 'clock' file. You have to do this before initializing
 | |
| the card. If you use both HICOMX and CMX/COMX cards, initialize the HICOMX
 | |
| first. The I/O address of the HICOMX board is not configurable by any
 | |
| method available to the user: it is hardwired to 0x320, and if you have to 
 | |
| change it, consult ITC-Pro Ltd.
 | |
| 
 | |
| THE MIXCOM DRIVER
 | |
| 
 | |
| The MixCOM board doesn't require firmware, the driver communicates with
 | |
| it through I/O ports. You can have three of these cards in one machine.
 | |
| 
 | |
| THE SLICECOM DRIVER
 | |
| 
 | |
| The SliceCOM board doesn't require firmware. You can have 4 of these cards
 | |
| in one machine. The driver doesn't (yet) support shared interrupts, so
 | |
| you will need a separate IRQ line for every board.
 | |
| Read Documentation/networking/slicecom.txt for help on configuring
 | |
| this adapter.
 | |
| 
 | |
| THE HDLC/PPP LINE PROTOCOL DRIVER
 | |
| 
 | |
| The HDLC/SyncPPP line protocol driver uses the kernel's built-in syncppp
 | |
| driver (syncppp.o). You don't have to manually select syncppp.o when building
 | |
| the kernel, the dependencies compile it in automatically.
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| EXAMPLE
 | |
| (setting up hw parameters, see above)
 | |
| 
 | |
| # using HDLC:
 | |
| echo hdlc >/proc/comx/comx0/protocol
 | |
| echo 10 >/proc/comx/comx0/keepalive	<- not necessary, 10 is the default
 | |
| ifconfig comx0 1.2.3.4 pointopoint 5.6.7.8 netmask 255.255.255.255
 | |
| 
 | |
| (setting up hw parameters, see above)
 | |
| 
 | |
| # using PPP:
 | |
| echo ppp >/proc/comx/comx0/protocol
 | |
| ifconfig comx0 up
 | |
| ifconfig comx0 1.2.3.4 pointopoint 5.6.7.8 netmask 255.255.255.255
 | |
| 
 | |
| 
 | |
| THE LAPB LINE PROTOCOL DRIVER
 | |
| 
 | |
| For this, you'll need to configure LAPB support (See 'LAPB Data Link Driver' in
 | |
| 'Network options' section) into your kernel (thanks to Jonathan Naylor for his 
 | |
| excellent implementation). 
 | |
| comx-proto-lapb.o provides the following files in the appropriate directory
 | |
| (the default values in parens): t1 (5), t2 (1), n2 (20), mode (DTE, STD) and
 | |
| window (7). Agree with the administrator of your peer router on these
 | |
| settings (most people use defaults, but you have to know if you are DTE or
 | |
| DCE).
 | |
| 
 | |
| EXAMPLE
 | |
| 
 | |
| (setting up hw parameters, see above)
 | |
| echo lapb >/proc/comx/comx0/protocol
 | |
| echo dce >/proc/comx/comx0/mode		<- DCE interface in this example
 | |
| ifconfig comx0 1.2.3.4 pointopoint 5.6.7.8 netmask 255.255.255.255
 | |
| 
 | |
| 
 | |
| THE FRAME RELAY PROTOCOL DRIVER
 | |
| 
 | |
| You DON'T need any other frame relay related modules from the kernel to use
 | |
| COMX-Frame Relay. This protocol is a bit more complicated than the others, 
 | |
| because it allows to use 'subinterfaces' or DLCIs within one physical device.
 | |
| First you have to create the 'master' device (the actual physical interface)
 | |
| as you would do for other protocols. Specify 'frad' as protocol type.
 | |
| Now you can bring this interface up by saying 'ifconfig comx0 up' (or whatever
 | |
| you've named the interface). Do not assign any IP address to this interface
 | |
| and do not set any routes through it.
 | |
| Then, set up your DLCIs the following way: create a comx interface for each
 | |
| DLCI you intend to use (with mkdir), and write 'dlci' to the 'boardtype' file, 
 | |
| and 'ietf-ip' to the 'protocol' file. Currently, the only supported 
 | |
| encapsulation type is this (also called as RFC1294/1490 IP encapsulation).
 | |
| Write the DLCI number to the 'dlci' file, and write the name of the physical
 | |
| COMX device to the file called 'master'. 
 | |
| Now you can assign an IP address to this interface and set routes using it.
 | |
| See the example file for further info and example config script.
 | |
| Notes: this driver implements a DTE interface with partially implemented
 | |
| Q933a LMI.
 | |
| You can find an extensively commented example in the 'etc' directory.
 | |
| 
 | |
| FURTHER /proc FILES
 | |
| 
 | |
| boardtype:
 | |
| Type of the hardware. Valid values are:
 | |
|  'comx', 'hicomx', 'locomx', 'cmx', 'slicecom'.
 | |
| 
 | |
| protocol:
 | |
| Data-link protocol on this channel. Can be: HDLC, LAPB, PPP, FRAD
 | |
| 
 | |
| status:
 | |
| You can read the channel's actual status from the 'status' file, for example
 | |
| 'cat /proc/comx/comx3/status'.
 | |
| 
 | |
| lineup_delay:
 | |
| Interpreted in seconds (default is 1). Used to avoid line jitter: the system
 | |
| will consider the line status 'UP' only if it is up for at least this number
 | |
| of seconds.
 | |
| 
 | |
| debug: 
 | |
| You can set various debug options through this file. Valid options are:
 | |
| 'comx_events', 'comx_tx', 'comx_rx', 'hw_events', 'hw_tx', 'hw_rx'.
 | |
| You can enable a debug options by writing its name prepended by a '+' into
 | |
| the debug file, for example 'echo +comx_rx >comx0/debug'. 
 | |
| Disabling an option happens similarly, use the '-' prefix 
 | |
| (e.g. 'echo -hw_rx >debug').
 | |
| Debug results can be read from the debug file, for example: 
 | |
| tail -f /proc/comx/comx2/debug
 | |
| 
 | |
| 
 |