History log of /freebsd-11-stable/sys/dev/si/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
335087 13-Jun-2018 dim

Fix build of si with base gcc on i386

Casting from rman_res_t to a pointer results in "cast to pointer from
integer of different size" warnings with base gcc on i386, so use
intermediate casts to uintptr_t to suppress these.

Direct commit to stable/11, since si(4) has been removed from head.

Reviewed by: jhb
Differential Revision: https://reviews.freebsd.org/D15752

320921 12-Jul-2017 jhb

Add deprecation notices for various device drivers removed in 12.0.

This is a direct commit to stable/11 since these files have already
been removed in head.

Reviewed by: sbruno, gjb
Differential Revision: https://reviews.freebsd.org/D11542

302408 08-Jul-2016 gjb

Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle.
Prune svn:mergeinfo from the new branch, as nothing has been merged
here.

Additional commits post-branch will follow.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


/freebsd-11-stable/MAINTAINERS
/freebsd-11-stable/cddl
/freebsd-11-stable/cddl/contrib/opensolaris
/freebsd-11-stable/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print
/freebsd-11-stable/cddl/contrib/opensolaris/cmd/zfs
/freebsd-11-stable/cddl/contrib/opensolaris/lib/libzfs
/freebsd-11-stable/contrib/amd
/freebsd-11-stable/contrib/apr
/freebsd-11-stable/contrib/apr-util
/freebsd-11-stable/contrib/atf
/freebsd-11-stable/contrib/binutils
/freebsd-11-stable/contrib/bmake
/freebsd-11-stable/contrib/byacc
/freebsd-11-stable/contrib/bzip2
/freebsd-11-stable/contrib/com_err
/freebsd-11-stable/contrib/compiler-rt
/freebsd-11-stable/contrib/dialog
/freebsd-11-stable/contrib/dma
/freebsd-11-stable/contrib/dtc
/freebsd-11-stable/contrib/ee
/freebsd-11-stable/contrib/elftoolchain
/freebsd-11-stable/contrib/elftoolchain/ar
/freebsd-11-stable/contrib/elftoolchain/brandelf
/freebsd-11-stable/contrib/elftoolchain/elfdump
/freebsd-11-stable/contrib/expat
/freebsd-11-stable/contrib/file
/freebsd-11-stable/contrib/gcc
/freebsd-11-stable/contrib/gcclibs/libgomp
/freebsd-11-stable/contrib/gdb
/freebsd-11-stable/contrib/gdtoa
/freebsd-11-stable/contrib/groff
/freebsd-11-stable/contrib/ipfilter
/freebsd-11-stable/contrib/ldns
/freebsd-11-stable/contrib/ldns-host
/freebsd-11-stable/contrib/less
/freebsd-11-stable/contrib/libarchive
/freebsd-11-stable/contrib/libarchive/cpio
/freebsd-11-stable/contrib/libarchive/libarchive
/freebsd-11-stable/contrib/libarchive/libarchive_fe
/freebsd-11-stable/contrib/libarchive/tar
/freebsd-11-stable/contrib/libc++
/freebsd-11-stable/contrib/libc-vis
/freebsd-11-stable/contrib/libcxxrt
/freebsd-11-stable/contrib/libexecinfo
/freebsd-11-stable/contrib/libpcap
/freebsd-11-stable/contrib/libstdc++
/freebsd-11-stable/contrib/libucl
/freebsd-11-stable/contrib/libxo
/freebsd-11-stable/contrib/llvm
/freebsd-11-stable/contrib/llvm/projects/libunwind
/freebsd-11-stable/contrib/llvm/tools/clang
/freebsd-11-stable/contrib/llvm/tools/lldb
/freebsd-11-stable/contrib/llvm/tools/llvm-dwarfdump
/freebsd-11-stable/contrib/llvm/tools/llvm-lto
/freebsd-11-stable/contrib/mdocml
/freebsd-11-stable/contrib/mtree
/freebsd-11-stable/contrib/ncurses
/freebsd-11-stable/contrib/netcat
/freebsd-11-stable/contrib/ntp
/freebsd-11-stable/contrib/nvi
/freebsd-11-stable/contrib/one-true-awk
/freebsd-11-stable/contrib/openbsm
/freebsd-11-stable/contrib/openpam
/freebsd-11-stable/contrib/openresolv
/freebsd-11-stable/contrib/pf
/freebsd-11-stable/contrib/sendmail
/freebsd-11-stable/contrib/serf
/freebsd-11-stable/contrib/sqlite3
/freebsd-11-stable/contrib/subversion
/freebsd-11-stable/contrib/tcpdump
/freebsd-11-stable/contrib/tcsh
/freebsd-11-stable/contrib/tnftp
/freebsd-11-stable/contrib/top
/freebsd-11-stable/contrib/top/install-sh
/freebsd-11-stable/contrib/tzcode/stdtime
/freebsd-11-stable/contrib/tzcode/zic
/freebsd-11-stable/contrib/tzdata
/freebsd-11-stable/contrib/unbound
/freebsd-11-stable/contrib/vis
/freebsd-11-stable/contrib/wpa
/freebsd-11-stable/contrib/xz
/freebsd-11-stable/crypto/heimdal
/freebsd-11-stable/crypto/openssh
/freebsd-11-stable/crypto/openssl
/freebsd-11-stable/gnu/lib
/freebsd-11-stable/gnu/usr.bin/binutils
/freebsd-11-stable/gnu/usr.bin/cc/cc_tools
/freebsd-11-stable/gnu/usr.bin/gdb
/freebsd-11-stable/lib/libc/locale/ascii.c
/freebsd-11-stable/sys/cddl/contrib/opensolaris
/freebsd-11-stable/sys/contrib/dev/acpica
/freebsd-11-stable/sys/contrib/ipfilter
/freebsd-11-stable/sys/contrib/libfdt
/freebsd-11-stable/sys/contrib/octeon-sdk
/freebsd-11-stable/sys/contrib/x86emu
/freebsd-11-stable/sys/contrib/xz-embedded
/freebsd-11-stable/usr.sbin/bhyve/atkbdc.h
/freebsd-11-stable/usr.sbin/bhyve/bhyvegc.c
/freebsd-11-stable/usr.sbin/bhyve/bhyvegc.h
/freebsd-11-stable/usr.sbin/bhyve/console.c
/freebsd-11-stable/usr.sbin/bhyve/console.h
/freebsd-11-stable/usr.sbin/bhyve/pci_fbuf.c
/freebsd-11-stable/usr.sbin/bhyve/pci_xhci.c
/freebsd-11-stable/usr.sbin/bhyve/pci_xhci.h
/freebsd-11-stable/usr.sbin/bhyve/ps2kbd.c
/freebsd-11-stable/usr.sbin/bhyve/ps2kbd.h
/freebsd-11-stable/usr.sbin/bhyve/ps2mouse.c
/freebsd-11-stable/usr.sbin/bhyve/ps2mouse.h
/freebsd-11-stable/usr.sbin/bhyve/rfb.c
/freebsd-11-stable/usr.sbin/bhyve/rfb.h
/freebsd-11-stable/usr.sbin/bhyve/sockstream.c
/freebsd-11-stable/usr.sbin/bhyve/sockstream.h
/freebsd-11-stable/usr.sbin/bhyve/usb_emul.c
/freebsd-11-stable/usr.sbin/bhyve/usb_emul.h
/freebsd-11-stable/usr.sbin/bhyve/usb_mouse.c
/freebsd-11-stable/usr.sbin/bhyve/vga.c
/freebsd-11-stable/usr.sbin/bhyve/vga.h
298955 03-May-2016 pfg

