Commit Graph

56 Commits

Author SHA1 Message Date
bjh21 8bd452c648 Create an MI Ether3 driver. It's derived from the arm26 driver, which uses
my MI SEEQ 8005 driver, which is based on the arm32 ea driver.
2001-03-24 00:14:52 +00:00
bjh21 86d6442c28 Move machine-dependent podulebus headers to <machine/podulebus_machdep.h>.
<dev/podulebus/podulebus.h> is the canonical file to include, and includes
<machine/podulebus_machdep.h>.
<arch/${MACHINE}/poudulebus/podulebus.h> remains for backward compatibility.
2001-03-20 22:59:39 +00:00
bjh21 0fe2c0aedc These have moved to sys/dev/podulebus. 2001-03-20 00:13:16 +00:00
bjh21 1c300d3ee8 Make pa_*_base bus_addr_ts. 2001-03-19 21:03:47 +00:00
bjh21 5c98fe3fec Gratuitous change of signature for podulebus_irq_establish(). It now takes
an opaque podulebus_intr_handle_t, which can be found in podulebus_attach_args.
It's actually the slot number, but don't tell anyone.
2001-03-18 15:56:04 +00:00
bjh21 16198f2b92 Podulebus convergence:
pa_memc_[th] -> pa_mod_[th]
Add pa_easi_*
Add pa_*_base
Add pa_slot_flags to indicate whether EASI is supported.
2001-03-17 21:56:06 +00:00
bjh21 697e84ed46 Update for new location of podules.h and podule_data.h 2001-03-17 20:34:43 +00:00
bjh21 29e609e3c5 Update for recent changes to the i82586 driver. 2001-03-10 22:32:17 +00:00
bjh21 4acea3a8cc Don't do arithmetic on void *s. 2001-02-17 19:04:36 +00:00
bjh21 f942342607 Fix a typo in the last change (eh_init_media -> eh_media_init). 2001-02-13 18:20:57 +00:00
thorpej 043e519d55 Adjust the way that media is initialized on DP8390-compatible
chips.  The dp8390_softc now has media_init and media_fini
function pointers that do the work.
2001-02-12 18:49:03 +00:00
bjh21 3c3ed6cecd Flush out cf_unit abuses.
Also, most device functions related to IRQ handling no longer take a device
pointer.  We make so many assumptions about the machine's layout in irq.c that
this just seemed silly.
2001-01-23 23:58:31 +00:00
bjh21 f32fc0fc90 Use evcnts properly for interrupt counting.
The architecture here follows that of the vax port -- each device has its
evcnt in its softc, but defers actually incrementing it to the IRQ
dispatcher.  This way, devices can attach sub-counts (e.g. Rx and Tx counts
for Ethernet interfaces), but don't all have to have code to increment the
counters.

Drivers deliberately call evcnt_attach_dynamic() before establishing their
interrupt handler so that the establish routine can attach a parent event if
that's appropriate.  At present, it isn't.
2001-01-23 22:07:59 +00:00
bjh21 fe3273fbb4 Patch from PR kern/8001, submitted by Rafal Boni.
This adds support for EtherExpress/16 cards with 16k of RAM, and in the
process adds general support for PIO mode on these cards.  This entails
changing the way the i82586 driver handles bus barriers, since it doesn't
allow for strange cases like this.

