Subject: SMC91cxx h/w info and bus space queries
To: None <tech-kern@netbsd.org>
From: Allen Briggs <briggs@ninthwonder.com>
List: tech-kern
Date: 07/26/2000 10:38:27
I have received a couple of AsanteFAST nubus adapters
(10/100 ethernet).  These are based on the SMC 91C100
chip.  This is almost recognized by the smc91cxx driver,
but not quite.  Does anyone have any softcopy docs for
this chip?  I found smsc.com on-line, but the 91C100 is
discontinued and they don't have archived information
on-line.

FWIW, I currently have:
sm0 at nubus0 slot d: AsanteFAST 10/100 NB^A
sm0: invalid BSR 0x0035
sm0: unknown chip id 3, revision 5
sm0: MAC address 00:00:94:77:e8:08, default media UTP

The chip id and revision are almost certainly wrong because...

The smc91cxx driver seems to assume that bus_space_read_2 will
return data LSB-first.  The nubus machines that I'm aware of are
both m68k and therefore will be using memory-mapped I/O and reading
16-bit data MSB-first.  So, how should this be handled?

	* Should the driver do a le16toh() or htole16() in
	  conjunction with its current code?  That wouldn't
	  seem right for systems that automatically byte-swap
	  for the bus accesses.

	* Should the mac68k bus_space implementation be
	  expanded to carry flag(s) (in the bus_handle_t)
	  that drivers can set?  One of these flags would
	  be for byte swapping (there is some need also
	  for a way to specify that byte registers are on
	  longword boundaries, etc.).

I'm thinking that the second is the way to go, but since
it's more work and will have some negative impact on performance
(on a machine with little performance to spare ;-), I'd like
to hear what others think about this.

-allen