sys/dev: minor spelling fixes.

Most affect comments, very few have user-visible effects.


296137 27-Feb-2016 jhibbits

Migrate many bus_alloc_resource() calls to bus_alloc_resource_anywhere().

Most calls to bus_alloc_resource() use "anywhere" as the range, with a given
count. Migrate these to use the new bus_alloc_resource_anywhere() API.

Reviewed by: jhb
Differential Revision: https://reviews.freebsd.org/D5370


270224 20-Aug-2014 jhb

Fix build of si(4) and enable it in LINT on amd64 and i386.


267992 28-Jun-2014 hselasky

Pull in r267961 and r267973 again. Fix for issues reported will follow.


267985 27-Jun-2014 gjb

Revert r267961, r267973:

These changes prevent sysctl(8) from returning proper output,
such as:

1) no output from sysctl(8)
2) erroneously returning ENOMEM with tools like truss(1)
or uname(1)
truss: can not get etype: Cannot allocate memory


267961 27-Jun-2014 hselasky

Extend the meaning of the CTLFLAG_TUN flag to automatically check if
there is an environment variable which shall initialize the SYSCTL
during early boot. This works for all SYSCTL types both statically and
dynamically created ones, except for the SYSCTL NODE type and SYSCTLs
which belong to VNETs. A new flag, CTLFLAG_NOFETCH, has been added to
be used in the case a tunable sysctl has a custom initialisation
function allowing the sysctl to still be marked as a tunable. The
kernel SYSCTL API is mostly the same, with a few exceptions for some
special operations like iterating childrens of a static/extern SYSCTL
node. This operation should probably be made into a factored out
common macro, hence some device drivers use this. The reason for
changing the SYSCTL API was the need for a SYSCTL parent OID pointer
and not only the SYSCTL parent OID list pointer in order to quickly
generate the sysctl path. The motivation behind this patch is to avoid
parameter loading cludges inside the OFED driver subsystem. Instead of
adding special code to the OFED driver subsystem to post-load tunables
into dynamically created sysctls, we generalize this in the kernel.

Other changes:
- Corrected a possibly incorrect sysctl name from "hw.cbb.intr_mask"
to "hw.pcic.intr_mask".
- Removed redundant TUNABLE statements throughout the kernel.
- Some minor code rewrites in connection to removing not needed
TUNABLE statements.
- Added a missing SYSCTL_DECL().
- Wrapped two very long lines.
- Avoid malloc()/free() inside sysctl string handling, in case it is
called to initialize a sysctl from a tunable, hence malloc()/free() is
not ready when sysctls from the sysctl dataset are registered.
- Bumped FreeBSD version to indicate SYSCTL API change.

MFC after: 2 weeks
Sponsored by: Mellanox Technologies


247089 21-Feb-2013 imp

Remove incorrect comment about splsoftclock.


193018 29-May-2009 ed

Last minute TTY API change: remove mutex argument from tty_alloc().

I don't want people to override the mutex when allocating a TTY. It has
to be there, to keep drivers like syscons happy. So I'm creating a
tty_alloc_mutex() which can be used in those cases. tty_alloc_mutex()
should eventually be removed.

The advantage of this approach, is that we can just remove a function,
without breaking the regular API in the future.


188266 07-Feb-2009 wkoszek

si_cmdname() is defined only when SI_DEBUG is enabled, thus
using this function in simple printf() causes compile-time
problems. Use conditionally enabled DPRINT() macro instead.


182871 08-Sep-2008 peter

Pass 1 of mpsafetty-ifying si(4). It compiles and has basic functionality,
but needs a lot more work. In particular, it has no flow control and has
a tendency to race when giving commands. It still uses Giant for the
tty and driver lock, but this is a keep-it-simple feature for now.
Some of the [temporary] proliferation of messages lines are way too long.


179668 09-Jun-2008 ed

Remove sicontrol(8)'s "ttystat".

In the FreeBSD base system, there are only two utilities that use struct
tty, namely pstat and sicontrol. The sicontrol utility calls the
TCSI_TTY ioctl(), which copies struct tty back to userspace.

sicontrol should not have this functionality. The same data is already
provided by pstat. If we really want to be able to export these numbers
through a file descriptor to userspace, we can export struct xtty, which
should provide a better abstraction. The ttystat option was only used as
a debugging aid.

This makes sicontrol compile in the mpsafetty branch.

Reviewed by: peter
Approved by: philip (mentor)


179589 06-Jun-2008 peter

Checkpoint what I've been running for the last year. Tidy up a
bunch of loose ends that "can't happen" any more, if they ever could.


174136 01-Dec-2007 peter

Based in info gleaned from the web and other drivers (including the Linux
sx driver), change a magic value in the PLX bridge chip. Apparently later
builds of the PCI cards had corrected values in the configuration eeprom.
This change supposedly fixes some pci bus problems.


166923 23-Feb-2007 piso

