Home | History | Annotate | Download | only in dev
History log of /src/sys/arch/atari/dev/atari5380.c
RevisionDateAuthorComments
 1.66  06-Jan-2023  tsutsui TAB/spaces/indents cleanup.
 1.65  04-Oct-2021  andvar follow fcambus steps by fixing typos for "unknown" in few more error messages.
 1.64  27-Dec-2019  msaitoh s/transfered/transferred/
 1.63  07-Oct-2017  jdolecek branches: 1.63.4;
Merge support for SATA NCQ (Native Command Queueing) from jdolecek-ncq branch

ATA subsystem was changed to support several outstanding commands, and use
NCQ xfers if supported by both the controller and the disk, including NCQ
error recovery. Set NCQ high priority for BPRIO_TIMECRITICAL xfers
if supported. Added FUA support.

Done some work towards MP-safe, all ATA code tsleep()/wakeup() replaced
by condvars, and switched most code from spl* to mutexes (separate
wd(4) and ata channel lock).

Introduced new option WD_CHAOS_MONKEY to facilitate testing of error
handling, fixed several uncovered issues. Also fixed several problems
with kernel dump to wd(4) disk.

Tested with ahcisata(4), mvsata(4), siisata(4), piixide(4) on amd64,
with and without port multiplier, both disk and ATAPI devices; other
drivers and archs mechanically adjusted and compile-tested. NCQ is
supported for ahcisata(4) and siisata(4) for any controller, for
mvsata(4) only Gen IIe ones for now. Also enabled ATAPI support in
mvsata(4).

Thanks to Matt Thomas for initial ATA infrastructure patch, and
Jonathan A.Kollasch for siisata(4) NCQ changes and general testing.

Also fixes PR kern/43169 (wd(4)); and PR kern/11811, PR kern/47041,
PR kern/51979 (kernel dump)
 1.62  18-Oct-2014  snj branches: 1.62.8;
src is too big these days to tolerate superfluous apostrophes. It's
"its", people!
 1.61  05-Jul-2014  tsutsui Appease gcc48 -Wunused-but-set-variable warning.
 1.60  24-Mar-2014  christos branches: 1.60.2;
- remove unused
- use cpu_{g,s}etmodel() (not committed yet)
 1.59  12-Feb-2012  matt branches: 1.59.6; 1.59.10;
Change old-style function defintions to C89 prototypes.

Approved by releng.
 1.58  17-Jul-2011  joerg branches: 1.58.2; 1.58.6;
Retire varargs.h support. Move machine/stdarg.h logic into MI
sys/stdarg.h and expect compiler to provide proper builtins, defaulting
to the GCC interface. lint still has a special fallback.
Reduce abuse of _BSD_VA_LIST_ by defining __va_list by default and
derive va_list as required by standards.
 1.57  05-Jun-2011  tsutsui Split device_t/softc. No crash on TT030.
 1.56  17-Apr-2010  tsutsui branches: 1.56.2; 1.56.6;
extern inline -> static inline
 1.55  13-Apr-2010  tsutsui Misc KNF and cosmetics.
 1.54  10-Apr-2010  tsutsui Always schedule callback functions via add_sicallback(),
which calls softint_schedule(9).

We cannot use BASEPRI() to check recursive calls any longer
since softint(9) has been reorganized to use kernel thread.
 1.53  20-Oct-2009  snj branches: 1.53.2; 1.53.4;
Remove 3rd and 4th clause on Leo Weppelman's license. OK leo@.
 1.52  08-Jul-2009  tsutsui Merge local <atari/atari/intr.h> into common <machine/intr.h>.
 1.51  18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.50  14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.49  14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.48  14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.47  24-Jan-2009  tsutsui branches: 1.47.2;
