Commit Graph

200 Commits

Author SHA1 Message Date
kenh
48f2e0ae6c Add a new flag to wdc_command: ATA_READREG. This will indicate that all
device registers should be read back into the wdc_command structure after
successfull command completion.  Use this this in wdioctl() for
ATAIOCCOMMAND.
1998-11-23 23:00:26 +00:00
drochner
3e38051bc5 in wdc_softc: access the per-channel data via a pointer array instead of
an array of fixed-sized channel_softc elements. This way IDE controllers
which more than 1 channel (pciide) can extend the channel data easily
for private needs.
To avoid the double dereference at runtime, change the argument of
wdcstart() to the channel data pointer instead of the array index.
1998-11-21 15:41:41 +00:00
thorpej
d0a4fb616f Implement controller reference counting on ATA devices. 1998-11-20 01:23:52 +00:00
kenh
510830d2c3 Rename WDCIOCCOMMAND (and related structures) to ATAIOCCOMMAND 1998-11-19 23:44:20 +00:00
kenh
9bc9937238 Add support for the WDCIOCCOMMAND ioctl. This allows the sending of
arbitrary ATA commands from user-space.  Concepts mostly taken from
the implementation of the SCIOCCOMMAND ioctl.
1998-11-19 19:46:12 +00:00
kenh
7faa4da4bc Don't protect this with #ifdef _KERNEL 1998-11-18 16:32:29 +00:00
bouyer
d74652866f For ATAPI IDENTiFY, poll only for DRQ, some devices don't assert DRDY at this
point.
1998-11-16 11:25:41 +00:00
bouyer
1e71e76d6c - clearify the boot messages (features supported vs features used). Thanks to
Havard Eidnes for his complains about this :)
- fix some typo in comments
- hoppefully better detection of drives reporting bogus PIO modes.
1998-11-11 19:38:27 +00:00
bouyer
7bdbb5c993 Donc reset the disk state to 0 in wd.c, set a flag which will cause it
to be reset to 0 at wdcstart(). This fixes a race condition between
normal I/O and wdioclt(). Also use interrupts for wd_get_params in wdopen().
1998-10-20 17:00:25 +00:00
bouyer
a7c841cfbc Donc reset the disk state to 0 in wd.c, set a flag which will cause it
to be reset to 0 at wdcstart(). This fixes a race condition between
normal I/O and wdioclt().
1998-10-20 17:00:24 +00:00
bouyer
e8322de657 Add a new drive flag, DRIVE_MODE, set when the drive properly reported its
PIO/DMA modes. Don't try a SET_FEATURE if it didn't report its mode.
1998-10-13 15:18:46 +00:00
bouyer
7545a59b8c In debug message, always print controller:channel:drive 1998-10-13 15:02:41 +00:00
bouyer
ff0134b99f Properly separate DEBUF_XFERS and DEBUG_FUNCS: DEBUF_XFERS is for data
transfers (may be called often), where DEBUG_FUNCS is for setup functions
(not used for normal contitions).
1998-10-13 09:33:59 +00:00
thorpej
dc7cfafe4c Default to "no debugging messages" (still patchable). 1998-10-13 05:39:01 +00:00
bouyer
46aa11acac Adjust include list. 1998-10-12 19:50:09 +00:00
bouyer
19fddaeeb5 Merge bouyer-ide 1998-10-12 16:09:10 +00:00
drochner
73ac88b3ed make the default disklabel consistent to the SCSI/ATAPI case 1998-09-07 21:28:22 +00:00
rvb
305a943ba7 Use scsi style geometry printout 1998-08-15 15:05:22 +00:00
mycroft
6dc903202f Assign my copyrights to TNF. 1998-08-15 10:10:47 +00:00
rvb
48bf26949f Report "true" disk geometry; like sd disks do 1998-08-13 18:16:53 +00:00
cgd
651b44e211 Rework the way kernel include files are installed. In the new method,
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.
1998-06-12 23:22:30 +00:00
thorpej
be62e9cb1b Nuke __BROKEN_INDIRECT_CONFIG. 1998-06-09 07:35:06 +00:00
enami
df385821f4 Print newline like others do when tracing wdunlock. 1998-06-04 02:25:05 +00:00
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