o break newbus api: add a new argument of type driver_filter_t to
bus_setup_intr()

o add an int return code to all fast handlers

o retire INTR_FAST/IH_FAST

For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current

Approved by: re (implicit?)


166914 23-Feb-2007 imp

Catchup with filters


166091 18-Jan-2007 marius

Wrap the EISA-specific parts of the dpt(4) and si(4) back-ends in
the newly added DEV_EISA. This is done so that these back-ends can
be compiled on platforms not providing in{b,w,l}()/out{b,w,l}() and
friends (but may wish to use them together with bus front-ends other
than the EISA one).


164033 06-Nov-2006 rwatson

Sweep kernel replacing suser(9) calls with priv(9) calls, assigning
specific privilege names to a broad range of privileges. These may
require some future tweaking.

Sponsored by: nCircle Network Security, Inc.
Obtained from: TrustedBSD Project
Discussed on: arch@
Reviewed (at least in part) by: mlaier, jmg, pjd, bde, ceri,
Alex Lyashkov <umka at sevcity dot net>,
Skip Ford <skip dot ford at verizon dot net>,
Antoine Brodin <antoine dot brodin at laposte dot net>


154087 06-Jan-2006 jhb

- Update copyright years from the Specialix SDK.
- Update comment as this firmware is not used for the SX cards, they use
the si3_t225 firmware instead.


154082 06-Jan-2006 jhb

Update the firmware image used for the SIJET cards to the latest available
in the SDK from Specialix/Perle. The prior version was
JET.BIN Version 3.0.6 Beta I and the new version is JET__.BIN Version 4.0.1.

MFC after: 1 week


154081 06-Jan-2006 jhb

- Fix cards with multiple modules. Prior to this, the ports on the various
modules would have overlapping names.
- Only create /dev/si_control for unit 0.

Tested by: Joerg Lehners Joerg dot Lehners at informatik dot
uni-oldenburg dot de (on 6.x)
MFC after: 1 week


152175 08-Nov-2005 rodrigc

Add #nclude <dev/pci/pcireg.h> to pick up definitions for PCIR_BAR and
PCIR_SUBVEND_0.


152172 07-Nov-2005 jhb

Use PCIR_xxx constants for PCI config space header registers rather than
magic numbers.


151383 16-Oct-2005 phk

Eliminate two unused arguments to ttycreate().


142890 01-Mar-2005 imp

Use BUS_PROBE_DEFAULT in preference to 0 and BUS_PROBE_LOW_PRIORITY in
preference to some random negative number to allow other drivers a
bite at the apple.


139749 06-Jan-2005 imp

Start each of the license/copyright comments with /*-, minor shuffle of lines


136062 02-Oct-2004 phk

Add #ifdef _KERNEL which allows sicontrol(8) to include this file
from userland to get the debugging definitions.


136058 02-Oct-2004 phk

Use generic device/tty adaptation code.

New device names are "{tty|cua}A$(card)$(port)[.init|.lock]"

Put a portname in the port structure if SI_DEBUG is defined to avoid
need to inspect minor number to construct name..

Constify some strings.

Remove duplicated DBG_ #defines.


135367 17-Sep-2004 phk

Use ttyalloc() instead of ttymalloc(NULL)


132771 28-Jul-2004 kan

Avoid casts as lvalues.


132226 15-Jul-2004 phk

Preparation commit for the tty cleanups that will follow in the near
future:

rename ttyopen() -> tty_open() and ttyclose() -> tty_close().

We need the ttyopen() and ttyclose() for the new generic cdevsw
functions for tty devices in order to have consistent naming.


131981 11-Jul-2004 phk

Introduce ttygone() which indicates that the hardware is detached.

Move dtrwait logic to the generic TTY level.


131134 26-Jun-2004 phk

Pick the hotchar out of the tty structure instead of caching private
copies.

No current line disciplines have a dynamically changing hotchar, and
expecting to receive anything sensible during a change in ldisc is
insane so no locking of the hotchar field is necessary.


130892 21-Jun-2004 phk

Put the pre FreeBSD-2.x tty compat code under BURN_BRIDGES.


130585 16-Jun-2004 phk

Do the dreaded s/dev_t/struct cdev */
Bump __FreeBSD_version accordingly.


130344 11-Jun-2004 phk

Deorbit COMPAT_SUNOS.

We inherited this from the sparc32 port of BSD4.4-Lite1. We have neither
a sparc32 port nor a SunOS4.x compatibility desire these days.


130096 04-Jun-2004 phk

Centralize the line discipline optimization determination in a function
called ttyldoptim().

Use this function from all the relevant drivers.

I belive no drivers finger linesw[] directly anymore, paving the way for
locking and refcounting.


130077 04-Jun-2004 phk

Machine generated patch which changes linedisc calls from accessing
linesw[] directly to using the ttyld...() functions

The ttyld...() functions ar inline so there is no performance hit.


130057 04-Jun-2004 phk

Make the remaining serial drivers call ttyioctl() rather than calling
the linedisc directly.


129939 01-Jun-2004 phk

There is no need to explicitly call the stop function. In all likelyhood
->l_close() did it and ttyclose certainly will.


129879 30-May-2004 phk

Add missing <sys/module.h> includes


127135 17-Mar-2004 njl

Convert callers to the new bus_alloc_resource_any(9) API.

Submitted by: Mark Santcroos <marks@ripe.net>
Reviewed by: imp, dfr, bde


126080 21-Feb-2004 phk

Device megapatch 4/6:

Introduce d_version field in struct cdevsw, this must always be
initialized to D_VERSION.

Flip sense of D_NOGIANT flag to D_NEEDGIANT, this involves removing
four D_NOGIANT flags and adding 145 D_NEEDGIANT flags.


126078 21-Feb-2004 phk

Device megapatch 3/6:

Add missing D_TTY flags to various drivers.

Complete asserts that dev_t's passed to ttyread(), ttywrite(),
ttypoll() and ttykqwrite() have (d_flags & D_TTY) and a struct tty
pointer.

Make ttyread(), ttywrite(), ttypoll() and ttykqwrite() the default
cdevsw methods for D_TTY drivers and remove the explicit initializations
in various drivers cdevsw structures.


126076 21-Feb-2004 phk

