mycroft
18aa33cce5
Disable the change to check wdp_ataversion, since it's unreliable with old
...
devices. (Yuck.)
1998-05-09 05:20:35 +00:00
mycroft
0b2694152f
Update copyright.
1998-04-26 06:03:23 +00:00
mycroft
eddaea2d53
In LBA mode, always use the `total capacity' count, rather than calculating
...
the capacity based on the c/h/s numbers. In fact, don't use the c/h/s
numbers for much of anything.
For ATA-4 drives or later, always use LBA mode, since it's now required.
Collectively, this allows >8GB disks (like the 12GB Bigfoot) to work.
1998-04-26 05:28:23 +00:00
bouyer
68096acabd
From Robert V. Baron:
...
Compute the disk block addr at command queing time rather than exec time.
This fix a bug which could lead to data corruption on disk: when a command
was reexecuted after an error condition (from wdcunwedge), the partition
offset was re-added to the block addr, leading to a transfert at the wrong
disk block.
This should fix the problem reported by some laptop's users, where the
first disk read after a suspend/resume returned garbage.
1998-04-23 13:30:39 +00:00
leo
0e4dce88d4
Conditionalize badblock handling on 'HAS_BAD144_HANDLING'. Some ports
...
(like atari) do not support it.
1998-03-25 09:58:24 +00:00
thorpej
8354e68508
Remove "class" declarations, and add "devclass" declarations where
...
appropriate. Fix several inconsistencies between device class and
attributes. Mostly from Chris Demetriou.
1998-02-16 22:12:45 +00:00
cgd
8540a31ee3
kill a couple of unnecessary #ifs
1998-01-15 01:26:13 +00:00
cgd
aaede4d8d8
Various cleanups and bug fixes to the wdc/wd code:
...
* Fix bug in wdc that would overflow ATAPI transfer length.
* Improve wdc probe code so that 'wdc' is probed in if present
even if there are no drives attached, and so that it works
properly even if the only device is an ATAPI slave.
* bus_space-ify.
* split the ISA attachment from the wdc driver, and remove
ISA dependencies from non-ISA files.
* claim that wd and wdc are now machine-independent (probably not
completely true, but mostly so; they at least work on arm32 and
i386).
* Various other minor fixups and cleanups, some of which were pointed
out by Kazuki Sakamoto.
1998-01-14 23:41:59 +00:00
cgd
ad141a69a7
Shuffle wd/wdc driver files around (via repository copies). wdc
...
now lives in dev/ic, wd now lives in dev/ata. there's now a 'ata'
interface attribute defined in conf/files, but wdc can't go there
yet because some ports still use private versions based on the old
ISA version.
1998-01-14 23:36:30 +00:00
thorpej
06ce220790
Update for config changes.
1998-01-12 09:39:57 +00:00
explorer
80513cb5ae
o Make usage of /dev/random dependant on
...
pseudo-device rnd # /dev/random and in-kernel generator
in config files.
o Add declaration to all architectures.
o Clean up copyright message in rnd.c, rnd.h, and rndpool.c to include
that this code is derived in part from Ted Tyso's linux code.
1997-10-13 00:46:08 +00:00
explorer
b5feb41072
Add hooks to insert timing info into the random system
1997-10-10 01:09:03 +00:00
thorpej
939e074dcc
Implement DIOCGDEFLABEL.
1997-10-08 23:05:22 +00:00
bouyer
702b60b0c1
Add a map to wdc_softc to track the already known devices to prevent them to
...
be probed several times. This fixes the "ATAPI CD probed as wd drive" problem.
Thanks to Geoff Wing <mason@primenet.com.au> for testing this on his hardware.
1997-09-03 07:57:51 +00:00
bouyer
6f3bab1f59
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.
1997-08-27 11:22:52 +00:00
fvdl
3dd82f1394
Work around possible race condition with 2 drives on one controller
...
in wd_get_parms. PR 3773, from Onno van der Linden (onno@simplex.nl )
1997-07-18 00:26:22 +00:00
jtk
26414c7820
use locator defines in "locators.h" to index cf_loc[]
...
still to be done and/or decided not to be done: replace all *UNK uses in
isa code with the native names from locators.h
1997-07-17 00:58:48 +00:00
thorpej
efde490942
foosize()'s return value is in DEV_BSIZE units; adjust the size obtained
...
from the disklabel accordingly.
1997-06-24 00:20:44 +00:00
pk
5d4e140e53
Remove spurious line left over in previous commit.
1997-06-18 22:17:14 +00:00
pk
f5bf0d3701
wdsize(): only call wdopen()/wdclose() if not already open, per the
...
current `openmask'.
1997-06-18 20:39:55 +00:00
thorpej
11e78a6b0d
Pull thorpej-bus-dma branch into mainline.
1997-06-06 23:43:45 +00:00
perry
8852c180ef
Fixes to wd driver from cgd -- corrects several nasty bugs typically
...
associated with coming out of suspends/sleeps on laptops.
Approved by fvdl.
1997-01-17 20:45:29 +00:00
thorpej
3b4e2a1ac9
In wdattach(), when printing out info about the drive, make the output
...
look a little more like a SCSI disk's. This has the pleasant side-effect
of preventing the output from annoyingly extending past 80 columns.
1996-11-27 10:50:39 +00:00
mikel
af29f79ed4
Fix WDDEBUG code; PR kern/1480.
1996-11-07 05:23:07 +00:00
christos
86373f8cf9
backout kprintf changes
1996-10-13 01:37:04 +00:00
christos
58953408cb
printf -> kprintf, sprintf -> ksprintf
1996-10-10 22:04:48 +00:00
cgd
2a73ef60b7
change cfprint_t type definition to take a const char *, rather than
...
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).
1996-08-27 21:53:46 +00:00
mycroft
cec36bf8d5
Use intr.h.
1996-05-12 23:51:23 +00:00
christos
27292adc4c
- gcc -Wall fixes
1996-04-29 19:50:47 +00:00
cgd
51e85d07b9
update for addition of a machine-dependent cookie as the first argument
...
to isa_intr_{,dis}establish().
1996-04-11 22:27:59 +00:00
thorpej
de7c200585
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.
1996-03-17 00:53:54 +00:00
mycroft
546ad9e88b
Add support to the ISA DMA framework for auto-initialize mode.
...
Add experimental SB16 code, disabled for now.
1996-03-01 04:08:13 +00:00
mycroft
3441f118d5
Make sure we disk_busy() for every transfer we start.
1996-01-08 21:21:56 +00:00
thorpej
5b39541e48
New generic disk framework. Highlights:
...
- New metrics handling. Metrics are now kept in the new
`struct disk'. Busy time is now stored as a timeval, and
transfer count in bytes.
- Storage for disklabels is now dynamically allocated, so that
the size of the disk structure is not machine-dependent.
- Several new functions for attaching and detaching disks, and
handling metrics calculation.
Old-style instrumentation is still supported in drivers that did it before.
However, old-style instrumentation is being deprecated, and will go away
once the userland utilities are updated for the new framework.
For usage and architectural details, see the forthcoming disk(9) manual
page.
1996-01-07 22:01:38 +00:00
mycroft
3da4b2a160
The IST_* and IPL_* constants are not bus-specific; don't treat them as such.
...
Change splimp -> splnet in Ethernet, ARCnet, and FDDI drivers.
1995-12-24 02:29:35 +00:00
mycroft
82b6eec41c
Use an intermediate variable to shorten label initialization code.
...
Make wddump() work on more machines.
1995-08-05 23:50:23 +00:00
mycroft
7263209ce6
Make each disk and tape driver define its own read and write functions.
...
Deprecate rawread() and rawwrite() completely. Remove d_strategy from cdevsw to
force the abstraction barrier.
1995-07-04 07:15:28 +00:00
cgd
2a8d6461a8
implement new-style block device dump routine if __BDEVSW_DUMP_OLD_TYPE
...
not defined, otherwise use an "not implemented" stub.
1995-06-26 05:16:55 +00:00
cgd
8a640328ed
clean up several ISA device interfaces: autoconfiguration, header
...
inclusion, and interrupt configuration. more work still needs to be done,
but it's getting better...
1995-04-17 12:06:30 +00:00
mycroft
04e937dcbd
Don't boundary check I/O to the `raw' partition.
1995-04-15 05:01:26 +00:00
mycroft
68c8c80929
kernel_pmap --> pmap_kernel()
1995-04-10 16:48:27 +00:00
mycroft
7e2dabf972
Add a missing unlock.
1995-04-01 10:29:41 +00:00
mycroft
e17c63cee6
Revamp the locking mechanism slightly. Update some outdated comments, and add
...
a few new ones.
1995-03-29 23:36:27 +00:00
mycroft
b51403f60d
Remove the write protect check altogether, and rely on the drive to do it.
1995-03-25 19:45:18 +00:00
mycroft
06d0a67a07
Check for read-only media in open(), not write().
1995-03-23 12:11:07 +00:00
mycroft
02df08a47e
Allow DIOCWDINFO even if label is not `writable'.
1995-03-23 11:33:18 +00:00
cgd
2c0f263ee7
use wdc_softc in wdccd, rather than wd_softc; from chuck cranor. (pr 828)
1995-02-27 01:08:01 +00:00
cgd
3a7bbb1acd
lip service to making ISA support machine-independent. This is the first
...
round: moving the drivers into a machine-independent directory.
Some drivers (e.g. fd.c) not moved because they use other pc features (e.g.
CMOS settings), and none of the non-driver files moved, because they're
still pretty much PC specific. eventually (when other ports with ISA
busses really start using this code), more 'high-level' ISA support will
live here.
1995-01-29 07:36:54 +00:00
mycroft
1e5cd9212d
(Almost) allow sector sizes other than 512 bytes. Reduce some expensive operations.
1995-01-13 12:30:59 +00:00
mycroft
7650bd97fc
Always boundary check I/O.
1995-01-13 10:46:32 +00:00
mycroft
0033c975c6
Fix another bug in the DMA code.
1995-01-13 10:22:58 +00:00
mycroft
4abdb375bc
Minor rearrangement.
1995-01-13 09:40:21 +00:00
mycroft
c2bc310a37
Change the way sc_skip is used. Fix a bug in the (incomplete) DMA code. Add a
...
new sc_blkno (which will be useful later).
1995-01-13 08:58:16 +00:00
mycroft
d4f91d51a9
Fix a race condition between normal I/O and wd_get_parms().
1995-01-07 03:07:22 +00:00
mycroft
b5cf1b5ddd
Add interrupt sharing types.
1995-01-03 01:30:14 +00:00
mycroft
ca65f2ce5d
Remove dkbad.h.
1994-12-14 15:17:22 +00:00
mycroft
211b002017
Ignore ERR during diagnostics.
1994-12-01 10:45:26 +00:00
mycroft
867ebf1d84
Clear the controller active flag after a timeout.
1994-11-30 02:32:03 +00:00
mycroft
0649f37219
Officially credit Onno.
1994-11-23 22:00:08 +00:00
mycroft
cc44b4600c
There's no point in bothering to unlock what we didn't lock.
1994-11-23 07:54:15 +00:00
mycroft
6dda55519e
Fix an outdated comment.
1994-11-23 03:11:01 +00:00
mycroft
a3fc466734
Use logical block addressing if available. Be a little more careful about
...
maintaining timeouts. Clean up wddump() a bit.
1994-11-23 01:35:43 +00:00
mycroft
525fc36e19
Implement 32-bit reads and writes, but for now assume 16-bit mode.
1994-11-22 10:20:16 +00:00
mycroft
3a99ddf172
Add a missing newline in some error messages.
1994-11-22 09:36:56 +00:00
mycroft
db3bde9525
Implement EIDE multi-sector PIO and DMA modes, based on code from Onno van
...
der Linden. Also, various structural cleanup, and fix two bogons that crept
in, and remove all of the old clustering nonsense.
1994-11-22 09:33:59 +00:00
mycroft
1e01855683
Minor fix to debugging code.
1994-11-22 05:50:48 +00:00
mycroft
85826f0fbe
Fudge a couple more fields for ancient disks.
1994-11-22 05:39:16 +00:00
mycroft
e1a7bac628
Change some constant names, etc., to better match the ATA spec.
1994-11-22 05:34:49 +00:00
mycroft
95edd299b0
Add still more locking.
1994-11-22 03:23:49 +00:00
mycroft
5bd4115690
Add some missing locking, and some general cleanup.
1994-11-20 22:36:43 +00:00
mycroft
35cdd801e6
Convert port, IRQ, and DRQ numbers to ints.
1994-11-18 21:57:40 +00:00
mycroft
2a9b6f7959
Fix stupid bug in last change.
1994-11-04 23:30:15 +00:00
mycroft
4ec6774e12
Add a simplified version of wdcommand() that can be used in some cases.
...
Avoid needing a wd_softc inside wdprobe().
1994-11-04 23:18:06 +00:00
mycroft
b7acf321cd
No longer needs icu.h.
1994-11-04 18:59:34 +00:00
mycroft
19fc9d55c8
*intr() arg does not need to be void*.
1994-11-03 23:23:38 +00:00
mycroft
d23d1e83dc
Use indirect config for subdevices, and add dkdrivers where missing.
1994-11-03 22:55:58 +00:00
cgd
6ac2bbfc35
be more careful with types, also pull in headers where necessary.
1994-10-30 21:43:03 +00:00
cgd
022ee8f7fe
new RCS ID format.
1994-10-27 04:14:23 +00:00
mycroft
3e30a415ae
Be careful not to stack multiple timeouts.
1994-10-20 19:22:01 +00:00
mycroft
4d072c5435
Remove the local timeout mechanism, and just use explicit timeout()/untimeout()
...
calls.
1994-10-20 18:37:45 +00:00
mycroft
c11a06cbc2
Always set d_secsize to 512 for now.
1994-10-20 17:03:09 +00:00
mycroft
0862d07daf
Don't switch to single-sector mode just because we got a corrected error.
1994-10-20 16:36:21 +00:00
mycroft
d4153fff4d
Rearrange wdcstart() in a more logical fashion, and eliminate many redundant
...
calculations. Also, speed up bad block searching a little.
1994-10-20 16:19:08 +00:00
mycroft
cd66683989
openpart -> openmask
1994-10-20 14:08:07 +00:00
mycroft
cae71ba91d
Various changes:
...
* Add a dkdevice; move sc_*openpart, sc_label, and sc_cpulabel into it.
* Turn sc_wlabel into a flag, and don't set it automatically in DIOCWLABEL.
* If there is no label, disallow all I/O except to the raw partition.
* Don't allow I/O to `unused' partitions.
* Beginnings of support for block sizes other than 512 bytes.
Other minor changes.
1994-10-20 13:44:46 +00:00
cgd
49c34d3337
move arch dependence to archs. clean up a bit. deal with weird MAXPARTITONS.
1994-10-14 18:26:22 +00:00
mycroft
236f105ccd
Remove unneeded #includes.
1994-10-09 15:06:23 +00:00
mycroft
b90985ee3d
Don't poll the BUSY bit until the SDH register is set.
1994-10-07 11:34:52 +00:00
mycroft
8dd2c63b08
Turn off the delay debugging messages again.
1994-09-12 20:29:08 +00:00
mycroft
5f27568164
Eliminate struct pte and struct pde.
1994-08-15 14:46:45 +00:00
mycroft
36975ff354
Don't use altsts. Sigh.
1994-08-15 08:22:20 +00:00
mycroft
b5ce4d0cdd
Normalize label handling.
1994-07-26 19:36:06 +00:00
mycroft
1c46c460ee
Return EINVAL if the requested transfer size is weird.
1994-07-21 23:44:16 +00:00
mycroft
a69dd750a2
b_un.b_addr -> b_data
1994-06-16 01:07:30 +00:00
pk
ff9c5cdde5
Set `uio_procp' field in case we ever need it.
1994-06-09 20:00:13 +00:00
mycroft
5f478330e8
Remove now-bogus casts.
1994-05-05 08:31:00 +00:00
cgd
a0a7429482
lots of changes: prototype migration, move lots of variables, definitions,
...
and structure elements around. kill some unnecessary type and macro
definitions. standardize clock handling. More changes than you'd want.
1994-05-05 05:35:42 +00:00
mycroft
0e689f0375
Fix uninitialized pointer, pointed out by Michael VanLoon.
1994-04-25 03:16:03 +00:00
mycroft
84752ce046
Don't need isa.h.
1994-04-24 01:29:56 +00:00
mycroft
893be926ec
Use TAILQ_*() to maintain the drive activation queues.
1994-04-20 07:23:52 +00:00
mycroft
cabd481fa9
Don't print a duplicate message about stray interrupts.
1994-04-09 03:43:36 +00:00
mycroft
3f5e4f423f
Implement dynamic IRQ configuration and IRQ sharing. Inline spl*() calls.
...
Reorganize and clean up the relevant code.
1994-04-07 06:48:19 +00:00
mycroft
8ccc7bdffb
Turn off the timeout debugging info by default.
1994-03-30 04:58:32 +00:00
mycroft
592ec61b17
Updates for new autoconfig.
1994-03-29 04:35:37 +00:00
mycroft
fe3d0b99c3
Prefix the busy-wait messages with `ignore this:' so people stop reporting
...
it as a bug.
1994-03-12 22:36:40 +00:00
mycroft
9ab5683dc7
Fix problem with reading the disk label if it's not at the beginning of the
...
disk.
1994-03-12 22:32:48 +00:00
mycroft
15d758c39a
Remove backward compatibility hacks for config(8), as they are no longer
...
useful.
1994-03-12 03:45:03 +00:00
mycroft
d884f7c425
Update to match config(8).
1994-03-12 03:34:02 +00:00
mycroft
119f3ea688
Various:
...
Put WDF_ERROR in the wdc_softc, to avoid gratuitously forcing non-active drives
into single-sector mode on the next transfer. Arrange to wait for an interrupt
after wdsetctlr(); this avoids long busy-wait delays, and gets rid of the
`extra interrupt' messages (except for one immediately after autoconfig on some
machines). Replace some uses of wdsetctlr() with simply lowering wd->sc_state;
no point in forcing this immediately. Allow control operations to time out.
Enable the warnings for long busy-wait delays by default. Some other minor
things not worth mentioning.
1994-03-11 23:29:12 +00:00
mycroft
99dbc0692d
Add a heuristic for detecting old config(8)s. This is very temporary.
1994-03-10 22:30:06 +00:00
mycroft
390f5990bb
Now that the disk probe routines are actually called, they need to return
...
something.
1994-03-10 21:52:07 +00:00
mycroft
0c19458c6f
More updates for new config.
1994-03-10 20:05:30 +00:00
mycroft
aa45779df7
Update for new config.
1994-03-10 19:57:20 +00:00
mycroft
e4102b8797
Cleanup to fit standard coding conventions, and *many* bugs fixed.
1994-03-10 05:18:33 +00:00
mycroft
5a17003403
Some changes inspired by Bruce Evans's driver:
...
Consolidate error reporting in one function. Actually use the dk_status and
dk_error fields, and pass around only the error bit to avoid lots of unneeded
assignments and tests. No functional differences.
1994-03-07 05:54:44 +00:00
mycroft
991225bfc8
Remove DKFL_QUIET.
1994-03-07 03:18:35 +00:00
mycroft
0c082bcaf8
DELAY() --> delay(). This is not a macro.
1994-03-06 17:18:43 +00:00
mycroft
87ed28e74e
Move the drive select and various other things into wdcommand(), to avoid
...
duplicating code.
1994-03-05 08:17:06 +00:00
mycroft
3e02952c52
Make sure we clear the interrupt when necessary. Why this isn't needed on
...
my hardware is a mystery.
1994-03-04 23:43:14 +00:00
mycroft
652712272f
Add another missing splx().
1994-03-04 17:51:10 +00:00
mycroft
0f92f76ceb
Remember to splx() on some error conditions.
1994-03-04 17:45:22 +00:00
mycroft
ef3c1bf7e6
Start the timeout loop *after* we've decided there is a disk there.
1994-03-04 04:15:24 +00:00
mycroft
220512c2a8
De-ANSIfy. Move the timeout counter into struct disk. Remove unneeded args
...
to wd[gs]etctlr(). Other minor changes.
1994-03-04 03:43:48 +00:00
mycroft
fa396ad402
Watch `seek complete' bit per IBM documentation. Clean up wdioctl(). Other
...
minor cleanup.
1994-03-03 01:58:21 +00:00
mycroft
7b734f94ec
Be more careful about clearing the controller and drive active flags.
1994-03-02 23:27:13 +00:00
mycroft
21118b1bc4
Don't busy-wait for read or write completion.
1994-03-02 22:07:00 +00:00
mycroft
e9326b3ba7
Make wdc_wait() do an implicit wait_for_unbusy(). Pass structure pointers
...
rahter than unit numbers where appropriate. Fix conflict if two drives have
I/O pending at the same time. Add some more sanity checks. Some other minor
cleanup.
1994-03-02 21:42:31 +00:00
mycroft
8ba740e6ab
Get the residual count right.
1994-02-26 19:49:25 +00:00
mycroft
060ee7dbab
Clean up busy-wait code a little, and we need a special disksort() to skip
...
over bufs in a combined transfer.
1994-02-26 19:00:51 +00:00
mycroft
969cea2357
Fix bug from 1.43 correctly.
1994-02-26 17:59:46 +00:00
mycroft
4299a2baec
Fix typo.
1994-02-26 17:13:44 +00:00
mycroft
aeae0fd5e3
Various cleanup, and fix last night's bug.
1994-02-26 17:10:12 +00:00
mycroft
fa83b6f469
Fix typo.
1994-02-26 00:08:01 +00:00
mycroft
a7cdc040ec
Some more stylistic cleanup.
1994-02-26 00:00:17 +00:00
mycroft
7f6bce365b
Fix an obvious bug that could stall the queue.
1994-02-25 18:30:37 +00:00
mycroft
2c3b28e0f9
Remove some redundant code.
1994-02-25 18:17:30 +00:00
mycroft
7e6ee0b562
Increase polling delay.
1994-02-25 18:08:21 +00:00
mycroft
9091e07409
Generalize busy-wait loops.
1994-02-25 17:45:28 +00:00
mycroft
faf08f7262
Don't bother #ifdefing things that are needed and always enabled.
1994-02-25 16:54:41 +00:00
mycroft
f6cee22427
Don't reimplement disksort().
1994-02-25 16:43:48 +00:00
mycroft
373782a3af
`We are the KNF. You will be assimilated.'
1994-02-25 16:40:47 +00:00
mycroft
2f62d06c05
Back pointers are not useful for disksort().
1994-02-10 15:17:34 +00:00
mycroft
bbb3e7618c
All ioctl routines take a struct proc * now.
1994-02-09 21:06:46 +00:00
mycroft
57892d4faf
Remove another use of b_actl.
1994-02-06 17:39:48 +00:00
mycroft
adeebc448e
Use b_actf, not av_forw.
1994-02-06 10:00:30 +00:00
mycroft
664f968d53
Inline all the [lr]cr[023]() `functions' in cpufunc.h.
1994-01-03 16:23:06 +00:00
mycroft
c0e772492e
Inline all the [lr]cr[023]() `functions' in cpufunc.h.
1994-01-03 16:21:48 +00:00
ws
778a3db3d0
Correct dumping to WD (was destroyed by MACHINE_NONCONTIG code)
1993-12-24 13:56:14 +00:00
mycroft
f2a0b4b335
Canonicalize all #includes, and add pio.h where appropriate.
1993-12-20 09:05:17 +00:00
mycroft
8ab45ada42
Eliminate reference to Maxmem.
1993-12-16 20:22:56 +00:00