| Age | Commit message (Collapse) | Author |
|
This patch works around an issue with WD drives (and possibly others)
over SiL PATA->SATA Bridges on SATA controllers locking up with
transfers > 200 sectors.
Signed-off-by: Brad Campbell <brad@wasp.net.au>
|
|
Also, trim trailing whitespace.
|
|
XFER_xxx is not necessarily "legacy IDE 'stuff'"
|
|
This is todays BK on a x86:
CC [M] drivers/usb/storage/freecom.o
In file included from include/linux/hdreg.h:4,
from drivers/usb/storage/freecom.c:32:
include/linux/ata.h:197: error: parse error before "u32"
...
and so on for tens of lines.
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
|
|
Signed-off-by: Chris Wedgwood <cw@f00f.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
|
|
This patch modifies libata-scsi for easier sharing of
the various ata_id_* functions and the ata_scsi_simulate()
function with non-libata drivers.
Signed-off-by: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
|
|
It's not needed, and it generates very poor code on some platforms.
Noticed by Bart and David Miller.
|
|
Mainly adding the infrastructure for various ATA ioctls. Currently
only supports two ATA-specific ioctls:
HDIO_GET_32BIT and HDIO_SET_32BIT (hdparm -c)
|
|
|
|
into pobox.com:/spare/repo/libata-2.6
|
|
The macros ata_id_has_lba() and ata_id_has_dma() seem to have their bits
reversed. LBA support is bit 9 of word 49 in the identify page, whereas
DMA support is bit 8 of word 49 in the identify page.
|
|
* new helper atapi_cdb_len() in linux/ata.h, use it after
IDENTIFY PACKET DEVICE command completes
* add new taskfile protocol ATA_PROT_ATAPI_NODATA
* store scsi cdb in ata_queued_cmd. This removes another dependence
on the scsi layer, and enables us to issue an internal REQUEST SENSE.
* store cdb len in ata_port
* new constant ATAPI_CDB_LEN for max cdb length
* move ATA taskfile and SCSI cdb near the top of ata_queued_cmd, for
better cacheline friendliness.
|
|
Add MWDMA support, and rework pio/mwdma/udma mode setup.
In the lone test case for PATA support, ata_piix, MWDMA mode setting
does not appear to work here. UDMA and PIO continue to work, so nobody
will really notice. But beware. Probably a driver problem, not
a bug in the core.
Also, doesn't bother writing to dummy timing registers on ICH5/6 SATA
anymore.
|
|
|
|
Detection of an ATAPI taskfile is possible using a simple test
on existing information, so there is no need to cache this value
in a separate flag (ATA_QCFLAG_ATAPI). Instead, create and use
a new helper function is_atapi_taskfile().
|
|
* SEEK(6), SEEK(10), and REZERO_UNIT are no-ops. Unconditionally
complete these commands with success.
* MODE SENSE caching page work:
* correct page length
* set bit, if read-ahead is disabled
* set bit, if writeback caching is enabled
(previously, this bit was never set, even if
writeback caching was enabled)
* add MODE SENSE r/w error recovery page
|
|
* note a nasty problem with shared interrupts that must be fixed
before we turn on certain code paths.
* add a few comments to the READ CAPACITY scsi simulator
* remove a FIXME comment from the TEST UNIT READY scsi simulator
* add constant for ATA command CHECK POWER MODE, and associated
"mandatory" power management feature set bit.
|
|
The SCSI T10 committee is working on a document describing a standard
method for translating ATA<->SCSI, since it being done quite often
these days. Some of the recommendations are reasonable, and we implement
two here:
* Mirror that ATA 'removeable media' bit into INQUIRY output.
* Change behavior of INQUIRY output field 'product revision' from
the libata software version number to the first 4 bytes of the
ATA device's firmware revision number.
Rather than cache the firmware revision in struct ata_device, as was/is
done with two other strings, I took the opportunity to eliminate the
caching of the two other strings, 'vendor' and 'product'. These strings
are now retrieved as needed from the IDENTIFY [PACKET] DEVICE info page,
since we cache its entire contents.
Retrieving a string from the identify-device page is done via the
helper function ata_dev_id_string(), which is now exported.
This patch winds up making struct ata_device 40 bytes smaller, and
the libata core gets a bit smaller as well.
|
|
DMADIR bit is necessary for some PATA->SATA bridges. These
bridges require the OS driver to specify the data xfer direction,
for PACKET (a.k.a. scsi) commands.
A reliable DMADIR detection method hasn't yet been developed,
and ATAPI is still a WIP, so DMADIR is enabled with an ifdef for
now.
|
|
* bug fix: make sure 'nsect' member of struct ata_queued_cmd is
initialized each time a cmd is re-used. Only affects PIO data xfers,
which nobody uses.
* slightly change the way a device's flags are printed out. currently
the only flag is 'lba48', but soon 'wcache' will appear also.
* add WB-cache-related constants and macros to linux/ata.h
|
|
struct ata_taskfile is generic, and so far its flags (ATA_TFLAG_xxx)
Also, move ATA_PROT_xxx definitions into their own enum.
|
|
The various ways you can send data to/from your ATA device is
known as the ATA taskfile protocol: PIO single sector, PIO
multiple sector, DMA, DMA TCQ, DMA NCQ, ...
Prior to this change, the data direction (read/write) was encoded
implicitly into the ATA_PROT_xxx value itself. This increased
complexity in some areas, and inhibited flexibility in others.
This change separates data direction from taskfile protocol, and also
moves the data direction flag (ATA_QCFLAG_WRITE) down to a lower
level (ATA_TFLAG_WRITE).
|
|
Also update copyrights for 2004.
|
|
Intel ICH5 (production)
ServerWorks / Apple K2 (beta)
VIA (beta)
Silicon Image 3112 (broken!)
Various Promise (alpha/beta)
|