Device megapatch 1/6:

Free approx 86 major numbers with a mostly automatically generated patch.

A number of strategic drivers have been left behind by caution, and a few
because they still (ab)use their major number.


119419 24-Aug-2003 obrien

Use __FBSDID().
Also some minor style cleanups.


119287 22-Aug-2003 imp

Prefer new location of pci include files (which have only been in the
tree for two or more years now), except in a few places where there's
code to be compatible with older versions of FreeBSD.


111899 05-Mar-2003 das

Make TTYHOG tunable.

Reviewed by: mike (mentor)


111821 03-Mar-2003 phk

Make nokqfilter() return the correct return value.

Ditch the D_KQFILTER flag which was used to prevent calling NULL pointers.


111815 03-Mar-2003 phk

Gigacommit to improve device-driver source compatibility between
branches:

Initialize struct cdevsw using C99 sparse initializtion and remove
all initializations to default values.

This patch is automatically generated and has been tested by compiling
LINT with all the fields in struct cdevsw in reverse order on alpha,
sparc64 and i386.

Approved by: re(scottl)


111748 02-Mar-2003 des

More low-hanging fruit: kill caddr_t in calls to wakeup(9) / [mt]sleep(9).


111002 16-Feb-2003 phk

Remove #include <sys/dkstat.h>


106572 07-Nov-2002 jhb

Cast a pointer to uintptr_t instead ot u_int.


105215 16-Oct-2002 phk

Be consistent about functions being static.

Spotted by: FlexeLint.


100744 27-Jul-2002 peter

Do not try and probe random PNP devices, This Is Bad.
Display reasons why probe/attach fails.


100743 27-Jul-2002 peter

Make si_debug tunable.


93593 01-Apr-2002 jhb

Change the suser() API to take advantage of td_ucred as well as do a
general cleanup of the API. The entire API now consists of two functions
similar to the pre-KSE API. The suser() function takes a thread pointer
as its only argument. The td_ucred member of this thread must be valid
so the only valid thread pointers are curthread and a few kernel threads
such as thread0. The suser_cred() function takes a pointer to a struct
ucred as its first argument and an integer flag as its second argument.
The flag is currently only used for the PRISON_ROOT flag.

Discussed on: smp@


83366 12-Sep-2001 julian

KSE Milestone 2
Note ALL MODULES MUST BE RECOMPILED
make the kernel aware that there are smaller units of scheduling than the
process. (but only allow one thread per process at this time).
This is functionally equivalent to teh previousl -current except
that there is a thread associated with each process.

Sorry john! (your next MFC will be a doosie!)

Reviewed by: peter@freebsd.org, dillon@freebsd.org

X-MFC after: ha ha ha ha


74810 26-Mar-2001 phk

Send the remains (such as I have located) of "block major numbers" to
the bit-bucket.


72685 19-Feb-2001 peter

Use ttymalloc() instead of roll-our-own.


72521 15-Feb-2001 jlemon

Extend kqueue down to the device layer.

Backwards compatible approach suggested by: peter


69781 08-Dec-2000 dwmalone

Convert more malloc+bzero to malloc+M_ZERO.

Submitted by: josh@zipperup.org
Submitted by: Robert Drehmel <robd@gmx.net>


67893 29-Oct-2000 phk

Move suser() and suser_xxx() prototypes and a related #define from
<sys/proc.h> to <sys/systm.h>.

Correctly document the #includes needed in the manpage.

Add one now needed #include of <sys/systm.h>.
Remove the consequent 48 unused #includes of <sys/proc.h>.


67882 29-Oct-2000 phk

Remove unneeded #include <sys/proc.h> lines.


67586 25-Oct-2000 jhb

This driver doesn't have a software interrupt handler, so don't attempt to
schedule a non-existant handler to run.


67164 15-Oct-2000 phk

Remove unneeded #include <machine/clock.h>


56592 25-Jan-2000 peter

Always leave SP_DCEN on (monitor DCD). Otherwise the firmware *really*
does ignore DCD. Even TIOCMGET cannot read DCD as the firmware doesn't
report it. This has pretty interesting effects for ppp(8) which runs
in clocal mode and polls carrier (!). (Specialix's linux driver does
this too)

Also update the firmware to 3.0.6 for the SX cards, as apparently there
was a problem with floating (disconnected) DCD pins causing stray carrier
transitions, especially at port open time.

It seems to work here, and carrier loss is detected nearly immediately
rather than having to wait for a LQR timeout (a few minutes) before ppp(8)
gives up.

DCD problem noted by: nsayer


56506 24-Jan-2000 peter

Ack! I totally botched the pci probe routine which resulted in it trying
to match everything else *but* a specialix pci card. *blush*.


56505 24-Jan-2000 peter

A bit more newbusification of si. This still isn't quite finished.
Split out the bus attachments so the impact of the bus xxxvar.h files
with the inline macros for the ivars are confined to one file each.


56498 23-Jan-2000 peter

Initial attempt at newbusification of the specialix si/xio/sx driver.
The files were repo copied from their original location and are part
way towards being portable.
This should unbreak the EISA support in the driver.
I have not updated files* yet as I'm not quite finished.


53358 18-Nov-1999 peter

Fix some -Wunused warnings


52033 08-Oct-1999 peter

Zap cdevsw_add() - the make_dev's take care of it and don't use
the cdevsw[] array.


51756 28-Sep-1999 phk

Introduce ttyread() and ttywrite() which do the canonical thing.

Use them in many tty drivers.

Reviewed by: julian, bde


51658 25-Sep-1999 phk

Remove five now unused fields from struct cdevsw. They should never
have been there in the first place. A GENERIC kernel shrinks almost 1k.

Add a slightly different safetybelt under nostop for tty drivers.

Add some missing FreeBSD tags


51654 25-Sep-1999 phk

This patch clears the way for removing a number of tty related
fields in struct cdevsw:

d_stop moved to struct tty.
d_reset already unused.
d_devtotty linkage now provided by dev_t->si_tty.

These fields will be removed from struct cdevsw together with
d_params and d_maxio Real Soon Now.

The changes in this patch consist of:

initialize dev->si_tty in *_open()
initialize tty->t_stop
remove devtotty functions
rename ttpoll to ttypoll
a few adjustments to these changes in the generic code
a bump of __FreeBSD_version
add a couple of FreeBSD tags


