bouyer
b5f3e628a3
If setting to pio mode < 3 fails, try to set pio mode 3 before returning
...
EIO. The spec says ATAPI devices should support "PIO 3 or better".
They are supposed to support less as well. Setting the device to a highter
mode than the controller shoul'nt be a problem, and this is likely what
happens with legaty ISA controllers.
Solve problem reported by Ruey-Shyang Guo.
1999-04-15 16:21:27 +00:00
bouyer
e91bdf1c67
Add SCSI_IGNORE_NOT_READY to the flags for CDIOCCLOSE: some devices will
...
attempt to spin up, and report an error if there's no CD. Fixes port-i386/7345.
1999-04-08 16:12:31 +00:00
bouyer
c2752835f7
Fix a long-standing bug with the ACAP_* flags:
...
- the cap field is a u_int8_t, so none of the defined flags would fit in.
Looks like nobody had a drive using 16 bytes commands.
- the ACAP_DRQ_* flags are all wrong. Just remove them and use the definitions
from ata/atareg.h, there's no need to duplicate theses. The effect of this
was that we were always polling for the command phase, even for drives
with interrupt DRQ. This didn't break until the code was changed to support
shared interrupts.
Should fix the lookup problems or 'boot hangs' reported by some users, and
kern/7111.
1999-04-08 11:29:01 +00:00
bouyer
29936d77d4
Now that we do real use of CDIOCCLOSE, we can have SSS_START|SSS_LOEJ
...
in scsipi_start(). Adjust test so that timeout will let enouth time to
the drive to spin up.
1999-04-07 12:47:27 +00:00
mycroft
7a304dfe1b
If scsipi_command() fails, always print out the error code.
1999-04-05 19:19:34 +00:00
bouyer
bf88fc82eb
Adjust timeout for 'ielem' to match the comment: 5 mn (not 5s) per element +
...
10mn initial.
1999-04-04 12:20:48 +00:00
bouyer
b43b844f6f
- change the interrupt routines to take a 3rd arguments, set to 1 if we
...
are called from the interrupt or timeout handler, 0 otherwise.
- use this to know if we can busy-wait for wait_for_unbusy or wait_for_ready
This fixes a bug where CDs withot the DRQ_INTR capability would not busy-wait
for the CMDOUT phase.
While I'm there change 2 delay() to DELAY() for consistency, and
garbage-collect some old code from wdcintr() which has been ifdef'd out
for some time now.
1999-04-01 21:46:28 +00:00
bouyer
1ff88ee466
Avoid busy-waiting when possible if we are not polling (real IRQ or timeout
...
callback). Shared PCI IRQ should now work (but still untested).
1999-03-25 16:17:36 +00:00
explorer
3ebb419571
Update to slightly altered rnd_attach_source() api
1999-02-28 17:08:05 +00:00
jwise
8ef8f5c8fb
Fix typo.
...
Fixes last part of PR bin/6883 from Soren S. Jorvang <soren@t.dk>.
1999-02-24 18:54:03 +00:00
hubertf
ed418e30a2
Only define WDCDEBUG if not already define (e.g. by kernel option)
1999-02-21 00:52:04 +00:00
bouyer
13e811e874
Revert to 1.23, this was not supposed to be checked in yet.
1999-02-15 18:43:08 +00:00
bouyer
18496766b2
For CDIOCCLOSE, ignore media changes, as some drive seems to return this
...
info here.
1999-02-15 18:41:04 +00:00
bouyer
379429d4df
If the REQUEST_SENSE command fails, issue a reset instead of XS_DRIVER_STUFFUP.
...
If REQUEST_SENSE succeeds but doens't return any data, return XS_SHORTSENSE
as the sense field will just contain a copy or the error register.
1999-02-15 18:40:01 +00:00
bouyer
6dd47fe65f
Abort transfer if b_blkno is negative. Closes PR kern/5553 by Johan Danielsson.
1999-02-10 12:29:50 +00:00
bouyer
f6f9f8a965
Change DIOCEJECT to do what's needed to eject a device before the eject
...
command (unlock for sd and cd) if no other partitions are open, return
EBUSY otherwise. DIOCEJECT will have the old semantic if its argument is not
0. The old ioctl has been renamed to ODIOCEJECT for binary compatibility.
1999-02-08 16:33:16 +00:00
sommerfe
0d3a9dfce7
Don't bring scsi/atapi common files in under the "atapi" attribute.
...
Bring them in under atapibus since they're not needed unless something
attached to an atapibus is also attached.
Tested on i386 and arm32.
1999-02-07 22:58:43 +00:00
bouyer
0075c51a23
Bump CDRETRIES to 4. Now if a DMA error occurs, the driver should downgrade
...
to PIO mode and the command be retried properly.
1999-02-02 13:02:49 +00:00
bouyer
c0e7b6c5cb
If sense_key == UNIT_ATTENTION and ASC/ASQ == "Power On, Reset, or Bus Device
...
Reset", retry the command instead of returning an error. XS_RESET is useless
without this, as the retryed command will die with this unit attention.
1999-02-02 13:01:36 +00:00
bouyer
2bf6a99afb
For IDE/ATAPI protocols botches, reset the bus and return XS_RESET
...
instead of XS_DRIVER_STUFFUP.
1999-02-02 12:59:31 +00:00
bouyer
ce870816e0
Cosmetic changes, from Soren S. Jorvan.
1999-01-29 11:36:20 +00:00
bouyer
12868a7d80
Return ENODEV instead of EIO when we are trying to open a device without media
...
in the drive. restrict "opening of empty drive" to character devices only
(reading a block device returns a short read instead of ENODEV, which can lead
to confusion).
1999-01-29 11:17:58 +00:00
bouyer
f52c71b0e8
Allows the raw partition to be open()'ed, even when scsipi_start() fails
...
(no media or other ...) so that we can always send ioctl's to the device.
1999-01-26 13:59:44 +00:00
bouyer
cafe97da38
Another CD drive that doesn't support REQUEST SENSE, from Patrick Welche.
1999-01-26 10:00:08 +00:00
bouyer
d86a570eac
Add a mitsumi CD that can't handle REQUEST SENSE command. From
...
Johan Danielsson <joda@pdc.kth.se>.
1999-01-21 10:31:39 +00:00
bouyer
d8f58a3506
Move test for SDEV_NOSTARTUNIT quirk from sd.c to scsipi_start().
...
Add a SDEV_NOSTARTUNIT quirk entry for BCD-16X 1997-04-25", "", "VER 2.2"
CD-rom (from Michael Santos).
1999-01-19 10:57:11 +00:00
bouyer
f10115b632
"Memorex CRW-2642" CD-R can't properly handle REQUEST SENSE command.
...
Add it to the quick table, per PR kern/6844.
1999-01-19 09:31:58 +00:00
thorpej
ae8a556ce5
Add missing XS_SELTIMEOUT case in user command completion path, returning
...
SCCMD_TIMEOUT. Based on PR #6720 , Andreas Wrede.
1999-01-11 22:07:08 +00:00
tron
3fbb44a7bb
Make MTIOCRDSPOS, MTIOCSLOCATE, etc. work with write protected tapes.
...
Patch supplied by Dave Huang in PR kern/5305.
1999-01-10 21:46:39 +00:00
mjacob
ec1a086c80
Make the error condition of neither 0x70 or 0x71 error codes a tad
...
more informative than the lower case 'error code %d'.
1999-01-10 06:26:23 +00:00
thorpej
268eb959c4
Make this compile again after the void * arith changes.
1999-01-09 03:16:17 +00:00
augustss
332d7c138f
Avoid arithmetic on `void *' since that's not ANSI C.
1999-01-08 18:10:35 +00:00
is
bfb7f2aaf3
Multisession-CD-Support, by Torsten Duwe <duwe@ns.lst.de>.
1999-01-04 15:32:08 +00:00
dbj
3fec12a459
Added parens around ADD_BYTES_LIM() macro definition to protects its
...
use of the low precedence ?: conditional operator. This fixes a bug
in scsipi_interpret_sense when printing out debugging info.
1998-12-30 11:17:34 +00:00
leo
c81639d273
Change quirk entry: "FX320S", "", " q01" to: "FX320S", "", "q01". This
...
space does seem to matter...
1998-12-21 21:40:12 +00:00
gibbs
c9eb836a6a
Return ENODEV when the device capability check fails for MOVE and EXCHANGE
...
operations.
1998-12-17 22:28:07 +00:00
gibbs
1b30d7e440
Correct the definition of the changer device capabilities page. The
...
previous definition confused some reserved bytes for exchange capabilities.
1998-12-17 22:27:18 +00:00
bouyer
85078af6c4
Add a new quirk flags, "ADEV_NOSENSE", for devices that don't
...
handle properly the request sense command. Add <FX320S, , q01> as being
sense-unfriendly in the quirk table.
1998-12-17 13:05:05 +00:00
bouyer
945acd7834
Leave some room for the string-terminating char in temp. buffers.
...
Pointed out by Scott Presnell (thanks !).
1998-12-16 13:06:52 +00:00
bouyer
c37bf0ccb4
Keep track of DMA errors, and downgrade the transert mode (UDMA ->DMA,
...
DMA->PIO) in case of 2 consecutive errors. Don't downgrade if the
PIO/DMA/UDMA modes were forced by a config flag.
1998-12-16 13:02:03 +00:00
mycroft
95aa0d0b7d
Simplify the copy loops a bit.
1998-12-12 16:58:10 +00:00
mjacob
7f5c8f7db2
add Adaptec RAID units as devices that do not return geometry pages
1998-12-10 18:13:29 +00:00
thorpej
10d50739c7
Actually, restructure scsipi_wait_drain() slightly.
1998-12-08 00:26:22 +00:00
thorpej
8ebf1e8824
Remove xs_free_list; it no longer exists.
1998-12-08 00:20:16 +00:00
thorpej
624619a881
When closing, wait for pending xfers to drain before deleting the reference
...
to the adapter.
1998-12-08 00:19:27 +00:00
thorpej
dcc5f32c2b
When closing, wait for pending xfers to drain before unlocking the door,
...
and wait again before deleting the reference to the adapter.
1998-12-08 00:18:46 +00:00
thorpej
1ddd2ffec0
- When allocating a scsipi_xfer, add it to the specified device's
...
pending_xfers queue.
- When freeing a scsipi_xfer, remove it from the device's pending_xfers
queue. If the queue is empty, and SDEV_WAITDRAIN is set, wakeup
those waiting for the queue to drain.
- Implement scsipi_wait_drain(), which waits for a device's pending_xfers
queue to drain.
1998-12-08 00:17:21 +00:00
thorpej
98194169ea
When allocating a device's scsipi_link, initialize the pending_xfers
...
queue.
1998-12-08 00:14:41 +00:00
thorpej
126dc6bfcc
- Remove the "free_list" member from scsipi_xfer. Add "adapter_q" and
...
"device_q" TAILQ entries. The former is for use by the adapter driver,
as it sees fit. The latter is for the scsipi middle layer to track
pending xfers per device.
- Add a pending_xfers queue to scsipi_link, to track pending xfers per
device.
- Grow scsipi_link's flags to int, and add SDEV_WAITDRAIN, to indicate that
we're waiting for the pending_xfers queue to empty.
1998-12-08 00:13:58 +00:00
mjacob
337eb43541
NOMODESENSE for all Seagate ST19171- not just FC
1998-12-05 20:52:47 +00:00