Subject: Re: ByteRunner TC-800 multiport serial board
To: Jukka Marin <jmarin@pyy.jmp.fi>
From: Chris G. Demetriou <cgd@pa.dec.com>
List: netbsd-help
Date: 05/18/1998 11:01:02
> Well, the source is now available at http://www.jmp.fi/~jmarin/tcom.c
> and may be included in the tree if someone bothers to grab the file
> and drop it in the source tree..

So, i briefly took a look at your driver (sorry, I'm not going to be
the one put it into the tree; no time 8-), and noticed a couple of
things which raise some questions:


/*
 * NOTE: This driver has been tested in TCOM "UNIX mode" with base address
 * set to 0x200 and baud rate jumpers to "normal".  This code does NOT know
 * about the 2x and 4x baud rates available on TCOM cards.
 */

Are those global baud rate multiplier settings, or can they be set
per-port?  (looking for a data point.)

I've been thinking that it probably makes sense to set things like
this:

	* as 'com' driver flags (interpreted by the attachment code),
	  when 'com' attaches directly to a bus and/or a per-port
	  multiplier is possible, and

	* as driver flags for parent devices, when 'com' attaches to
	  a parent device pseudo-bus which has a global multipler
	  setting.

I've seen several examples now of the former, but I dunno if i've seen
any of the latter.  Your card could be one.  8-)


#define NSLAVES 8                       /* TCOM cards have 4 or 8 UARTs */
#define STATUS_OFFSET   0x40            /* offset from board base address */

So, regardless of whether the card has 4 or 8 uarts, it always eats 8
UARTs worth (64 bytes) of I/O space?

Does it give you a good way of telling how many UARTs it actually has?
Really, you should config_found() only the UARTs that you know are
there (or, at least, the UARTs that are "supposed to be" there, but
there may be no easy way to do the right thing (other than a driver
flag, and if it always eats 64 bytes of I/O space that's probably a
waste of time).



cgd