50671 30-Aug-1999 phk

Null commit to get last commit message recorded:

Avoid name clash with dev_t member si_tty.


50669 30-Aug-1999 phk

*** empty log message ***


50477 28-Aug-1999 peter

$Id$ -> $FreeBSD$


50442 27-Aug-1999 peter

A few style changes (fixes hopefully) and some more tidying up. Fix (?)
the volatile cast warnings.


50435 27-Aug-1999 peter

Don't return 0 for an unknown ioctl (!). This was breaking ppp(8).
Slight tidy up while here.


50254 23-Aug-1999 phk

Convert DEVFS hooks in (most) drivers to make_dev().

Diskslice/label code not yet handled.

Vinum, i4b, alpha, pc98 not dealt with (left to respective Maintainers)

Add the correct hook for devfs to kern_conf.c

The net result of this excercise is that a lot less files depends on DEVFS,
and devtoname() gets more sensible output in many cases.

A few drivers had minor additional cleanups performed relating to cdevsw
registration.

A few drivers don't register a cdevsw{} anymore, but only use make_dev().


50016 18-Aug-1999 nsayer

printf("%x",dev); -> printf("%s",devtoname(dev));


47640 31-May-1999 phk

Simplify cdevsw registration.

The cdevsw_add() function now finds the major number(s) in the
struct cdevsw passed to it. cdevsw_add_generic() is no longer
needed, cdevsw_add() does the same thing.

cdevsw_add() will print an message if the d_maj field looks bogus.

Remove nblkdev and nchrdev variables. Most places they were used
bogusly. Instead check a dev_t for validity by seeing if devsw()
or bdevsw() returns NULL.

Move bdevsw() and devsw() functions to kern/kern_conf.c

Bump __FreeBSD_version to 400006

This commit removes:
72 bogus makedev() calls
26 bogus SYSINIT functions

if_xe.c bogusly accessed cdevsw[], author/maintainer please fix.

I4b and vinum not changed. Patches emailed to authors. LINT
probably broken until they catch up.


47625 30-May-1999 phk

This commit should be a extensive NO-OP:

Reformat and initialize correctly all "struct cdevsw".

Initialize the d_maj and d_bmaj fields.

The d_reset field was not removed, although it is never used.

I used a program to do most of this, so all the files now use the
same consistent format. Please keep it that way.

Vinum and i4b not modified, patches emailed to respective authors.


46813 09-May-1999 peter

Simplify the COMPAT_PCI_DRIVER/DATA_SET hack. We can add:
#define COMPAT_PCI_DRIVER(name,data) DATA_SET(pcidevice_set,data)
.. to 2.2.x and 3.x if people think it's worth it. Driver writers can do
this if it's not defined. (The reason for this is that I'm trying to
progressively eliminate use of linker_sets where it hurts modularity and
runtime load capability, and these DATA_SET's keep getting in the way.)


46679 08-May-1999 phk

Fix some of the places where too much inside knowledge about major/minor
layout and dev_t structure is being (ab)used.


46332 02-May-1999 peter

These two drivers have not been converted for newbus eisa yet.


46153 28-Apr-1999 dt

s/static foo_devsw_installed = 0;/static int foo_devsw_installed;/.
(Edited automatically)


46112 27-Apr-1999 phk

Suser() simplification:

1:
s/suser/suser_xxx/

2:
Add new function: suser(struct proc *), prototyped in <sys/proc.h>.

3:
s/suser_xxx(\([a-zA-Z0-9_]*\)->p_ucred, \&\1->p_acflag)/suser(\1)/

The remaining suser_xxx() calls will be scrutinized and dealt with
later.

There may be some unneeded #include <sys/cred.h>, but they are left
as an exercise for Bruce.

More changes to the suser() API will come along with the "jail" code.


46024 24-Apr-1999 peter

Use COMPAT_PCI_DRIVER() for registration if it exists. This shouldn't
hurt the driver portability to 3.x too much for where drivers are shared.


45577 11-Apr-1999 eivind

Staticize.


45161 30-Mar-1999 nsayer

SX ISA cards are only 32k wide in 8 bit mode (which is the only
mode supported by the manufacturer).

PR: 6255
Submitted by: nsayer


44985 24-Mar-1999 peter

Update Specialix download microcode for the transputer based serial host
cards from the 3.0-beta to 3.0.4 release.

Submitted-by: Nick Sayer <nsayer@quack.kfu.com>
PR: 10674


43425 30-Jan-1999 phk

Use suser() to check for super user rather than examining cr_uid directly.
Use TTYDEF_SPEED rather than 9600 a couple of places.

Reviewed by: bde, with a few grumbles.


42546 12-Jan-1999 eivind

Silence warnings.


38487 23-Aug-1998 bde

Fixed printf format errors. `struct eisa_device' uses a strange type
for the unit number (like most SCSI drivers).


38485 23-Aug-1998 bde

Added D_TTY to the cdevswitch flags for all tty drivers. This is required
for the Lite2 fix for always returning EIO in dead_read().

Cleaned up the cdevswitch initializers for all tty drivers.

Removed explicit calls to ttsetwater() from all (tty) drivers. ttsetwater()
is now called centrally for opens, not just for parameter changes.


38353 16-Aug-1998 bde

Cast an int to (intptr_t) before casting it to (void *).

Don't cast a pointer to a long just to print it.


38351 16-Aug-1998 bde

Fixed yet more ioctl breakage due to the type of the `cmd' arg chaninging
from int to u_long but not changing here.


36956 13-Jun-1998 steve

Add a macro tweak.

PR: 6932
Submitted by: Nick Sayer <nsayer@quack.kfu.com>


36856 10-Jun-1998 phk

Correct name and number for sxdc modules
PR: 6891
Reviewed by: phk
Submitted by: Nick Sayer <nsayer@quack.kfu.com>


36735 07-Jun-1998 dfr

This commit fixes various 64bit portability problems required for
FreeBSD/alpha. The most significant item is to change the command
argument to ioctl functions from int to u_long. This change brings us
inline with various other BSD versions. Driver writers may like to
use (__FreeBSD_version == 300003) to detect this change.

The prototype FreeBSD/alpha machdep will follow in a couple of days
time.


