Home | History | Annotate | Download | only in dev
History log of /src/sys/arch/next68k/dev/nextdma.c
RevisionDateAuthorComments
 1.52  20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h> include.
 1.51  03-Feb-2023  tsutsui Misc KNF and cosmetics.
 1.50  31-Mar-2017  msaitoh Remove extra 0x. This bug was added when replacing bitmask_snprintf(9) with
snprintb(3) (in between NetBSD 5 and 6). Old bitmask_snprint(9) didn't add
0x" automatically for hexadecimal value, so old code used it with "0x%s".
 1.49  25-Mar-2014  christos branches: 1.49.6; 1.49.10; 1.49.14;
fix sprintf debugging mess.
 1.48  27-Oct-2012  chs branches: 1.48.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.47  06-Jun-2010  mrg branches: 1.47.8; 1.47.18;
fix some errors in debug code, found by henning petersen in PR#42529.
 1.46  24-Apr-2010  dbj switch from 4 clause to 2 clause BSD license.
 1.45  05-Nov-2009  dyoung branches: 1.45.2; 1.45.4;
Use deviter(9) instead of accessing alldevs directly. Untested.
 1.44  17-Dec-2008  cegger make the compile again
 1.43  16-Dec-2008  christos replace bitmask_snprintf(9) with snprintb(3)
 1.42  14-May-2006  elad branches: 1.42.62; 1.42.66; 1.42.74;
integrate kauth.
 1.41  08-Mar-2006  lukem Use the SI capitalization for "Hz", "kHz", and "MHz" in comments and strings.
Add a space between numbers and Hz unit.
 1.40  24-Dec-2005  perry branches: 1.40.4; 1.40.6; 1.40.8; 1.40.10;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.39  11-Dec-2005  christos merge ktrace-lwp.
 1.38  05-Jun-2005  he branches: 1.38.2;
Adapt to -Wcast-qual by adding a few consts.
 1.37  19-Jan-2005  chs de-__P, remove register, ansify.
 1.36  04-Dec-2003  keihan branches: 1.36.8;
netbsd.org -> NetBSD.org

All "netbsd.org" is now gone from src/sys/arch.
 1.35  15-Jul-2003  lukem __KERNEL_RCSID()
 1.34  02-Oct-2002  thorpej branches: 1.34.6;
Use CFATTACH_DECL().
 1.33  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.32  27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.31  11-Sep-2002  mycroft Comprehensive patches from Christian Limpach:
* Fix problems with the DMA and SCSI drivers.
* Make turbo machines sort of work.
Additional fixes from me:
* Determine if we're a turbo at boot time, by looking at the ROM machine type.
* Set the display size correctly (1120 pixels wide, but padded to 1152 only on
non-turbo machines).
Caveats:
* SCSI doesn't work on the turbo (or at least it blows chunks with no devices
attached).
* Media selection doesn't work on the turbo (the BMAP stuff doesn't exist on
turbo machines).
* The boot block is prone to timing out.
 1.30  11-Jul-2002  christos Apply patches from Christian Limpach:

- NeXT label reading support
- SCSI dma fixes
- media support for if_xe.c

Some of these need more cleanup, but at least make SCSI support usable on
the NeXT.
 1.29  16-Jun-2001  dbj branches: 1.29.2; 1.29.8; 1.29.16;
fix handling of transmit length calculation so we now handle full length xmits
 1.28  13-May-2001  chs turn on printf format-string checking and -Werror. fix all warnings.
 1.27  17-Apr-2001  dbj increase maxsegs of esp main dma map by one to avoid error
tweak esp glue to read xfer_len from dma map
add some debugging checks for dma driver invariants
read DD_LIMIT instead of DD_SAVED_LIMIT on scsi dma shutdowns
 1.26  16-Apr-2001  dbj add receive ethernet bpf tap
keep receive ethernet crc and set M_HASFCS
change bus_dma MD fields to keep xfer_len for entire map
instead of per segment
turn off automatic dma restarts in preparation for changing
scsi driver to handle them.
add dma debugging routines to keep history of dma states
tweak checking for unusual dma limit register
 1.25  07-Apr-2001  dbj automatically restart dma for unexpected shutdowns
 1.24  07-Apr-2001  dbj continue to tweak nextdma detection of xfer length
add check to esp driver for incomplete transfers, but still does not handle them.
 1.23  02-Apr-2001  dbj No longer clobber the DMACSR_SETENABLE bit in the dma interrupt