Replace multi-statement macro using GCC extension `({})' with
static inline functions to avoid possible side effects or confusion.

Tested on TT030 by David Ross and on Falcon by Tuomo Makinen on port-atari.
 1.46  29-Oct-2008  abs branches: 1.46.2;
Cleanup spelling and syntax in a comment
 1.45  20-Jul-2008  tsutsui branches: 1.45.2;
Specify volatile to some pointers to access DMA registers.
 1.44  20-Jul-2008  tsutsui No need to specify '&' to get array's address.
No binary changes.
 1.43  20-Jul-2008  tsutsui Fix pointer arithmetic botch in rev 1.37.
 1.42  04-Mar-2007  christos branches: 1.42.40; 1.42.44; 1.42.46; 1.42.48; 1.42.50;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.41  10-May-2006  skrll branches: 1.41.12; 1.41.14;
Fix a bunch of cast lvalues.
 1.40  24-Dec-2005  perry branches: 1.40.4; 1.40.6; 1.40.8; 1.40.10; 1.40.12;
__asm__ -> __asm
__const__ -> const
__inline__ -> inline
__volatile__ -> volatile
 1.39  24-Dec-2005  perry Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.38  11-Dec-2005  christos merge ktrace-lwp.
 1.37  04-Jun-2005  he branches: 1.37.2;
Adapt to compiling with -Wshadow and -Wcast-qual, by adding const
qualification in places and renaming a few local variables.
Also adds a couple uses of __UNVOLATILE() to allow passing volatile
variables to functions wanting e.g. caddr_t.
 1.36  15-Jul-2003  lukem __KERNEL_RCSID()
 1.35  03-May-2003  wiz branches: 1.35.2;
DMA, not dma nor Dma.
 1.34  01-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.33  16-Sep-2001  wiz branches: 1.33.4;
Spell 'occurred' with two 'r's.
 1.32  09-Jul-2001  leo branches: 1.32.2; 1.32.4;
defopt atari scsi options.
 1.31  29-Mar-2000  leo Nuke a bunch of cf_unit abuses.
 1.30  06-Aug-1999  leo branches: 1.30.2;
Change the way that bit's are cleared in the InterruptPending register of
the 68901. Do this now by _assigning_ ~<bit_to_clear> instead of the
previously used 'andb ~<bit_to_clear>'. The latter caused a rwm-cycle that
caused a race condition to happen when an interrupt arrived between the
Read and Modify-Write.
Anyway, this solved my hanging keyboard problem.
 1.29  06-Oct-1998  leo branches: 1.29.6;
Disable SCSI interrupts while polling for the transfer to finish. This
fixes spurious panics while booting my Hades. This bug could also occur
on a TT030.
 1.28  27-Aug-1997  bouyer branches: 1.28.4;
Merge scsipi branch in the mainline. This add support for ATAPI devices
(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.
 1.27  27-Aug-1997  leo Don't enable the dma-interrupt while polling for dma to end. This sometimes
caused a system panic on the Hades while probing the SCSI devices.
 1.26  04-Jun-1997  leo branches: 1.26.2; 1.26.4;
Use m68k cacheops
 1.25  06-Apr-1997  leo Make Hades DMA transfers work in polling mode with all interrupts
disabled. This makes dumps to scsi work.
 1.24  30-Mar-1997  leo Remove a hardcoded interrupt handler. Now uses intr_establish() for the
SCSI-drq handler on the Hades.
 1.23  12-Jan-1997  leo Use the mask register to block the interrups, not the enable register. This
enables the interrupt to be shared (with IDE for example ;-) ).
 1.22  04-Jan-1997  leo Fix a rather nasty thinko that made the keyboard useless on the Falcon.
Thanks to Markus Kilbinger for finding it.
 1.21  17-Nov-1996  leo Make splbio really splbio. All holes now seem to be plugged. At least
on the Hades & TT030.
 1.20  13-Oct-1996  christos backout previous kprintf changes
 1.19  11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.18  16-Sep-1996  leo Add support for Hades platform.
 1.17  16-Aug-1996  leo Revert to polled-DMA on Falcon.
 1.16  05-Jul-1996  leo During a rather lengthy debug session with Markus Kilbinger (Thanks again!),
we managed to kill the following SCSI-driver bugs for the Falcon:
- The Byte_Count_zero bit of the falcon DMA controller does not always
tell the truth! This caused the SCSI-driver to choke on devices that
disconnected in the middle of a DMA-transfer (mostly removables).
- Printing debug info about the 5380 on the Falcon is *only* permitted
when DMA is not active.
- Some functions forgot to remove possibly pending sofware interrupts
- Some debug options didn't allow debugging a single target while they
could easily be made to do so. This is fixed.
 1.15  18-Jun-1996  leo Pull down from release. Sorry, should have been the other way around....
 1.14  15-May-1996  leo branches: 1.14.4;
Prototype + -Wall fixes.
 1.13  26-Apr-1996  leo - Fixup the ipending function for the Falcon. This seemed to be the source
of a lot of instability problems on the Falcon. I also enabled DMA on
interrupt basis for the Falcon.
- Try to handle targets that request too much data more sanely.
- Some fixups for strict prototypes + -Wall

Thanks to Markus Kilbinger for providing the debugging support.
 1.12  18-Apr-1996  leo Yet more prototyping and -Wall fixes.
 1.11  12-Apr-1996  leo Prototyping.
 1.10  17-Mar-1996  thorpej New device attachment scheme:

- 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.
 1.9  08-Mar-1996  leo Just prototyping.
 1.8  22-Feb-1996  leo A bit of reshuffling. Also some stricter prototyping.
 1.7  14-Feb-1996  leo Oops, should have been updated in conjunction with ncr5380.c .
 1.6  02-Feb-1996  mycroft Fix #includes.
 1.5  14-Jan-1996  leo The changes frpm Paul Goyette with respect to the driver trace require
DBG_PID to be defined to an interger value....make it so.
 1.4  05-Oct-1995  leo Get in sync with the mac68k version to incorporate Allen Briggs' changes
- emit MSG_ABORT/MSG_REJECT at the right times:
- make MIN_PHYS machine dependent.
 1.3  16-Sep-1995  leo - Handle devices that do not support identify messages (Allen Briggs)
- Add pdma_ready() hook (Allen Briggs)
- Increase timeout to 1000 (Matthias Pfaller)
 1.2  19-Aug-1995  leo - Add 'restbyte' handling for TT.
- Don't _ever_ do DMA for less than 512 bytes on the Falcon
- Fix bug in autosense-handling. Now asks for the correct number of bytes.
Now it won't read ghost bytes on the tape anymore.
- Add missing braces as suggested by Matthias Pfaller
- Make it possible to debug requests on a specified number of targets
- Add debug option to show only transaction with error code != 0
 1.1  11-Aug-1995  leo New version of NCR5380-SCSI driver. This version is far more generic than
the previous version. The machine dependent part contains the configuration
for both the TT and FALCON. The configuration files have been changed to
select SCSI-support for either TT, Falcon or both.
The configuration file for the Atari-Falcon will only get _really_ usefull
when the Falcon video part is finished.
 1.14.4.4  06-Sep-1996  jtc Pulled up rev 1.17 by request from leo
 1.14.4.3  31-Jul-1996  jtc Pulled up from rev 1.16 by request from Leo Weppelman
 1.14.4.2  20-Jul-1996  jtc Pulled up from rev 1.15 by request from Leo Weppelman
 1.14.4.1  18-Jun-1996  leo Get rid of some spurious interrupts caused by pending software interrupts.
 1.26.4.1  27-Aug-1997  thorpej Update marc-pcmcia branch from trunk.
 1.26.2.1  01-Jul-1997  bouyer Updates for new scsipi subsystem. Actally known to work on i386 and sparc.
 1.28.4.1  30-Oct-1998  cgd pull up rev 1.29 from trunk (leo)
 1.29.6.1  16-Dec-1999  he Pull up revision 1.30 (requested by leo):
Change the way that bits are cleared in the InterruptPending
register of the 68901, avoiding a read-modify-write cycle.
Solves a "hanging keyboard" problem.
 1.30.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.32.4.1  01-Oct-2001  fvdl Catch up with -current.
 1.32.2.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.33.4.2  16-Sep-2001  wiz Spell 'occurred' with two 'r's.
 1.33.4.1  16-Sep-2001  wiz file atari5380.c was added on branch nathanw_sa on 2001-09-16 16:34:29 +0000
 1.35.2.4  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.35.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.35.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.35.2.1  03-Aug-2004  skrll Sync with HEAD
 1.37.2.2  03-Sep-2007  yamt sync with head.
 1.37.2.1  21-Jun-2006  yamt sync with head.
 1.40.12.1  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.40.10.1  11-May-2006  elad sync with head
 1.40.8.1  24-May-2006  yamt sync with head.
 1.40.6.1  01-Jun-2006  kardel Sync with head.
 1.40.4.1  09-Sep-2006  rpaulo sync with head
 1.41.14.1  12-Mar-2007  rmind Sync with HEAD.
 1.41.12.3  13-Nov-2008  snj Pull up following revision(s) (requested by abs in ticket #1223):
sys/arch/atari/dev/atari5380.c: revision 1.45
Specify volatile to some pointers to access DMA registers.
 1.41.12.2  13-Nov-2008  snj Pull up following revision(s) (requested by abs in ticket #1223):
sys/arch/atari/dev/atari5380.c: revision 1.44
No need to specify '&' to get array's address.
No binary changes.
 1.41.12.1  13-Nov-2008  snj Pull up following revision(s) (requested by abs in ticket #1223):
sys/arch/atari/dev/atari5380.c: revision 1.43
Fix pointer arithmetic botch in rev 1.37.
 1.42.50.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.42.50.1  19-Oct-2008  haad Sync with HEAD.
 1.42.48.1  28-Jul-2008  simonb Sync with head.
 1.42.46.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.42.44.4  11-Aug-2010  yamt sync with head.
 1.42.44.3  11-Mar-2010  yamt sync with head
 1.42.44.2  18-Jul-2009  yamt sync with head.
 1.42.44.1  04-May-2009  yamt sync with head.
 1.42.40.2  17-Jan-2009  mjf Sync with HEAD.
 1.42.40.1  28-Sep-2008  mjf Sync with HEAD.
 1.45.2.3  28-Apr-2009  skrll Sync with HEAD.
 1.45.2.2  03-Mar-2009  skrll Sync with HEAD.
 1.45.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.46.2.1  20-Nov-2010  riz Pull up following revision(s) (requested by tsutsui in ticket #1373):
sys/arch/atari/dev/dma.c: revision 1.25
sys/arch/atari/dev/atari5380.c: revision 1.54
Always schedule callback functions via add_sicallback(),
which calls softint_schedule(9).
We cannot use BASEPRI() to check recursive calls any longer
since softint(9) has been reorganized to use kernel thread.
 1.47.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.53.4.2  12-Jun-2011  rmind sync with head
 1.53.4.1  30-May-2010  rmind sync with head
 1.53.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.56.6.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.56.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.58.6.1  18-Feb-2012  mrg merge to -current.
 1.58.2.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.58.2.1  17-Apr-2012  yamt sync with head
 1.59.10.1  18-May-2014  rmind sync with head
 1.59.6.2  03-Dec-2017  jdolecek update from HEAD
 1.59.6.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.60.2.1  10-Aug-2014  tls Rebase.
 1.62.8.1  27-Sep-2017  jdolecek pass ata channel interlock to st_dmagrab() so that it can release
and reacquire it if it sleeps
 1.63.4.1  08-Apr-2020  martin Merge changes from current as of 20200406

RSS XML Feed