34928 28-Mar-1998 bde

Removed unused #includes.


34832 23-Mar-1998 peter

Several changes:
- Implement proper EISA probing.
- Better support for the new transputer based host cards.
- use standard termios settings, one can use the intial/lock devices.
- use a simple bcopy since some cards/systems apparently don't support
32 bit accesses.
- hard reset and halt host card CPU prior to download in case of a soft
restart.
- recognize new remote module types (ASIC vs. CD1400 based)
- a number of cosmetic changes (my fault, not Nick's)

Submitted by: Nick Sayer <nsayer@quack.kfu.com>


34830 23-Mar-1998 peter

New versions of Specialix host card download code.

Submitted by: Nick Sayer <nick@quack.kfu.com>


34736 21-Mar-1998 peter

merge from 2.2


34735 21-Mar-1998 peter

Merge from 2.2, plus some other changes. In the config file entry,
'vector siintr' isn't used since the handler is assigned internally.


33395 15-Feb-1998 peter

Update to support SI/XIO PCI host cards (Z280 based) and the enhanced
SXISA and SXPCI host cards (Transputer based).

PR: 4836, 5021, 5654
Submitted by: Nick Sayer <nick@specialix.com>


33322 13-Feb-1998 phk

Implement the spirit but not the letter of Terrys hot-char patch.

The differences Terrys patch and this patch are:
* Remove a lot of un-needed comments.
* Don't put l_hotchar at the front of stuct linesw, there is no need to.
* Use the #defines for the hotchar in the SLIP and PPP line disciplines


32929 31-Jan-1998 eivind

Make the debug options new-style.

This also zaps a DPT option from lint; it wasn't referenced from
anywhere.


32726 24-Jan-1998 eivind

Make all file-system (MFS, FFS, NFS, LFS, DEVFS) related option new-style.

This introduce an xxxFS_BOOT for each of the rootable filesystems.
(Presently not required, but encouraged to allow a smooth move of option *FS
to opt_dontuse.h later.)

LFS is temporarily disabled, and will be re-enabled tomorrow.


31778 16-Dec-1997 eivind

Make COMPAT_43 and COMPAT_SUNOS new-style options.


31577 06-Dec-1997 bde

Use ENOIOCTL instead of -1 (= ERESTART) for tty ioctls that are
not handled at a particular level. This fixes mainly restarting
of interrupted TIOCDRAINs and TIOCSETA{W,F}s.


29677 21-Sep-1997 gibbs

aha1542.c aic6360.c cy.c fd.c ft.c
if_ie.c if_wl.c if_zp.c isa.c isa_device.h
labpc.c mcd.c ncr5380.c scd.c seagate.c si.c
sio.c tw.c ultra14f.c wcd.c wd.c:

Update for changes in the callout interface.

apic_vector.s icu_vector.s ipl.s ipl_funcs.c:

Add CAM software/hardware interrupt support.


29676 21-Sep-1997 gibbs

ipl.h:
Add CAM software/hardware interrupt support.

si.h:
Update for changes in the callout interface.


29368 14-Sep-1997 peter

Update select -> poll in drivers.


27555 20-Jul-1997 bde

Removed unused #includes.


25047 20-Apr-1997 bde

Fixed the type of timeout functions and removed casts that hid the
type mismatches. There was no problem in practice (at least on 386's).


24207 24-Mar-1997 bde

Don't include <sys/ioctl.h> in the kernel. Stage 5: include
<sys/ioctl_compat.h> and sometimes <sys/filio.h> instead of
<sys/ioctl.h> in tty-related files. <sys/ttycom.h> is still
usually imported bogusly via <sys/termios.h>.


24131 23-Mar-1997 bde

Don't #include <sys/fcntl.h> in <sys/file.h> if KERNEL is defined.
Fixed everything that depended on getting fcntl.h stuff from the wrong
place. Most things don't depend on file.h stuff at all.


22975 22-Feb-1997 peter

Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not
ready for it yet.


21673 14-Jan-1997 jkh

Make the long-awaited change from $Id$ to $FreeBSD$

This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.


18515 27-Sep-1996 peter

Some warning cleanups. There were some needless casts that also caused
gcc -Wcast-qual to scream. There's still quite a few left, but since I'm
cleaning out my tree, I'll commit these now.


18084 06-Sep-1996 phk

Remove devconf, it never grew up to be of any use.


17547 12-Aug-1996 peter

Extend the poll code so that it can periodically scan the host cards
for work regardless of whether there was an interrupt. This needs more
work, it should be able to run better when there are more than 3 host
cards present, ie: all cards in polling-only mode with no IRQ. (The
host cards have a choice of 3 irq's, 11, 12, or 15, or just polling)


17396 03-Aug-1996 peter

make si.c compile in kernels without COMPAT_43.


17291 26-Jul-1996 peter

ttysleep() can return EWOULDBLOCK, not ETIMEDOUT as the comment in tty.c
suggests.

Pointed out by: bde


17290 26-Jul-1996 peter

Apply a bandaid to a problem elsewhere in the driver, when the process is
blocked in a write() while waiting for the output to drain, sleep only
for tp->t_timeout, not forever. This only seems to happen when there is
either a modem lockup holding the hardware flow control down, or due to
some problem in the driver with processes attempting to write after the
modem has hung up (eg: elm, tf).


16839 30-Jun-1996 peter

Fix typo that prevented the initial/lock state devices from working
correctly (accessing the lock device was not possible).


16575 21-Jun-1996 peter

When writing the settings for stop bits and output hardware flow control,
things tend to work better if you write the settings to the correct
register.. (*blush*). This subtle bug has been haunting me for ages, and
will solve a few problems that have been reported to me.

Also, take a shot at fixing the serial BREAK processing, what was there
before never really worked. (There is a PR on this I think)


16444 17-Jun-1996 peter

This time, get rid of the struct copies that were really causing gcc to
call memcpy.. It seems that gcc would not inline the implicit call
when copying from a volatile...


16403 16-Jun-1996 peter

Fix cut/paste error; a read-only variable should have been read/write.


16322 12-Jun-1996 gpalmer

Clean up -Wunused warnings.

Reviewed by: bde


16214 08-Jun-1996 peter

Eliminate a struct copy that gcc doesn't inline and ends up as a call to
memset().


16024 30-May-1996 peter

When estimating the time (in ms) left to drain the output queue based
on the baud rate, dont get upset if it's been hung up by setting B0.
Instead, sleep for a short time, as the host controller takes a while
to go through the state changes.


15683 08-May-1996 peter

*blush* How did this slip through?

Fix a dynamic initialiser in a static variable, and make sure sysctl.h
is #included.


15640 05-May-1996 peter

Change the logic of the interrupt/poll loop. It no longer loops until
it empties all of the 256 byte incoming fifo, as it can spend more time
processing one port than intended, especially if data is streaming in
at 115.2K. The port fifo will be emptied and dumped into the tty system
and left until next time. I've been running this for quite some time on
one of my systems here.
Also, if the tty layer is blocked or full it lets the hardware assert the
flow control rather than loosing the data.


15639 05-May-1996 peter

Change the compiled-in polling parameters to a sysctl setting.


14873 28-Mar-1996 scrappy

Switched from using devfs_add_sw() to using devfs_add_swf()

Reviewed by: julian@freebsd.org


13630 25-Jan-1996 phk

Avoid local sprintfs and other printf'isms.


13469 16-Jan-1996 phk

Use the new & improved printf rather than homegrown kludges.
Proposed by: bde


13353 09-Jan-1996 peter

clean up si_dprintf a bit so that it uses vararg argument parsing that does
not cause warnings, and uses printf() to do a vprintf()-like output.


13169 02-Jan-1996 peter

Fix the number of ports created for devfs.. it had been only creating
enough nodes for the number of ports on the last module, not the number
of ports _total_ that the driver is managing...

Submitted by: Robert Sanders <rsanders@mindspring.com>


13166 02-Jan-1996 peter

Fix last "fix" - I had introduced a fencepost error.. :-(

Happily pointed out by: julian :-)


13165 02-Jan-1996 peter

Fix up the DEVFS minor numbers that the Specialix driver registers...


12888 16-Dec-1995 peter

Another shot at getting working si DEVFS entries.. Apparently, it didn't
understand %02d in it's format string...


12826 14-Dec-1995 peter

Update the skeleton DEVFS code to match reality a little closer.. :-)


12743 10-Dec-1995 bde

Replaced nxreset by noreset (if the reset function gets called, then the
device must be configured. It's hard to tell whether a reset function
should be noreset or nullreset since reset functions are never called.
Most drivers use nullreset but noreset has the advantage of complaining
if somehow gets called).


12742 10-Dec-1995 bde

Replaced nxmmap by nommap (if the mmap function gets called, then the
device must be configured).


12731 10-Dec-1995 bde

Removed new alias d_size_t for d_psize_t.

Removed old aliases d_rdwr_t and d_ttycv_t for d_read_t/d_write_t and
d_devtotty_t.

Sorted declarations of switch functions into switch order.

Removed duplicated comments and declarations of nonexistent switch
functions.


12724 10-Dec-1995 phk

Staticize and cleanup.


12678 08-Dec-1995 phk

Julian forgot to make the *devsw structures static.


12675 08-Dec-1995 julian

Pass 3 of the great devsw changes
most devsw referenced functions are now static, as they are
in the same file as their devsw structure. I've also added DEVFS
support for nearly every device in the system, however
many of the devices have 'incorrect' names under DEVFS
because I couldn't quickly work out the correct naming conventions.
(but devfs won't be coming on line for a month or so anyhow so that doesn't
matter)

If you "OWN" a device which would normally have an entry in /dev
then search for the devfs_add_devsw() entries and munge to make them right..
check out similar devices to see what I might have done in them in you
can't see what's going on..
for a laugh compare conf.c conf.h defore and after... :)
I have not doen DEVFS entries for any DISKSLICE devices yet as that will be
a much more complicated job.. (pass 5 :)

pass 4 will be to make the devsw tables of type (cdevsw * )
rather than (cdevsw)
seems to work here..
complaints to the usual places.. :)