Add the ability to handle unexpected dma shutdowns
 1.22  09-Aug-2000  tv branches: 1.22.2;
%b -> bitmask_snprintf()
 1.21  12-Jan-2000  dbj branches: 1.21.4;
applied patch from "Christian Limpach" <chris@Nice.CH>:
I've fixed the problem that's been keeping me from using anything newer than
1.4.1 now. I tracked down the problem checkin, it's the big reorg of
nextdma.c between 1.19 and 1.20. It didn't introduce a new bug but it
activated a check which wasn't activated before. It's the
is-the-limit-in-the-right-window-check which was ifdeffed before because
some DMA-regs would sometimes have strange values. I think I've fixed the
DMA-reg stuff for now: at the end of nextdma_intr, when the csr is poked
to make DMA do something, I think the check for the ENABLE bit introduces a
race condition. I fixed this by unconditionally setting DMACSR_SETENABLE,
this seems to work and also makes the code more readable. I've also tried
setting DMACSR_SETSUPDATE unconditionally and this also works well, but I
don't know what it implies. Unless you have reasons to not set SUPDATE all
the time, I'd suggest making this change as well, it makes the code cleaner
and faster...
I've tested this patch and it does stop the panics, although I don't think setting
SUPDATE all the tima as he suggests is a good idea. The "SUPDATE" bit implies
a single update (i.e. the end of a dma chain.)
 1.20  29-Aug-1999  dbj branches: 1.20.2;
minor rework of dma driver
now uses the DMACSR_READ bit and no longer keeps _nd_dmadir in softc
unified transfer cleanup code, now in routine next_dma_finish_xfer()
fixed bounds checking on registers after transfer.
removed checking for bus errors since the bit is always set on some nexts
(specifically, on mourning, a 25mhz 68040 mono slab)
fixed a couple of dma bugs involving chaining dma buffers.
 1.19  28-Aug-1999  dbj discovered the purpose of another bit in the dma control register.
DMACSR_READ is now a CSR status bit which can be used to know if current transfer is
from cpu to device.
the old DMACSR_READ bit is renamed DMACSR_SETREAD. This is a control bit that tells
the dma transfer to be from cpu to device.
 1.18  17-Aug-1999  dbj remove some debugging hacks that were no longer being used.
 1.17  05-Aug-1999  dbj changed dma segment field "ds_read_len" to "ds_xfer_len" since it is valid for
either read or write transfers.
 1.16  03-Aug-1999  dbj resync bus_dma functions with current alpha versions.
added a field to a dma segment to return the actual length of that segment that
was successfully transferred.
 1.15  14-Mar-1999  dbj branches: 1.15.2;
changed dma start alignment from 4 to 16 so that the cache flush
functions always have cache line aligned segments.
continued experimentation with scsi driver.
 1.14  04-Mar-1999  dbj moved declaration of nextdma_intr into correct header file.
 1.13  02-Mar-1999  dbj turn on diagnostic check in dma for controller bits at shutdown.
adjusted esp overrun to avoid diagnostic check triggering.
 1.12  14-Feb-1999  dbj Continue hacking on esp driver. Seems relatively stable in read only mode.
write operations appear to lose scsi interrupts and causes timeouts.
changes in this checkin include:
a nextdma bugfix causing a diagnostic check to erroneously trigger
Changed tail strategy to only use tail buffer for the minimal end slop
changed expected write dma overrun to 32 bytes.
turned on nextdma diagnostic check for dma end address since it
no longer gets triggerred by ethernet dma and helps debug scsi dma.
Added esp debugging printout and support.
 1.11  13-Feb-1999  dbj Continued work on esp scsi driver. Now can at least do enough i/o to create and mount
a filesystem, but is not stable enough yet for general use.
increased priority of ethernet interrupts, mostly useful to aid debugging
of scsi interrupts while using an nfs disk.
added additional debugging output in the next dma driver.
perform extranneous cache flushes/purges before dma reads/ after dma writes
to aid debugging of scsi dma.
 1.10  27-Jan-1999  dbj Fixed dma instability introduced with nextdma.c rev 1.7
This fix removes putting 0xfeedbeef in the unused restart registers.
When that was done, the machine would panic after a short while
with 0xfeedbeef in the normal dma buffer registers. A restart
cycle is probably hapenning without an interrupt or something.
 1.9  30-Dec-1998  dbj changed register for start of dma buffer to be DD_NEXT_INITBUF instead
