Age | Commit message (Collapse) | Author |
|
Diff generated by Chris Kuethe.
|
|
|
|
|
|
Adopted from NetBSD by Alexander Yurchenko <grange@openbsd.ru>.
costa@ ok.
|
|
PR2490 from Alexander Yurchenko <grange@rt.mipt.ru>
|
|
|
|
|
|
|
|
|
|
|
|
(Look ma, I might have broken the tree)
|
|
correct order.
|
|
idea from deraadt@ via NetBSD
millert@ ok
|
|
|
|
suggesting this fix.
Update atapiscsi Ultra DMA downgrade logic.
|
|
device registers as this may cause lock-ups on some chipsets
Clean-up in atapiscsi. Get rid of claim_irq. Instead, atapiscsi always
returns -1 (maybe) from the interrupt handler.
|
|
|
|
|
|
|
|
on the value floating on the bus, we would occasionally skip the register
writability tests. Whoops...
Move fix for a flash device that doesn't wake up until a command is sent
Try to supress spurious interrupts. However, if one does happen, acknowledge
it anyway by reading status. This prevents the interrupt condition from
persisting.
|
|
|
|
drvp structure
|
|
|
|
|
|
Flushcache on shutdown used to pass both AT_POLL and AT_WAIT. The two flags
do not make sense together.
Should fix panic when shutting down from ddb
|
|
|
|
functions to return status flags.
Note: Changing code to have DMA interface indicate when I/O is done (a la NetBSD) was considered. It was rejected due to questionable backward compatability
with ISA DMA and MAC obio DMA
Added irqack from NetBSD (though this feature should really be in the
PCI interrupt handlers)
Use pool
|
|
|
|
Removed hardcoded WDCDEBUG definitions.
|
|
|
|
|
|
in by default.
|
|
(return 0x00 status persistently). Send them identify to wake them up.
Flag value 0x10000 will enable probe messages for a channel/controller.
When UKC supports setting flags, this will be useful debugging
failing IDE detects without kernel recompiles.
|
|
|
|
|
|
SCSI/ATAPI detach is not here yet.
Minor cleanup of wdc. Downgrade to UDMA mode 1 before going further.
Want to stay in UDMA modes because they're more error-resilient due to
a CRC.
Got rid of some of the ridiculous amount of softc sharing going on.
Hopefully, this will make the life of whoever goes in and fixes the
ref-counting to be correct easier.
|
|
|
|
|
|
driver (pciide, wdc, etc.)
Remove #define WDCDEBUG from top of files
More fixes to ATAPISCSI logic:
Not all devices transition correctly between phases. Devices are supposed
to keep BSY high until they've set the registers to the next sensible
state. Some devices drop BSY and leave the registers in an old or
nonsense state. Our polling code is extremely sensitive to this
(though an early itnerrupt could also observe this). So, if the device is
in an unexpected state, the new polling code waits for a while in the hope
that it enters a better state.
This seems to fix many of the problems reported.
Also, there was a horrible bug which would cause sense to fail on a ATAPI
command that sent data to the drive
|
|
We have diverged from NetBSD in that wdc_exec_xfer no longer automatically
swaps.
|
|
|
|
from bouyer:
- Add some debug printf (WDCPROBE) in _wdcreset_wait(), I've needed these
2 times in the past
- Set up timeout per xfer instead of per interrupt. This helps with
PIO transfer (we would call timeout()/untimout() several times for a
transfer).
- If we missed an interrupt for a PIO transfer, reset and restart it
immedialy, don't try to recover and continue. If we missed an interrupt we
may have lost a read/write cycle on the IDE bus. If this happens 1) we
corrupt data and 2) we enter an interrupt loop at the end of the xfer, as
the drive has some more data to read/write, but the host thinks the xfer is
done.
This last change fix the (or at last some of the) 'lookup after lost interrupt'
some peoples have been experiencing.
|
|
printed line with the name of hard disk.
|
|
Separate wdc_probe_caps into wdc_probe_caps and wdc_print_caps for more
flexibility in printing capability information.
Get rid of wdc_final_attach.
Include name of device (e.g. cd0), if possible, on errors.
atapiscsi layer work:
Put a pointer to the SCSI device into ata_drive_datas' drv_softc field
Simplify, simplify, simplify. Got rid of a bunch of fields in atapiscsi_softc
Delay printing capabilities until we know the real device name (e.g. st0)
|
|
|
|
Should really use viscopy() when copying atap_model -> d_packname.
When wd's become sd's this will be trivial (viscopy() lives in sd.c)
|
|
|
|
use b* instead of mem* functions, adhere to NISADMA for DMA support.
|
|
|
|
|