This has been tested on the i386 port with the 'ix' driver in both
16KB (which was the source of the problem) and 32KB modes, as well
as with the 'ef' driver.  I've tested it (briefly) with 'ei' on arm26
as well.  In theory, drivers other than 'ix' should follow precisely the
same code paths as before.
2001-01-22 22:28:43 +00:00
bjh21 d74ad44e33 Document format of various chunk types. 2001-01-12 00:13:26 +00:00
bjh21 2b076072d3 Add a "name" argument to irq_establish and friends, in imitation of arm32. 2001-01-07 15:56:01 +00:00
bjh21 610a127a3d Fix a stupid = vs == bug that prevented the code working usefully at all.
While I'm here, fix all the other GCC warnings too.
2001-01-07 00:30:29 +00:00
bjh21 fa64805abd Specify (void) arguments, hence avoiding GCC warning. 2001-01-07 00:07:58 +00:00
bjh21 5568314c66 Since the Arc's interrupt layout is fixed, only print IRQ numbers in
verbose mode.  This helps to ensure the kernel version number doesn't disappear
too quickly.
2000-12-23 21:49:13 +00:00
bjh21 0c0d8f3775 Support for identifying MAUs attached to EtherLan 200-series cards. 2000-12-22 22:21:37 +00:00
bjh21 15d214bd18 Looks like I got the state of the link-detect bit inverted. Fixing that
gets me working auto-media selection, which is nice.
2000-12-20 23:08:44 +00:00
bjh21 9ca53819f0 Actually use 10baseT when we say we will. 2000-12-20 22:48:15 +00:00
bjh21 f8e732cd45 Use the podule loader code to get at the card description the official way,
and get our Ethernet address from there.  This works on both of my cards.
2000-12-20 10:59:32 +00:00
bjh21 b66603547a Add support for using RISC OS podule loaders to get at ROM chunks on podules.
By default, they aren't used, since most cards seem to put the non-OS-dependent
stuff in the main chunk directory.  i-cubed cards are a notable exception.
2000-12-20 10:57:38 +00:00
bjh21 5b4c3dc909 Disable media autoselection entirely, but use whatever medium the card was
found using (presumably having been set up by RISC OS) as the default.
NB that this doesn't seem to be right for the EtherLan 200.
2000-12-20 00:01:56 +00:00
bjh21 c25ab2f1ec Rudimentary facilities for extracting the card's Ethernet address from the
ROM.  Only works on one of my two cards, though.  It looks like we'll need
to use the RISC OS loader on the podule to get this right.  *mutter*
2000-12-18 00:46:47 +00:00
bjh21 4942923809 Handle detecting the available media and state of medium selection links
on EtherLan 100 (and presumably 500) boards.
2000-12-17 22:29:26 +00:00
bjh21 72735aa75a Correct embarrassing null-pointer-dereference bug. Also fixes interrupt
enabling.
Default to 10base2 for now, since automatic media selection doesn't work.
2000-12-16 18:24:36 +00:00
bjh21 3ebcd51009 I think bit 0 of the status register is the interrupt status on read. 2000-12-16 18:23:14 +00:00
bjh21 e266a563d8 Filter out non-ASCII characters from podule descriptions.
I think my MIDI card had a \r at the end, which was confusing.
2000-12-14 20:40:29 +00:00
bjh21 38d918f85f Proper support for the Unix backplane in those machines that have one.
Not very well-tested, but it seems to work.
2000-12-09 17:52:44 +00:00
bjh21 cb5273b547 First attempt at an EtherH driver. Can just about transmit and receive
packets.  Interrupt enabling is left to the RISC OS driver, medium selection
is untested and it's hard-wired to the MAC address of my card.  Not really
for production use.
2000-12-01 14:28:36 +00:00
bjh21 7270db5ec0 Change to semantics of irq_establish: IRQs are now enabled by default, which
I think is the same as all other ports.
2000-10-14 23:41:01 +00:00
bjh21 f3ef35c447 Add rudimentary 80C04 support (basically saying "Oh look, an 80C04!").
Move printing the initial ":" into the board driver, like i82586.c does.
Don't bother printing the amount of RAM, as it's always 64 KB.
2000-09-21 22:20:38 +00:00
bjh21 40aba7cd4d Split the arm26 Ether3 (ea) driver into an MI driver for the SEEQ 8005 chip,
and a front-end driver for the Ether3.  Only semantic change is to remove
ea_claimirq() and ea_releaseirq() on the grounds that the seem too spurious
to warrant a callback to the front-end.
2000-09-18 20:51:14 +00:00
bjh21 6e3e3a755d Don't include <machine/spl.h> any more.
Include <machine/intr.h> everywhere than uses spl(9) functions.
2000-08-22 21:22:48 +00:00
bjh21 ba6517aa9c Adjust register spacing to take A0 into account. This should make supporting
8-bit uses of the 8005 (such as, I suspect, 8-bit Ether3 cards) easier.
2000-08-20 13:43:23 +00:00
bjh21 5317f1db63 General cleanup and factoring out of common code in ea_readbuf and ea_writebuf. 2000-08-12 18:18:52 +00:00
bjh21 7d96bc05ba Make various types unsigned, for ease of comparison.
Use bus_space_read_multi_2 and bus_space_write_multi_2 to copy packets to/from
board.
2000-08-12 17:03:44 +00:00
bjh21 f096772215 Two changes for endianness-independence (when we finally split of the SEEQ 8005
driver and make it MI):

Set the ByteSwap bit on big-endian hosts, so we can use 16-bit transfers to get
at packets whatever.

Treat Tx/Rx headers as arrays of four bytes rather than as 32-bit words.
2000-08-12 15:29:35 +00:00
bjh21 7d83a5201a bus_space version of if_ea.c -- should have been committed before.
Transmit and receive buffer sizes aren't an intrinsic property of the card,
so they belong in if_ea.c rather than if_eareg.h.

Correct some comments in if_ea.c
2000-08-12 14:06:29 +00:00
bjh21 4493200775 Use bus_space stuff. No more ReadShort and WriteShort.
Also a few minor cleanups.
2000-08-12 13:35:08 +00:00
bjh21 7ba12358d7 return isn't a function call 2000-08-12 12:20:17 +00:00
bjh21 b108872b97 Remove spurious reset of card in probe routine -- it can almost certainly
safely be left till attach time.
2000-08-12 12:15:59 +00:00
bjh21 ef01128d16 Avoid gratuitously copying data on transmission as well, and hence do away
with the 2k packet buffer in the softc.
2000-08-12 11:56:46 +00:00
bjh21 e801d41011 Remove void casts from splx(). It returns void anyway. 2000-08-10 23:06:38 +00:00
bjh21 c636092423 Use ETHER_IS_MULTICAST where relevant. 2000-08-10 23:03:04 +00:00
bjh21 24ab4fb4f8 Check the podule has a description before using it. 2000-08-10 22:57:01 +00:00
bjh21 2fb8a3feb8 Clean up packet reception. Notably, copy data straight from the card to
mbuf(s) without using the packet buffer in the softc.  Also, clean up error
messages.
2000-08-10 22:43:45 +00:00
bjh21 b642a6e612 ANSIfication and general cleaning. 2000-08-08 21:16:59 +00:00