12662 07-Dec-1995 dg

Untangled the vm.h include file spaghetti.


12659 06-Dec-1995 bde

Replaced #includes of <sys/user.h> by less gross headers, usually
<sys/vm.h>. Many device drivers need only the definition of vtophys()
from vm.

Added nearby #includes of <sys/conf.h> where appropriate.


12624 04-Dec-1995 peter

aargh! I tested JREMOD, only to discover that the "good oil" part of
it for si.c was accidently inside some #ifdef DEBUG code....


12521 29-Nov-1995 julian

If you're going to mechanically replicate something in 50 files
it's best to not have a (compiles cleanly) typo in it! (sigh)


12517 29-Nov-1995 julian

OK, that's it..
That's EVERY SINGLE driver that has an entry in conf.c..
my next trick will be to define cdevsw[] and bdevsw[]
as empty arrays and remove all those DAMNED defines as well..

Each of these drivers has a SYSINIT linker set entry
that comes in very early.. and asks teh driver to add it's own
entry to the two devsw[] tables.

some slight reworking of the commits from yesterday (added the SYSINIT
stuff and some usually wrong but token DEVFS entries to all these
devices.

BTW does anyone know where the 'ata' entries in conf.c actually reside?
seems we don't actually have a 'ataopen() etc...

If you want to add a new device in conf.c
please make sure I know
so I can keep it up to date too..

as before, this is all dependent on #if defined(JREMOD)
(and #ifdef DEVFS in parts)


12502 28-Nov-1995 julian

the second set of changes in a move towards getting devices to be
totally dynamic.

this is only the devices in i386/isa
I'll do more tomorrow.
they're completely masked by #ifdef JREMOD at this stage...
the eventual aim is that every driver will do a SYSINIT
at startup BEFORE the probes, which will effectively
link it into the devsw tables etc.

If I'd thought about it more I'd have put that in in this set (damn)
The ioconf lines generated by config will also end up in the
device's own scope as well, so ioconf.c will eventually be gutted
the SYSINIT call to the driver will include a phase where the
driver links it's ioconf line into a chain of such. when this phase is done
then the user can modify them with the boot: -c
config menu if he wants, just like now..
config will put the config lines out in the .h file
(e.g. in aha.h will be the addresses for the aha driver to look.)
as I said this is a very small first step..
the aim of THIS set of edits is to not have to edit conf.c at all when
adding a new device.. the tabe will be a simple skeleton..

when this is done, it will allow other changes to be made,
all teh time still having a fully working kernel tree,
but the logical outcome is the complete REMOVAL of the devsw tables.

By the end of this, linked in drivers will be exactly the same as
run-time loaded drivers, except they JUST HAPPEN to already be linked
and present at startup..
the SYSINIT calls will be the equivalent of the "init" call
made to a newly loaded driver in every respect.

For this edit,
each of the files has the following code inserted into it:

obviously, tailored to suit..
----------------------somewhere at the top:
#ifdef JREMOD
#include <sys/conf.h>
#define CDEV_MAJOR 13
#define BDEV_MAJOR 4
static void sd_devsw_install();
#endif /*JREMOD */
---------------------somewhere that's run during bootup: EVENTUALLY a SYSINIT
#ifdef JREMOD
sd_devsw_install();
#endif /*JREMOD*/
-----------------------at the bottom:
#ifdef JREMOD
struct bdevsw sd_bdevsw =
{ sdopen, sdclose, sdstrategy, sdioctl, /*4*/
sddump, sdsize, 0 };

struct cdevsw sd_cdevsw =
{ sdopen, sdclose, rawread, rawwrite, /*13*/
sdioctl, nostop, nullreset, nodevtotty,/* sd */
seltrue, nommap, sdstrategy };

static sd_devsw_installed = 0;

static void sd_devsw_install()
{
dev_t descript;
if( ! sd_devsw_installed ) {
descript = makedev(CDEV_MAJOR,0);
cdevsw_add(&descript,&sd_cdevsw,NULL);
#if defined(BDEV_MAJOR)
descript = makedev(BDEV_MAJOR,0);
bdevsw_add(&descript,&sd_bdevsw,NULL);
#endif /*BDEV_MAJOR*/
sd_devsw_installed = 1;
}
}
#endif /* JREMOD */


12501 28-Nov-1995 bde

Removed all #includes of the unused file <sys/device.h>.


12496 28-Nov-1995 peter

Mainly cosmetic cleanups... It now uses more consistant message reporting
on the console, and no longer uses "SLXOS" which I suspect may be a
trademark... (I'm not sure, but this is not really a SLXOS driver anyway)


12174 09-Nov-1995 peter

Sync the public source with what I'm currently running.

Most of this is cleaning up, but there are some functional changes,
doc/comment improvements, error checking, gcc -Wall cleanups. Input buffer
flushing is enabled now, although I'm still not quite certain it's right.


12080 04-Nov-1995 bde

Added `#include "ioconf.h"' to <machine/conf.h> and cleaned up the
misplaced extern declarations (mostly prototypes of interrupt handlers)
that this exposed. The prototypes should be moved back to the driver
sources when the functions are staticalized.

Added idempotency guards to <machine/conf.h>. "ioconf.h" can't be
included when building LKMs so define a wart in bsd.kmod.mk to help
guard against including it.


12071 04-Nov-1995 bde

Moved prototypes for devswitch functions from conf.c and driver sources
to <machine/conf.h>. conf.h was mechanically generated by
`grep ^d_ conf.c >conf.h'. This accounts for part of its ugliness. The
prototypes should be moved back to the driver sources when the functions
are staticalized.


11872 28-Oct-1995 phk

Remove unused functions and variables, make things static, and other cleanups.


11609 21-Oct-1995 peter

Remove bogus #include <sys/device.h>, and the bogus instances of
"struct device" and the bogus unit number mentioned in the error message.
Some other minor cleanups, all trivial.


10962 22-Sep-1995 peter

Add some hooks visible from outside via nlist, so pstat can read the tty
state.


10959 22-Sep-1995 peter

Remove the "Danger will robinson!" printf's at the start. I'm pretty happy
with the driver's stability now. I've not had a single problem with it for
weeks.. All that remains is a bit of performance tuning, and finishing
the manpages.


10708 13-Sep-1995 peter

From Bruce Evans: (prototype related changes, other cleanups)

Add prototypes. Use static for function definitions to match existing
prototypes. Otherwise leave functions that should be static as extern.
TODO: declare everthing except sidriver and siintr as static. I use
some new cdevs registration functions to do this for syscons and pcvt.

Fix siintr() to match its prototype in ioconf.c (don't return anything).
This may break the eisa support, but Julian says that eisa interrupts
never worked anyway.

(EISA support was never tested anyway - Peter)

Submitted by: bde


10707 13-Sep-1995 peter

Move some kernel-only stuff to a kernel-only file.
Submitted by: bde


10672 11-Sep-1995 peter

Restore two checks for TS_ISOPEN.. I managed to panic my machine
without them.. I thought TS_CONNECTED implied TS_ISOPEN, but apparently
that's not the case.


10161 22-Aug-1995 peter

Fix some outstanding bugs in the DCD modem control..
Implement the slip/ppp "hotchar" detection to improve latency
Debug the L_RINT bypass code..
Fix an interesting feature that caused 8-bit chars to loose their top bit
in some circumstances..

This finishes the remaining outstanding problems that I'm aware of, with
the exception of efficiency... Optimizing can come later after it's fully
debugged.


10160 22-Aug-1995 peter

add a new Debug mode.. "DBG_OPTIM" - for observing the L_RINT bypass


10047 13-Aug-1995 peter

Slight change to the location of the default termios flags to make them
a little easier to change, and revert to the "standard" specialix behavior
with CRTSCTS enabled in the initial cflag (but configurable).


10044 13-Aug-1995 peter

Next round of cleanups. Some more debugging hooks added, si_softc definition
moved to the driver proper, so that <machine/si.h> can be #included by user
programs without needing to include stuff from /sys/i386/isa..
Various (now) redundant features removed, eg: the locks on IXANY and HWFLOW
as these are now done with the "initial" and "lock" termios devices.
Note that it still (for reasons unknown) appears to be masking data to
7-bit with ppp - hence the cleanup to support the debugging via 'sicontrol'


10018 10-Aug-1995 peter

Remove a deliberate #warning.. It's not polite, because I listed the the
driver in i386/conf/LINT...
Reviewed by:
Submitted by:
Obtained from:


10015 09-Aug-1995 peter

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
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!