linux/drivers/ata
Alan Cox be0d18dff5 libata: cable detection fixes
2.6.21-rc has horrible problems with libata and PATA cable types (and
thus speeds). This occurs because Tejun fixed a pile of other bugs and
we now do cable detect enforcement for drive side detection properly.

Unfortunately we don't do the process around cable detection right. Tejun
identified the problem and pointed to the right Annex in the spec, this patch
implements the rest of the needed changes.

We add a ->cable_detect() method called after the identify
sequence which allows a host to do host side detection at this point
should it wish, or to modify the results of the drive side identify.

This separate ->cable_detect method also cleans up a lot of code because
many drivers have their own error_handler methods which really just set
the cable type.

If there is no ->cable_detect method the cable type is left alone so a
driver setting it earlier (eg because it has the SATA flags set or
because it uses the old error_handler approach) will still do the right
thing (or at least the same thing) as before.

This patch simply adds the cable_detect method and helpers it doesn't use
them but other follow up patches will (ie Adrian please don't submit
patches to unexport them ;))

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-04-28 14:15:55 -04:00
..
ahci.c ahci.c: walkaround for SB600 SATA internal error issue 2007-03-28 02:04:27 -04:00
ata_generic.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
ata_piix.c ata_piix: Remove ugly layering violation 2007-03-09 08:41:15 -05:00
Kconfig drivers/ata/Kconfig: PATA_SCC depends on wrong platform 2007-03-19 11:56:59 -04:00
libata-acpi.c [libata] Disable ACPI by default; fix namespace problems 2007-03-28 01:57:37 -04:00
libata-core.c libata: cable detection fixes 2007-04-28 14:15:55 -04:00
libata-eh.c libata: Clear tf before doing request sense (take 3) 2007-04-04 02:12:27 -04:00
libata-scsi.c RESEND: libata: check cdb len per dev instead of per host 2007-04-28 14:15:55 -04:00
libata-sff.c [libata] Trim trailing whitespace. 2007-02-26 05:51:33 -05:00
libata.h [libata] Disable ACPI by default; fix namespace problems 2007-03-28 01:57:37 -04:00
Makefile libata: PATA driver for Celleb 2007-02-21 04:58:16 -05:00
pata_ali.c libata: dev_config does not need ap and adev passing 2007-04-28 14:15:55 -04:00
pata_amd.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_artop.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_atiixp.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_cmd64x.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_cs5520.c [PATCH] trivial ATA iomem annotations 2007-03-14 15:27:50 -07:00
pata_cs5530.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_cs5535.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_cypress.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_efar.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_hpt3x2n.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_hpt3x3.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_hpt37x.c [libata] bump versions 2007-02-26 06:04:24 -05:00
pata_hpt366.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_isapnp.c libata: clear drvdata in ata_host_release(), take#2 2007-03-01 20:16:28 -05:00
pata_it821x.c libata: dev_config does not need ap and adev passing 2007-04-28 14:15:55 -04:00
pata_it8213.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_ixp4xx_cf.c pata_ixp4xx_cf: fix interrupt 2007-03-19 11:58:01 -04:00
pata_jmicron.c [libata] pata_jmicron: build fix 2007-03-03 10:36:19 -05:00
pata_legacy.c pata_legacy: fix io/irq mismatch 2007-03-06 04:04:30 -05:00
pata_marvell.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_mpc52xx.c [PATCH] misc NULL noise 2007-03-14 15:27:49 -07:00
pata_mpiix.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_netcell.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_ns87410.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_oldpiix.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_opti.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_optidma.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_pcmcia.c [libata] bump versions 2007-02-26 06:04:24 -05:00
pata_pdc202xx_old.c libata: dev_config does not need ap and adev passing 2007-04-28 14:15:55 -04:00
pata_pdc2027x.c [libata] bump versions 2007-02-26 06:04:24 -05:00
pata_platform.c libata: clear drvdata in ata_host_release(), take#2 2007-03-01 20:16:28 -05:00
pata_qdi.c pata_qdi: Fix initialisation 2007-03-02 18:18:38 -05:00
pata_radisys.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_rz1000.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_sc1200.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_scc.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_serverworks.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_sil680.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_sis.c pata_sis: Fix oops on boot 2007-04-19 19:20:52 -04:00
pata_sl82c105.c [libata] pata_{legacy,sc1200,sl82c105}: add missing hooks 2007-03-02 18:09:05 -05:00
pata_triflex.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_via.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_winbond.c [libata] bump versions 2007-02-26 06:04:24 -05:00
pdc_adma.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_inic162x.c libata: handle ata_pci_device_do_resume() failure while resuming 2007-04-28 14:15:55 -04:00
sata_mv.c [libata] sata_mv: clean up DMA boundary issues, turn on 64-bit DMA 2007-04-28 14:15:55 -04:00
sata_nv.c sata_nv: revert use of notifiers for now 2007-03-09 08:41:16 -05:00
sata_promise.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_promise.h Move libata to drivers/ata. 2006-08-10 07:31:37 -04:00
sata_qstor.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_sil24.c libata: dev_config does not need ap and adev passing 2007-04-28 14:15:55 -04:00
sata_sil.c libata: dev_config does not need ap and adev passing 2007-04-28 14:15:55 -04:00
sata_sis.c [PATCH] trivial ATA iomem annotations 2007-03-14 15:27:50 -07:00
sata_svw.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_sx4.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_uli.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_via.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_vsc.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sis.h SiS warning fixes 2007-02-21 04:58:17 -05:00