Commit Graph

37 Commits

Author SHA1 Message Date
bjh21 c11b878473 Detect overruns before reading any data. This makes overruns easier to
understand.
2001-11-07 19:52:59 +00:00
bjh21 0368c93d47 Move the functionality of eca_init_rx_hard() into the tail end of
eca_fiqhandler_tx and eca_tx_downgrade.  This seems to reduce the
number of Rx overruns to zero on my current test case.
2001-09-22 17:19:27 +00:00
bjh21 ea073a0cd4 eca_init_rx_hard() shouldn't call eca_init_rx_soft(). That's the
whole point.
2001-09-22 15:33:53 +00:00
bjh21 cddb5108f8 More re-arrangements: Split eca_init_rx() into two parts, one of which
(eca_init_rx_soft()) just sets up software state, and the other of
which (eca_init_rx_hard()) actually puts the interface into receive
mode and sets up the FIQ handler etc.  Arrange that when we transmit a
frame, eca_init_rx_soft() has already been called, so we only need to
call eca_init_rx_hard() from the Tx downgrade handler.

The point of this is that I should be able to incorporate the
functionality of eca_init_rx_hard() into the Tx FIQ handler so that we
can switch from Tx to Rx with little enough delay that we don't drop
the first few bytes of the incoming frame.
2001-09-22 15:29:20 +00:00
bjh21 ffe2e2dfd3 Re-organize eca_gotframe to make the logic a little clearer (to me). 2001-09-22 14:42:51 +00:00
bjh21 b959cd4c1f Re-organise eca(4)'s FIQ handlers. Now we have a single FIQ handler copied
to zero page, and it branches to either the rx or tx handler.  My intention
is that the tx handler should switch to the rx one the moment it finishes,
without needing a downgrade, which I hope will get rid of the start-of-frame
rx overruns I'm seeing.

While I'm here, move the constants describing the shape of the FIQ state
structures out of if_ecavar.h and into genassym.cf where they belong.
2001-09-20 21:54:11 +00:00
bjh21 5ddc1e1310 Add retry mechanisms for Econet, so that if a four-way handshake doesn't
complete for some reason, we defer it for a bit and then try again.  This
gets ping down to 0% packet loss.

Of course, ping _should_ have been at 0% packet loss anyway, and that's the
next thing to deal with.
2001-09-17 22:41:59 +00:00
bjh21 33d596bef8 Add support for incoming IP broadcast packets. The protocol for this is
worked out by observing RISC iX's behaviour, so it may be technically
wrong.  The only implementations of IP-over-Econet for which I've got
sources don't support broadcasts.

Tested using broadcast ping from RISC iX to NetBSD, and using rwhod.
2001-09-16 15:08:39 +00:00
bjh21 91dae8ca83 Add minimal IP-over-Econet support and a load of bug-fixes. I can ping,
unreliably, between my RISC iX and NetBSD boxes with this.  There's a lot
of work to go before it's solid, though.
2001-09-15 17:27:24 +00:00
bjh21 e416135347 Driver for the standard Archimedes Econet interface, based around the
Motorola 6854 ADLC.
2001-09-10 23:41:48 +00:00
bjh21 9c45cae8df Make cmos_read() and cmos_write() globally visible, and make the instance
they operate on implicit.  Also, stop abusing cf_unit, and remove a vast
swathe of unused code.
2001-08-26 12:24:24 +00:00
bjh21 c6c9e5d915 Act as an entropy source for rnd(4). 2001-07-02 23:49:17 +00:00
wiz 0a600be867 receive, not recieve 2001-06-12 15:17:10 +00:00
bjh21 856547f067 Driver for Archimedes parallel ports. I haven't got a parallel printer, so
this is currently untested.
2001-04-22 15:01:25 +00:00
bjh21 2a1570b5d9 Add functions to twiddle the latch bits, patterned after the ones in Linux. 2001-04-22 15:00:13 +00:00
bjh21 660a20cd22 Add a skeleton driver for the random latches on the Archimedes, which are
shared between the printer port and floppy drive.  Useful facilities will be
added when I know what I need.
2001-04-22 00:26:35 +00:00
bjh21 575fa5e5af #ifdef out arckbd_pick_layout until we get round to using it again. 2001-02-17 18:39:11 +00:00
bjh21 21e1b73962 Update ioeb_irq_clear to match its caller. 2001-02-08 22:21:24 +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 d0b6f0f1cd Changes to interrupt accounting:
NULL "name" argument to irq_establish indicates that the device will maintain
an evcnt structure for this interrupt.  In this case, irq_establish will still
maintain its own count (for DDB machine irqstat), but won't attach it to the
global list.

Change use of ev_group and ev_name to follow guidelines in evcnt(9).

Switch arckbd(4) over to the new arrangements.
2001-01-22 23:08: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 6b513dfe29 Remove ioc_irq_establish -- It wasn't serving any useful purpose. 2001-01-07 15:36:34 +00:00
bjh21 32ad12527c ANSIfy. 2001-01-07 15:00:02 +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 8df54708da If we get an odd IOEB type, tell the user. I have a feeling issue 1 A5000s
might trip this.
2000-12-09 18:04:05 +00:00
bjh21 eb0dc305da Insert clock low after ack bit. 2000-11-26 18:53:12 +00:00
bjh21 f801b80192 Zero-length reads seem to confuse the chip, so don't do that. 2000-11-26 18:12: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 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 cc396125ae Add support for clearing IRQ 0, which is latched by the IOEB (on IOEB systems). 2000-08-18 12:50:00 +00:00
bjh21 4d52022987 Comment tidying 2000-07-28 09:54:56 +00:00
bjh21 61edac627c Convert the arm26 rtc driver to use pk's new todr(9) interface internally.
Nothing outside the driver will notice until we get proper MI I^2C.
2000-07-27 23:51:43 +00:00
bjh21 9f33355278 Ensure rtcattach generates a newline even if the RTC is broken 2000-06-28 15:25:03 +00:00
bjh21 9d61165c26 Oops. Swedish is KB_SV. 2000-05-13 14:40:10 +00:00
bjh21 b85a45b9f1 Move out spurious defines 2000-05-13 12:17:49 +00:00
bjh21 6c97e2bd78 Initial commit of arm26 port 2000-05-09 21:55:44 +00:00