aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
Commit message (Collapse)AuthorAge
* Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6Linus Torvalds2007-07-12
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (34 commits) PCI: Only build PCI syscalls on architectures that want them PCI: limit pci_get_bus_and_slot to domain 0 PCI: hotplug: acpiphp: avoid acpiphp "cannot get bridge info" PCI hotplug failure PCI: hotplug: acpiphp: remove hot plug parameter write to PCI host bridge PCI: hotplug: acpiphp: fix slot poweroff problem on systems without _PS3 PCI: hotplug: pciehp: wait for 1 second after power off slot PCI: pci_set_power_state(): check for PM capabilities earlier PCI: cpci_hotplug: Convert to use the kthread API PCI: add pci_try_set_mwi PCI: pcie: remove SPIN_LOCK_UNLOCKED PCI: ROUND_UP macro cleanup in drivers/pci PCI: remove pci_dac_dma_... APIs PCI: pci-x-pci-express-read-control-interfaces cleanups PCI: Fix typo in include/linux/pci.h PCI: pci_ids, remove double or more empty lines PCI: pci_ids, add atheros and 3com_2 vendors PCI: pci_ids, reorder some entries PCI: i386: traps, change VENDOR to DEVICE PCI: ATM: lanai, change VENDOR to DEVICE PCI: Change all drivers to use pci_device->revision ...
| * PCI: add pci_try_set_mwiRandy Dunlap2007-07-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As suggested by Andrew, add pci_try_set_mwi(), which does not require return-value checking. - add pci_try_set_mwi() without __must_check - make it return 0 on success, errno if the "try" failed or error - review callers Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * PCI: Change all drivers to use pci_device->revisionAuke Kok2007-07-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of all drivers reading pci config space to get the revision ID, they can now use the pci_device->revision member. This exposes some issues where drivers where reading a word or a dword for the revision number, and adding useless error-handling around the read. Some drivers even just read it for no purpose of all. In devices where the revision ID is being copied over and used in what appears to be the equivalent of hotpath, I have left the copy code and the cached copy as not to influence the driver's performance. Compile tested with make all{yes,mod}config on x86_64 and i386. Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com> Acked-by: Dave Jones <davej@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* | libata: remove irq_on from ata_bus_reset() and ata_std_postreset()Albert Lee2007-07-12
| | | | | | | | | | | | | | | | It seems irq_on() in ata_bus_reset() and ata_std_postreset() are leftover of the EDD reset. Remove them. Signed-off-by: Albert Lee <albertcc@tw.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | ata_piix: kill incorrect invalid map value warningTejun Heo2007-07-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The last two slots of MAP 00b of ich6m was incorrectly marked as reserved. This is left over from converting the entry to allow 00b. This causes no real problem. It only makes the driver print annoying warning message. Fix it. [patch also proferred by Pierre Tardy at the end of 2006 -jg] Signed-off-by: Tejun Heo <htejun@gmail.com> -- drivers/ata/ata_piix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | libata: add another Maxtor drive with broken NCQ to the listChuck Ebbert2007-07-12
| | | | | | | | | | | | | | Add another Maxtor 6B200M0 drive with broken NCQ to the list. Signed-off-by: Chuck Ebbert <cebbert@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | [libata] sata_mv: Fix and clean up per-chip-generation testsJeff Garzik2007-07-12
| | | | | | | | | | | | | | | | Due to a mistake in test logic, Gen-IIE chips were being treated as Gen-II chips in some cases. Fix this, and in the process, clean up IS_50XX/IS_60XX tests to the more uniform IS_GEN_{I,II,IIE} tests. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | [libata] sata_mv: Convert to new exception handling (EH) infrastructureJeff Garzik2007-07-12
| | | | | | | | | | | | | | This makes hotplug, NCQ, etc. possible, and removes one of the few remaining old-EH drivers. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | [libata] sata_mv: minor bug fixes, enhancements, and cleanups (prep for new EH)Jeff Garzik2007-07-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Continue replacing "CONSTANT & var" tests with "var & CONSTANT" * Don't clear EDMA_CFG_NCQ_GO_ON_ERR on Gen-IIE, where that bit does not exist * Set I/O Id field in descriptor, where present. Appears to work fine on all versions, even though queueing is still disabled. * call pci_set_mwi(), to (a) make sure cacheline size is set properly, and (b) enable MWI transactions * Remove never-used handling of coalescing interrupt bits (these events are always masked) Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | [libata] sata_mv: Minor cleanups and renaming, preparing for new EH & NCQJeff Garzik2007-07-11
| | | | | | | | | | | | | | | | Minor cleanups, new definitions, and code movement, preparing for upcoming new-EH and NCQ changes. This commit shoult not change behavior at all. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | libata-link: separate out ata_eh_handle_dev_fail()Tejun Heo2007-07-10
| | | | | | | | | | | | | | | | Separate out ata_eh_handle_dev_fail() from ata_eh_recover(). This is in preparation of ata_link and PMP support. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | pata_hpt3x3: fix DMA Kconfig option to actually have a hope of workingJeff Garzik2007-07-10
| | | | | | | | | | | | The hook that set DMA mode was accidentally deleted in the original patch. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | Add Hitachi HDS7250SASUN500G 0621KTAWSD to NCQ blacklistPrarit Bhargava2007-07-10
| | | | | | | | | | | | | | Add Hitachi HDS7250SASUN500G 0621KTAWSD to list of devices with broken NCQ. Signed-off-by: Prarit Bhargava <prarit@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | pata_scc.c: Workaround for errata A308Akira Iguchi2007-07-10
| | | | | | | | | | | | | | | | | | Workaround for errata A308: turn down the UDMA mode and retry the DMA command when the data lost condition is detected. Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp> Signed-off-by: Akira Iguchi <akira2.iguchi@toshiba.co.jp> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | libata: add FUJITSU MHV2080BH to NCQ blacklistTejun Heo2007-07-10
| | | | | | | | | | | | | | | | | | | | | | | | | | Please warmly welcome the first member from FUJITSU to the prestigious NCQ spurious completion club. This is reported by Serge Van Thillo in bugzilla bug 8730. http://bugzilla.kernel.org/show_bug.cgi?id=8730 Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Serge van Thillo <nulleke@hotmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | pata_hpt3x3: major reworking and testingAlan Cox2007-07-10
| | | | | | | | | | | | | | | | | | | | | | | | The HPT343/345 (aka 363) is a bit of a warped device. For many setups you need to access the other registers via BAR4 offsets. PIO is now rock solid, DMA isn't. Unfortunately the drivers/ide hpt34x driver is completely broken so doesn't help further debug. Signed-off-by: Alan Cox <alan@redhat.com> Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | libata: clean up horkage handlingTejun Heo2007-07-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Horkage handling had the following problems. * dev->horkage was positioned after ATA_DEVICE_CLEAR_OFFSET, so it was cleared before the device is configured. This broke HORKAGE_DIAGNOSTIC. * Some used dev->horkage while others called ata_device_blacklisted() directly. This was at best confusing. This patch moves dev->horkage right after dev->flags and set the field according to the blacklist during device configuration. All users test against dev->horkage. ata_device_blacklisted() now has only one user, make it static. While at it, rename it to ata_dev_blacklisted() for consistency. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | libata: quirk IOMEGA ZIP 250 ATAPI FLOPPYTejun Heo2007-07-10
| | | | | | | | | | | | | | | | | | | | | | The Zip 250 which chokes on MWDMA SET_XFERMODE sometimes have "Floppy" appeneded to its model number. Quirk it too. http://bugzilla.kernel.org/show_bug.cgi?id=8563 Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Hans de Bruin <bruinjm@xs4all.nl> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | libata: simplify PCI legacy SFF host handlingTejun Heo2007-07-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | With PCI resource fix up for legacy hosts. We can use the same code path to allocate IO resources and initialize host for both legacy and native SFF hosts. Only IRQ requesting needs to be different. Rename ata_pci_*_native_host() to ata_pci_*_sff_host(), kill all legacy specific functions and use the renamed functions instead. This simplifies code a lot. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | pata_mpc52xx: suspend/resume supportDomen Puncer2007-07-10
| | | | | | | | | | | | | | | | | | Implement suspend and resume routines for mpc52xx ata driver. Tested on Lite5200b with deep-sleep and low-power (not yet in-tree) modes. Signed-off-by: Domen Puncer <domen.puncer@telargo.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | sata_promise: SATA hotplug support, take 2Mikael Pettersson2007-07-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch enables hotplugging of SATA devices in the sata_promise driver. It's been tested successfully on both first- and second-generation Promise SATA chips: SATA150 TX2plus, SATAII150 TX2plus, SATAII150 TX4, SATA300 TX2plus, and SATA300 TX4. The only quirk I've seen is that hotplugging (insertion) on the first-generation SATA150 TX2plus requires a lengthier EH sequence than on the second-generation chips. On the second-generation chips a simple soft reset seems to suffice, but on the first-generation chip there's a "port is slow to respond" after the initial soft reset, after which libata issues a hard reset, and then the device is recognised. The hotplug checks are high up in the interrupt handling path, not deep down in error_intr as in ahci/sata_sil24. That's because the chip doesn't signal hotplug status changes in the per-port status register: instead a global register contains hotplug control and status flags for all ports. I considered following the ahci/sata_sil24 structure, but that would have required non-trivial changes to the interrupt handling path, so I chose to keep the hotplug changes simple and unobtrusive. Signed-off-by: Mikael Pettersson <mikpe@it.uu.se> -- This patch depends on the "sata_promise: cleanups" patch. Changes since the previous version (posted June 19): - Correct pdc_interrupt() to increment 'handled' also in the hotplug case. This prevents IRQ_NONE from being returned when an interrupt only has hotplug events to handle, which could confuse the kernel's IRQ machinery. - Added testing on the SATAII150 TX4. drivers/ata/sata_promise.c | 41 ++++++++++++++++++++++++++++++++++++----- 1 files changed, 36 insertions(+), 5 deletions(-) Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | pata_sis: FIFO whackAlan Cox2007-07-10
| | | | | | | | | | | | | | | | | | If you are using a SiS controller and the BIOS didn't set it up then the FIFO may be left active when we try and set up the CD. Not convinced this matters but I'd prefer to be safe Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* | libata-core: convert to use cancel_rearming_delayed_work()Oleg Nesterov2007-07-10
|/ | | | | | | | | | We should not use cancel_work_sync(delayed_work->work). This works, but not good. We can use cancel_rearming_delayed_work(), this also simplifies the code. Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] sata_mv: print out additional chip info during probeJeff Garzik2007-07-09
| | | | | | | Indicate whether this is a Generation-I (50xx), Generation-II (60xx), or Generation-II-E (6042/7042) chip. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask infoJeff Garzik2007-07-09
| | | | | | | | | The ATA_UDMAx masks are self-documenting, and far better than manually writing in the hex mask. Note that pata_it8213 mask differed from the comment. Added a FIXME there. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] AHCI: Add support for Marvell AHCI-like chips (initially 6145)Jeff Garzik2007-07-09
| | | | | | | | | | | | | Add support for the SATA portion of Marvell's AHCI-compatible chips. The PATA port capability, also available via AHCI, is disabled until support is completed. NCQ and PCI MSI are disabled by default. Marvell says "we use NCQ" in their drivers but "we do not use PCI MSI." Theoretically that implies we need to fix ahci.c to work with Marvell NCQ, but one wonders why Marvell NCQ is any different from other AHCI chips. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] Clean up driver udma_mask initializersJeff Garzik2007-07-09
| | | | | | | | * Use ATA_UDMA* * Remove FIXME notations that once served to remind us to verify that these were indeed the correct UDMA masks. They are. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* libata: Support chips with 64K PRD quirkAlan Cox2007-07-09
| | | | | | | | | Add ata_dumb_qc_prep and supporting logic so that a driver can just specify it needs to be helped in this area. 64K entries are split as with drivers/ide. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* Add a PCI ID for santa rosa's PATA controller.Christian Lamparter2007-07-09
| | | | | Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* sata_sil24: sil24_interrupt() micro-optimisationMikael Pettersson2007-07-09
| | | | | | | | | | | | | | | sil24_interrupt() loads host->ports[i] into a local variable, validates it, and then loads the value again in the call to sil24_host_intr(). This patch replaces the second load by a reference to the local variable. This is safe since no side-effects have occurred since the initial load. It also improves readability since it makes it clear that the parameter to sil24_host_intr() is the same value which was just validated. Signed-off-by: Mikael Pettersson <mikpe@it.uu.se> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* Add irq_flags to struct pata_platform_infoSonic Zhang2007-07-09
| | | | | | | | | | | On some embedded platforms, such as blackfin, the gpio interrupt for IDE interface is designed to be triggered with high voltage. The gpio port should be configured properly by set_irq_type() when register the irq. This patch enable the generic pata platform driver to accept platform irq flags data. Signed-off-by: Sonic Zhang <sonic.adi@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* sata_promise: cleanupsMikael Pettersson2007-07-09
| | | | | | | | | | | | | | | | | | This patch applies some trivial cleanups to sata_promise: - repair whitespace damage - correct comment at board_2057x_pata definition - pull SATAII TX4 support code out to separate functions - rename ata_nr to ata_no for consistency with libata's port_no - remove some init-time debug printks (requested by Jeff) This patch should cause no behavioural changes, except for the removed printks. Signed-off-by: Mikael Pettersson <mikpe@it.uu.se> -- drivers/ata/sata_promise.c | 56 ++++++++++++++++++--------------------------- 1 files changed, 23 insertions(+), 33 deletions(-) Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] pata_ixp4xx: kill unused varJeff Garzik2007-07-09
| | | | | | Reported by Michael-Luke Jones. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* ata_piix: fix pio/mwdma programmingTejun Heo2007-07-09
| | | | | | | | | | | | | | | | Fix various bugs in pio/mwdma mode programming. * Control bits in the timing register wasn't cleared properly while programming PIO mode. * MWDMA mode programming cleared the wrong part of control bits. * MWDMA mode programming cleared udma_mask even when the controller doesn't support UDMA. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Art Haas <ahaas@airmail.net> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] ahci: minor internal cleanupsJeff Garzik2007-07-09
| | | | | | | Minor cleanups, in preparation for merging Marvell PATA AHCI support in the future. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] sata_sx4, sata_via: minor documentation updatesJeff Garzik2007-07-09
| | | | | | | | | | | sata_sx4: - describe overall driver theory of operation - add a few constants that will be used in the future sata_via: - remove mention of an old-EH function that is going away Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] ahci: minor internal cleanupsJeff Garzik2007-07-09
| | | | | | Function renaming and factorization. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] ahci: Factor out SATA port init into a separate functionJeff Garzik2007-07-09
| | | | Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] pata_sil680: minor cleanups from benhJeff Garzik2007-07-09
| | | | | | | | Merge unrelated cleanups (__devinit, dev_dbg, hardware constant) from changeset "pata_sil680: Add MMIO support" authored by Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] sata_sx4: named constant cleanupJeff Garzik2007-07-09
| | | | | | | | * convert tabs to spaces * convert some hex numbers to (1 << n) preferred format * document i2c and timer control register bits Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] pata_ixp4xx: convert to new EHAlessandro Zummo2007-07-09
| | | | Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] pdc_adma: Reorder initializers with a couple structsJeff Garzik2007-07-09
| | | | | | | | Make it easier to verify which struct initializers are present, by presenting them in the order in which they are defined in the API header. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] drivers: remove 'void __iomem *' casts from pre-iomap daysJeff Garzik2007-07-09
| | | | Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] PATA drivers: remove ATA_FLAG_SRSTJeff Garzik2007-07-09
| | | | | | | This flag only has meaning in old-EH drivers, and these drivers have already been converted to the new EH. Remove. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] sata_sil: register table cleanupJeff Garzik2007-07-09
| | | | | | | | Make the register offset table more maintainable. From the 'sii-lbt' branch, which enables the LBT chip feature. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* use_clustering (sht) bit set to 0 in AHCI ?Jens Axboe2007-07-09
| | | | | | | | | | ahci: enable sg segment clustering The specification states that ahci supports segments up to 4MiB in size, so enable clustering. Signed-off-by: Jens Axboe <jens.axboe@oracle.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* libata: replace ap->cbl tests with ATA_FLAG_SATA testsTejun Heo2007-07-09
| | | | | | | | | | | ap->cbl == ATA_CBL_SATA indicates SATA cable while ap->flags & ATA_FLAG_SATA indicates SATA host port. Till now they always gave the same result but SATA/PATA bridge handling will change that. Switch to ATA_FLAG_SATA test if we're testing for host port type. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] pata_atiixp: add SB700 PCI IDJeff Garzik2007-07-09
| | | | | | From AMD. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* libata-acpi: implement _GTM/_STM supportTejun Heo2007-07-09
| | | | | | | | | | | | | | | | | Implement _GTM/_STM support. acpi_gtm is added to ata_port which stores _GTM parameters over suspend/resume cycle. A new hook ata_acpi_on_suspend() is responsible for storing _GTM parameters during suspend. _STM is executed in ata_acpi_on_resume(). With this change, invoking _GTF is safe on IDE hierarchy and acpi_sata check before _GTF is removed. ata_acpi_gtm() and ata_acpi_stm() implementation is taken from Alan Cox's pata_acpi implementation. ata_acpi_gtm() is fixed such that the result parameter is not shifted by sizeof(union acpi_object). Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* libata-acpi: remove redundant checksTejun Heo2007-07-09
| | | | | | | Remove remaining unnecessary feature and status checks. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>