Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Aug 1995 22:03:45 +0800 (WST)
From:      Peter Wemm <peter@haywire.dialix.com>
To:        CVS-commiters@freefall.FreeBSD.org, cvs-sys@freefall.FreeBSD.org
Subject:   Re: cvs commit: src/sys/i386/isa si.c sireg.h
Message-ID:  <Pine.SV4.3.91.950809213838.1709h-100000@haywire.DIALix.COM>
In-Reply-To: <199508091313.GAA11729@freefall.FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 9 Aug 1995, Peter Wemm wrote:
> peter       95/08/09 06:13:48
> 
>   Modified:    sys/i386/conf  LINT
>   Log:
>   Add Specialix driver to LINT
> 
>   Modified:    sys/i386/eisa  eisadevs.c
>   Log:
>   Add hook for EISA probe for Specialix EISA card.
> 
>   Added:       sys/i386/include  si.h
>                sys/i386/isa  si.c sireg.h
>   Log:
>   Bring in my long-overdue version of the Specialix driver.
>   
>   This was originally ported to BSDI by Andy Rutter <andy@acronym.co.uk>.
>   At the end of the day, this code has very little in common with Andy's
>   version, or the Specialix SYSV version.  Essentially it has been gradually
>   and almost completely rewritten, with LOTS of advice and inspiration from
>   Bruce Evans.  There are a couple of missing bits still, but they are minor.
>   
>   The user-mode "sicontrol" program is in sad shape and will come in soon.
>   Transparent printing died a timely death.. Maybe later..
>   
>   Jeremy Rolls @ Specialix (Development directory) has confirmed this is OK
                                          ^^^^^^^^^ URK! Try: "director"
>   to distribute, and Andy personally sent me his version that I started from.
>   
>   Although this driver stood up to a nasty stress-test in this form, I am not
>   confident that there are no nasty bugs lurking.
>   
>   People are welcome to try it, but dont go out and buy one just yet.. :-)
>   And *DONT* use it on a mission-critical machine... This is ALPHA QUALITY!


This is what I used in MAKEDEV to create some nodes.  Since you can get 
96 ports per system with the driver as it currently stands, or 128 with a 
modification-to-be-written-yet, naming the devices is a problem.. :-(
ttyA*, ttyB*, ttyC*, ttyD* could all be taken up with the current 
"ttyminor" implementation.  (ttyD* would probably conflict withe the 
Digiboard driver...)

The driver uses the same initial/lock devices as sio and cy.  You 
probably want to set the initial crtscts on in /etc/rc.serial..

# Specialix
ttyA?)
	unit=`expr $i : 'tty.*\(.\)$'`
	rm -f tty*A$unit
	m=`ttyminor $unit`
	mknod ttyA$unit c 68 `expr $m - 1`
	mknod ttyiA$unit c 68 `expr $m + 65536 - 1`
	mknod ttylA$unit c 68 `expr $m + 131072 - 1`
	chown root.wheel ttyA$unit
	;;
cuaA?)
	umask 7
	unit=`expr $i : 'cua.*\(.\)$'`
	rm -f cuaA$unit
	m=`ttyminor $unit`
	mknod cuaA$unit c 68 `expr $m + 128 - 1`
	chown uucp.dialer cuaA$unit
	umask 77
	;;

# the user mode process "gets" to the card via this..
si_control)
	rm -f si_control
	mknod si_control c 68 262144
	chmod 600 si_control
	chown root.wheel si_control
	;;

I think it's time to bite the bullet and start work on extending the tty 
column widths in ps, w, finger, etc.  It'd be nice to be consistant with 
the manuals that come with the hardware and use ttyA1 through ttyA128 
without getting it truncated around the place..

BTW: I know.. there is no vendor branch, because the copy on freefall *is*
the master.. :-) There was little to be gained by importing Andy's version
as a vendor branch, because he apparently isn't working on it and hasn't
for the last few years..  And besides, there was a near 100% conflict
rate, defeating the purpose.. 

The missing user-mode sicontrol program isn't much use anymore, except 
for tuning the interupt characteristics, and for fine-grained debugging 
control.  A lot of it's previous function was made obsolete by the use of 
the initial/lock devices.  This program also used to actually boot the 
card and download the firmware.. but that was too unwieldy if you want a 
slip/ppp connection early in the boot sequence.

Oh, note that "comcontrol" is applicable to this driver as well. It uses 
the same ioctl's to control the dtr hold-down and the drain waits.

What's still to be done:
- there's still some redundant code to come out
- the user mode control program needs to be cleaned up and finished
- a curses-monitor program like the slxview on the SVR4 version would be 
  **very** nice..
- proper "polling" mode needs to be implemented.. where it runs on a 
  1-tick timeout and can handle 4 host cards (128 ports) instead of 3 (96 
  ports).
- somebody with an eisa card needs to be brave enough to test it and 
  fix it..  I can't.. :-(
- I think the tty driver needs to have some finger on the pulse of what's 
  going on with the rts/cts/xon/xoff flow control...
- the output cooking should be enabled once the tty driver can do it 
  cleanly.. this is only a very minor gain though...
- finally, the code needs to be optimized..  bleah. it's a mess in 
  there..  the circular 256 byte input and output buffers are messy.

Comments welcome.. Bugfixes greatly appreciated!

-Peter




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.SV4.3.91.950809213838.1709h-100000>