of DD_NEXT for regular dma transfers, and not just ethernet transmit.
Keep track of dma read/write direction and set it each time we start or
restart dma. This allows scsi to work, and doesn't appear to hinder ethernet.
 1.8  26-Dec-1998  dbj Continued experimentation on SCSI driver.
Added nextdma_debug variable to control debug printouts in nextdma driver
when ND_DEBUG is defined.
 1.7  19-Dec-1998  dbj Revamped DMA interface to unify chaining and non-chaining dma sequences.
Updated ethernet driver to work with new interface.
Continue work on esp driver.
 1.6  08-Dec-1998  dbj initialized unused dma registers to 0xdeadbeef instead of 0 to aid debugging.
 1.5  10-Nov-1998  dbj Sync'ed more files and routines with mvme port in prepartion for UVM.
Now use generic m68k cachops everywhere rather than defining them in locore.s
 1.4  21-Jul-1998  dbj Continued work on the esp scsi driver. Not yet working, but progress continues.
 1.3  19-Jul-1998  dbj Commented out some bus_dma code, until I can fix.
(bus_dma.c needs sync with alpha port!)
Continued progress on scsi driver.
A couple of other compiler warning level of tweaks.
 1.2  01-Jul-1998  dbj changed diagnostic panic into a printf since an unexpected condition appears
to happen every once in a while. (The DMA interrupt gets called w/o
the completed bit set)
 1.1  09-Jun-1998  dbj branches: 1.1.1;
Initial revision
 1.1.1.1  09-Jun-1998  dbj Initial import of NetBSD/next68k.
 1.15.2.1  21-Jan-2000  he Pull up revision 1.21 (via patch, requested by dbj):
Fix problem that causes xe0 to get frequent weird DMA Rx interrupts
and panics. Fixes PR#8847.
 1.20.2.2  21-Apr-2001  bouyer Sync with HEAD
 1.20.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.21.4.1  16-Jun-2001  he Pull up revision 1.29 (via patch, requested by dbj):
Fix bugs related to calculation of transmit packet length and
allow unaligned pointers in bus_dmamap_sync(). Fixes problems
related to full-size ethernet packets, as reported in PR#13212.
 1.22.2.2  21-Jun-2001  nathanw Catch up to -current.
 1.22.2.1  09-Apr-2001  nathanw Catch up with -current.
 1.29.16.1  16-Jul-2002  gehenna catch up with -current.
 1.29.8.4  18-Oct-2002  nathanw Catch up to -current.
 1.29.8.3  17-Sep-2002  nathanw Catch up to -current.
 1.29.8.2  01-Aug-2002  nathanw Catch up to -current.
 1.29.8.1  16-Jun-2001  nathanw file nextdma.c was added on branch nathanw_sa on 2002-08-01 02:42:49 +0000
 1.29.2.2  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.29.2.1  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.34.6.5  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.34.6.4  24-Jan-2005  skrll Sync with HEAD.
 1.34.6.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.34.6.2  18-Sep-2004  skrll Sync with HEAD.
 1.34.6.1  03-Aug-2004  skrll Sync with HEAD
 1.36.8.1  29-Apr-2005  kent sync with -current
 1.38.2.1  21-Jun-2006  yamt sync with head.
 1.40.10.1  19-Apr-2006  elad sync with head - hopefully this will work
 1.40.8.1  13-Mar-2006  yamt sync with head.
 1.40.6.1  22-Apr-2006  simonb Sync with head.
 1.40.4.1  09-Sep-2006  rpaulo sync with head
 1.42.74.1  19-Jan-2009  skrll Sync with HEAD.
 1.42.66.3  11-Aug-2010  yamt sync with head.
 1.42.66.2  11-Mar-2010  yamt sync with head
 1.42.66.1  04-May-2009  yamt sync with head.
 1.42.62.1  17-Jan-2009  mjf Sync with HEAD.
 1.45.4.2  03-Jul-2010  rmind sync with head
 1.45.4.1  30-May-2010  rmind sync with head
 1.45.2.2  17-Aug-2010  uebayasi Sync with HEAD.
 1.45.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.47.18.3  03-Dec-2017  jdolecek update from HEAD
 1.47.18.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.47.18.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.47.8.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.47.8.1  30-Oct-2012  yamt sync with head
 1.48.2.1  18-May-2014  rmind sync with head
 1.49.14.1  21-Apr-2017  bouyer Sync with HEAD
 1.49.10.1  26-Apr-2017  pgoyette Sync with HEAD
 1.49.6.1  28-Aug-2017  skrll Sync with HEAD

RSS XML Feed