is found not fully upward compatible to its predecessor. sfbp.c is now
under development.
- Reduce copycols() malfunction, but has still lot of troubles.
to be corrected. Text drawing is now improved significantly, but;
cursor is drawn incorrectly, copycols() trashes a screen, 'standout
(\033[7m)' results in lines reversed entirely until '\033[0m', and
possibly more issues. Not multi-colour, 8bpp only this moment. Costly
write memory barrier instrunctions should be eliminated using framebuffer
address aliasing technique for NetBSD/alpha.
element access instead of C bitfield (hello, BCPL).
- XXX Some TURBOchannel framebuffers might need shutdownhooks(). It
seems not necessarily hardware sprite cursor images are re-initialized
by DECstation PROMs upon exits from kernel.
- XXX It'd be an arguable point to allow user programs to change the
shade of gray freely for pixel value 0 and 1.
starts running can occur on both DMA in and DMA out. I missed the little comment
in the Mach driver for the DMA out case. Also, only ignore the interrupt if the
TC is non-zero (to match the Mach driver).
is written. This significantly reduces, if not eliminates, the problem reported in
PR#5510. It stops the problem on my 5000/200, and two other people have verified that
it fixes the problem on their 5000/200s. I'm waiting for confirmation from the PR
originator before closing the PR.
- returned EOPNOTSUPP rather than -1.
- no check for negative offset.
many of these fix potential security problems in these drivers.
XXX XXX XXX
the d_mmap cdev routine should be changed to have a prototype like:
paddr_t (*d_mmap) __P((dev_t, off_t, int));
by someone!
assigned to unsigned short variable.
- XXX PMAG-DV is supposed to emit virtical retrace interrupt, which can be
used for colormap/cursor update just like other TURBOchannel framebuffers.
bit/pixel format, not planer format. Assign MSB for cursor mask and
LSB for cursor image, where 10 means mask color and 11 for image color.
Image bit order of Bt431 and Bt459 are opposite to MIPS/Alpha processors
while IMS G332 and DC503 (PCC) are indentical.
- Assume that cursor images are 32 pixel padded as ULTRIX/DU ws interface
do. It's natural to X server.
- XXX Vast majority of codes are duplicated between mfb<->tfb and cfb<->sfb.
Code sharing might be achieved in the context of TGA/SFB+ merge.
N.B., Digital UNIX never supports neither PMAG-AA (mfb) nor PMAG-BA (cfb)
for TC Alphas. PMAG-DV (xcfb) is Personal DECstation built in. All should
be good for console, but need much works for cursor/colormap completeness.
struct scsipi_adapter; they were not used.
Add a scsipi_ioctl entry point to struct scsipi_adapter. This will be
used to issue ioctl commands to the host adapters.
Inspired by PR #6090, from Matt Jacob.
as with user-land programs, include files are installed by each directory
in the tree that has includes to install. (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.) The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change. Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
problem was. A collision between a select and reselect would leave TC
non-zero from the command-out DMA count, which could later be considered
a fatal condition, causing a reboot. The message for that error was
only displayed with DEBUG. Fixed by clearing TC on a reselect. The
non-zero TC detection won't occur in this case, so unconditionally
display the message if it occurs.
Workaround for another problem that resulted from an "Illegal Command"
status from the 53c94 which would get ignored and result in a timeout
(which also reboots the system). Added the missing check for the
illegal command status, and add the workaround of resending the "accept
message" command to the 53c94. Correct fix will be to determine why the
message wasn't sent in the first place. Abort if the resending the
command doesn't work.
Correctly detect a spurious interrupt and ignore it. This was taken
from a newer Mach driver, but did not get the check converted for the
design difference between the current NetBSD driver and the Mach driver.
does a "restore data pointers" when reselected after disconnecting in
the middle of a DMA transfer). The driver needs a different way to know
which script to continue the DMA transfer. The message-in for the "restore
data pointers" loses the original "resume" script, and the driver would
attempt to continue the DMA transfer at the beginning of the current DMA
chunk, rather than at the point the disconnect occured. The result was a
spurious console message, and a trashed filesystem.
(currently only CD-ROM drives on i386). The sys/dev/scsipi system provides 2
busses to which devices can attach (scsibus and atapibus). This needed to
change some include files and structure names in the low level scsi drivers.
* hoist code to deal with fragments of a 16-byte chunk outside
main copy loop.
* over 98% of dynamic calls are 2-byte-algnied but not 4-byte-aligned
(due to 14-byte Ether headers). kernel bcopy is poorly tune for this.
Replace bcopy() with inline code tuned to minimize accesses
to DMA buffers, which aren't uncached on mips.
Tested on 5000/240 (3MAXPLUS) and 3000/700 (sandpiper) (mjacob@feral.com)
re-enabled with ASC_IOASIC_BOUNCE.
All DMA buffered processing is now done in the bus-specific DMA routines
in asc_ioasic.c and asc_tc.c.
Disable several informational messages dealing with non-empty FIFO conditions,
but allow enabling with ASC_DIAGNOSTIC for troubleshooting.
* Move clockvar.h (header file for generic clock code) to sys/dev/dec.
* Move if_le_dec.c with DEC padded LANCE-dma (pmax/pmax, ioasic, vax 3400)
to sys/dev/dec. Remove from sys/dev/tc.
* Declare attribute le_dec_subr in /sys/dev/dec/files.dec,
use if_le_dec.c when it's defined.
* Move IOCTL asic declaration from pmax and Alpha MD machine
files to sys/dev/tc/files.tc.
* move TurboChannel and ioasic if_le attachments from pmax and Alpha machine
config files to /sys/dev/tc/files.tc. Add le_dec_subr attribute.
* Add if_le_dec attribute to if_le_ibus (pmax ds3100 pmax) LANCE attachment.
after synch negotation during device probes, the 53C94 stops with the target
reqesting more command data. The fifo appears to still contain a couple of
bytes, so transfer them. If the target still wants command data after that,
do a transfer pad. The target seems to function normally after this. A
much better solution thant simply rebooting!
Also fix a problem when compiling with DIAGNOSTIC - a mismatch between using
DIAGNOSTIC and MACH_DIAGNOSTIC caused the compile to fail.
Try to start another target and a device disconnects.
* Don't print DMA_OUT message in the `normal' case of a 16-byte residual.
* ioasic-connected 53c94 devices are always clocked at 25MHz even on
machines with 12.5MHz TurboChannel.
Some of the stuff (e.g., rarpd, bootpd, dhcpd etc., libsa) still will
only support Ethernet. Tcpdump itself should be ok, but libpcap needs
lot of work.
For the detailed change history, look at the commit log entries for
the is-newarp branch.
a "Smart Frame Buffer TURBOchannel Module" user's manual(?), and from
some "DECstation 5000 Model 240 Options and Upgrades" guides found
while cleaning out my office.
* When we are transferring in DATA (in asc_dma_in) and the target
is an async device, there is sometimes an extra byte in the FIFO.
If so, we need to drain that byte out of the fifo, but if and only
if the target is async. See also the comments in asc_dma_in()
in the related Mach mk84 asc driver (scsi_53C94_hdw.c), which
has an identical fix but applied in more restrictive conditions
than we need, with async *disk* targets, as well as async tapes.
* Add a watchdog and timeout active SCSI requests, to eliminate any
potential for deadlock due to applying the fix above on newer
silicon versions of the 53c94 which may not have the above problem.
Should use the MI scsi per-target timeout instead, when available.
cfattach code for TC SCSI option cards and ioasic 53c94 baseboard SCSI.
ascvar.h: shared softc declarations
asc_ioasic.c: ioasic front-end code.
asc_tc.c: Turbochannel option (and 5000/200 basebard) front-end code.
* ioasic_attach meeds more work to eliminate pmax_type dependency
and to verify the clocks speed passed to 53c94.
* Add prototypes for asc script entry points; should compile with
-Wstrict-prototypes -Wmissing-prototypes.
* Use tcvar.h interface. The usage of tc_syncbus() and tc_mb() may
not be quite stylistically on an Alhpa, but it apparently makes no
difference on the eerly-generation Alpha CPUs in TC Alphas.
multi-channel driver), or to SCSI_CHANNEL_ONLY_ONE if a
single-channel driver.
(2) use scsiprint() rather than a locally-defined autoconfig print
function, and kill any locally-defined print function.
a char *, because that's what was really intended, and because
if the print function modifies the string, various things could become
unhappy (so the string should _not_ be modified).
a boot string for firmware that can do this, such as the SPARC and
the sun3 models. It is currently silently ignored on all other
hardware now, however. The MD function "boot()" has been changed to
also take a char *.
Enable reselections as soon as possible after a disconnect - prevents
losing a reselecting device.
Check for and ignore a spurious interrupt during a DMA input (from the
Mach driver).
Turbochannel as well as the IOASIC. It should now work on the 5000/200.
Removed the "aborts" which could leave the disk trashed when the abort
rebooted the system. Fix the data corruption problem by clearing the
FIFO before starting a data transfer.
* Change MachEmptyWriteBuffer() to wbflush(). Should use TC mi names tc_mb(),
tc_wmb, tc_syncbus() but I'm not sure which each wbflush() should be.
* Add prototyped forward decl for asc_Dumplog() and add an explicit void
return type.
* Remove unused variables.
alpha. At some point in the future, those headers should be provided
on the pmax, but until then, things are #ifdef'd so that the old
headers and definitions are still used. Pass a bus_chipset_tag_t
to the TC bus attach code and to devices, on the alpha.
naming conflicts between bus attachments on ports that can have
multiple instances of the LANCE.
Changed struct ifnet to have a pointer to the softc of the underlying
device and a printable "external name" (name + unit number), thus eliminating
if_name and if_unit. Updated interface to (*if_watchdog)() and (*if_reset)()
to take a struct ifnet *, rather than a unit number.
remove their 'integrate' (usually defined to be 'static') keywords.
when lance drivers are split up by attachment, more than one file will
reference the copy/zero functions (i.e. not just the file that pulls in
am7990.c... and eventually inclusion of am7990.c should go away entirely).
chip-independent clock code. 'clock' has been renamed 'mcclock' 'clock'
has been renamed 'mcclock' (since it's a driver for that particular
clock, and since eventually there may be another clock chip driver),
and now attaches via seperate match/attach functions to both TC and ISA.
This removes a whole lot of #ifdefs...
to {mainbus,tc,ioasic}_cd.
Change ioasic config name from "lance " to "lance". Correct for
pmaxes, perhaps not for Alphas.
Boots and runs under load on a 5000/200. Hangs during boot on an ioasic
decstation; pmax autoconfig needs fixing.
Add Decstation-3100 baseboard support (untested).
change tc_submatch() to compile with the new device-attach scheme:
the TC bus uses a 'submatch' function which checks device locators
and then calls a match function.
Instead of calling cf->cf_driver->cd_match(), we now need to call
cf->cf_attach->ca_match().
Rename the extern declaration of `tccd' and `ioasiccd' in
src/sys/dev/tc/{tvar.h,ioasicvar.h", respectively, to be
`tc_cd' and `ioasic_cd', to match the 1.1B-style definitions.
- split softc size and match/attach out from cfdriver into
a new struct cfattach.
- new "attach" directive for files.*. May specify the name of
the cfattach structure, so that devices may be easily attached
to parents with different autoconfiguration semantics.
but unconfigured (or unsupported) devices printed at boot time.
The device list is woefully incomplete, because i didn't put much time
in it, and because i don't know good "human names" for many TC devices.
planned changes in other sections of code.
(2) expands the use of config_found() in tcattach() in-line, so that
tcsubmatch can be invoked there, rather than being invoked by
individual drivers.
(3) tcbus_attach_args now includes a turbochannel speed flag.
(4) compare a string in tcbus_attach_args against tc bus driver name,
to better allow attachment of multiple busses to the same parent.