linux-kernel-test/drivers/ata
Tejun Heo d447df140d ahci: implement ata_save/restore_initial_config()
There are several registers which describe how the controller is
configured.  These registers are sometimes implemented as r/w
registers which are configured by firmware and get cleared on
controller reset or after suspend/resume cycle.  ahci saved and
restored those values inside ahci_reset_controller() which is a bit
messy and doesn't work over suspend/resume cycle.

This patch implements ahci_save/restore_initial_config().  The save
function is called during driver initialization and saves cap and
port_map to hpriv.  The restore function is called after the
controller is reset to restore the initial values.

Sometimes the initial firmware values are inconsistent and need to be
fixed up.  This is handled by ahci_save_initial_config().  For this,
there are two versions of saved registers.  One to write back to the
hardware register, the other to use during driver operation.  This is
necessary to keep ahci's behavior unchanged (write back fixed up
port_map while keeping cap as-is).

This patch makes ahci save the register values once before the first
controller reset, not after it's been reset.  Also, the same stored
values are used written back after each reset, so the register values
are properly recovered after suspend/resume cycle.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-04-28 14:16:01 -04:00
..
ahci.c ahci: implement ata_save/restore_initial_config() 2007-04-28 14:16:01 -04:00
ata_generic.c pata: cable methods 2007-04-28 14:16:01 -04:00
ata_piix.c pata: cable methods 2007-04-28 14:16:01 -04:00
Kconfig libata/IDE: remove combined mode quirk 2007-04-28 14:15: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: add support for READ/WRITE LONG 2007-04-28 14:16:01 -04:00
libata-eh.c libata: hardreset on SERR_INTERNAL 2007-04-28 14:15:59 -04:00
libata-scsi.c libata: add support for READ/WRITE LONG 2007-04-28 14:16:01 -04:00
libata-sff.c libata/IDE: remove combined mode quirk 2007-04-28 14:15:59 -04:00
libata.h [libata] Disable ACPI by default; fix namespace problems 2007-03-28 01:57:37 -04:00
Makefile pata_cmd640: CMD640 PCI support 2007-04-28 14:15:55 -04:00
pata_ali.c pata_ali: remove all the crap again and switch to cable_detect method 2007-04-28 14:16:00 -04:00
pata_amd.c pata: cable methods 2007-04-28 14:16:01 -04:00
pata_artop.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_atiixp.c pata_atiixp: support ->cable_detect 2007-04-28 14:15:57 -04:00
pata_cmd64x.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_cmd640.c pata_cmd640: Multiple updates 2007-04-28 14:15:56 -04:00
pata_cs5520.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_cs5530.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_cs5535.c pata: cable methods 2007-04-28 14:16:01 -04:00
pata_cypress.c pata: cable methods 2007-04-28 14:16:01 -04:00
pata_efar.c pata_efar: support ->cable_detect 2007-04-28 14:15:57 -04:00
pata_hpt3x2n.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_hpt3x3.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_hpt37x.c libata: Change prototype of mode_filter to remove ata_port* 2007-04-28 14:15:58 -04:00
pata_hpt366.c pata: cable methods 2007-04-28 14:16:01 -04:00
pata_isapnp.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_it821x.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_it8213.c pata_it8213: Cable detect 2007-04-28 14:15:56 -04:00
pata_ixp4xx_cf.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_jmicron.c [libata] pata_jmicron: build fix 2007-03-03 10:36:19 -05:00
pata_legacy.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_marvell.c pata_marvell: Cable and reset fixes 2007-04-28 14:15:56 -04:00
pata_mpc52xx.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_mpiix.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_netcell.c pata_netcell: re-remove all the crud 2007-04-28 14:16:00 -04:00
pata_ns87410.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_oldpiix.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_opti.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_optidma.c pata_optidma: rework for cable detect and to remove post_set_mode() 2007-04-28 14:16:01 -04:00
pata_pcmcia.c pcmcia - spot slave decode flaws (for testing) 2007-04-28 14:16:00 -04:00
pata_pdc202xx_old.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_pdc2027x.c pata_pdc2027x: Updates 2007-04-28 14:16:01 -04:00
pata_platform.c pata_platform: Add cable_detect method 2007-04-28 14:15:57 -04:00
pata_qdi.c pata_qdI: restore cable detect 2007-04-28 14:16:00 -04:00
pata_radisys.c pata_radisys: support cable_detect 2007-04-28 14:15:57 -04:00
pata_rz1000.c pata_rz1000: support cable_detect 2007-04-28 14:15:57 -04:00
pata_sc1200.c pata_sc1200: restore cable type 2007-04-28 14:15:57 -04:00
pata_scc.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_serverworks.c libata: Change prototype of mode_filter to remove ata_port* 2007-04-28 14:15:58 -04:00
pata_sil680.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_sis.c pata_sis: Clean up using cable_detect methods 2007-04-28 14:15:56 -04:00
pata_sl82c105.c pata_sl82c105: restore cable detect method 2007-04-28 14:16:00 -04:00
pata_triflex.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_via.c pata_via: Use cable_detect method 2007-04-28 14:15:56 -04:00
pata_winbond.c pata_winbond 2007-04-28 14:16:01 -04: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: support ->cable_detect 2007-04-28 14:15:58 -04:00
sata_nv.c sata_nv: don't read shadow registers when in ADMA mode 2007-04-28 14:16:00 -04:00
sata_promise.c sata_promise: fix error decode regression 2007-04-28 14:16:01 -04: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 sata_sil: First step to removing ->post_set_mode 2007-04-28 14:15:58 -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] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04: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