WSL2-Linux-Kernel/drivers
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
..
acorn [ARM] Acorn: move the i2c bus driver into drivers/i2c 2007-03-04 20:40:50 +00:00
acpi acpi-thermal: fix mod_timer() interval 2007-04-24 08:23:08 -07:00
amba uevent: use add_uevent_var() instead of open coding it 2007-04-27 10:57:29 -07:00
ata ahci: implement ata_save/restore_initial_config() 2007-04-28 14:16:01 -04:00
atm [ATM]: Use mutex instead of binary semaphore in FORE Systems 200E-series driver 2007-04-26 01:41:49 -07:00
auxdisplay [PATCH] cfag12864b: fix crash when built-in and no parport present 2007-02-20 17:10:14 -08:00
base drivers/base/attribute_container.c: use mutex instead of binary semaphore 2007-04-27 10:57:34 -07:00
block ub: Bind to first endpoint, not to last 2007-04-27 13:28:34 -07:00
bluetooth [SK_BUFF]: Introduce skb_copy_from_linear_data{_offset} 2007-04-25 22:28:23 -07:00
cdrom [PATCH] Fix soft lockup with iSeries viocd driver 2007-03-05 07:57:51 -08:00
char [NET]: random functions can use nsec resolution instead of usec 2007-04-25 22:28:25 -07:00
clocksource [PATCH] correct slow acpi_pm rating 2007-03-27 09:05:15 -07:00
connector [NETLINK]: Switch cb_lock spinlock to mutex and allow to override it 2007-04-25 22:29:03 -07:00
cpufreq [PATCH] Fix maxcpus=1 trigerring BUG() in cpufreq 2007-03-27 08:55:56 -07:00
crypto [PATCH] geode-aes: use unsigned long for spin_lock_irqsave 2007-03-06 09:30:25 -08:00
dio
dma [PATCH] rm pointless dmaengine exports 2007-03-16 19:25:03 -07:00
edac
eisa [PATCH] drivers/eisa/pci_eisa.c:pci_eisa_init() should be init 2007-03-27 09:05:15 -07:00
fc4
firmware
hid HID: Do not discard truncated input reports 2007-04-05 16:06:30 +02:00
hwmon hwmon/w83627ehf: Don't redefine REGION_OFFSET 2007-04-24 08:23:08 -07:00
i2c Minor bug fixes to i2c-pasemi 2007-04-17 16:36:28 -07:00
ide IDE: remove rwsem use from ide-proc core 2007-04-27 10:57:30 -07:00
ieee1394 IEEE1394: remove rwsem use from ieee1394 core 2007-04-27 10:57:30 -07:00
infiniband Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband 2007-04-27 09:39:27 -07:00
input Input: gameport - do not touch bus's rwsem 2007-04-27 10:57:30 -07:00
isdn [SK_BUFF]: Introduce skb_copy_to_linear_data{_offset} 2007-04-25 22:28:29 -07:00
kvm KVM: Fix off-by-one when writing to a nonpae guest pde 2007-04-19 18:39:26 +03:00
leds
macintosh drivers/macintosh/smu.c: fix locking snafu 2007-04-17 16:36:27 -07:00
mca
md [PATCH] md: fix calculation for size of filemap_attr array in md/bitmap 2007-04-12 15:31:42 -07:00
media V4L/DVB (5563): Radio-maestro.c Replace radio_ioctl to use video_ioctl2 2007-04-27 15:46:01 -03:00
message [SK_BUFF]: Introduce skb_copy_from_linear_data{_offset} 2007-04-25 22:28:23 -07:00
mfd [PATCH] drivers/mfd/sm501.c: fix an off-by-one 2007-04-02 10:06:08 -07:00
misc asus-laptop: make code static 2007-03-09 21:06:40 -05:00
mmc uevent: use add_uevent_var() instead of open coding it 2007-04-27 10:57:29 -07:00
mtd [MTD] [MAPS] drivers/mtd/maps/ck804xrom.c: convert pci_module_init() 2007-04-27 23:34:21 +01:00
net sis900: Allocate rx replacement buffer before rx operation 2007-04-27 20:16:41 -04:00
nubus
oprofile [PATCH] oprofile: fix potential deadlock on oprofilefs_lock 2007-03-28 13:58:02 -07:00
parisc [NET]: Inline net_device_stats 2007-04-25 22:28:26 -07:00
parport [PARPORT] SUNBPP: Fix OOPS when debugging is enabled. 2007-04-23 23:33:17 -07:00
pci libata/IDE: remove combined mode quirk 2007-04-28 14:15:59 -04:00
pcmcia [PATCH] omap_cf: oops-on-suspend fix 2007-04-08 19:47:55 -07:00
pnp PNP: stop using the subsystem rwsem 2007-04-27 10:57:30 -07:00
ps3 [PATCH] C99 initializers, proper use of const in drivers/ps3 2007-03-14 15:27:50 -07:00
rapidio
rtc [PATCH] rtc-cmos lockdep fix, irq updates 2007-04-02 10:06:09 -07:00
s390 s390: cio: Delay uevents for subchannels 2007-04-27 10:57:32 -07:00
sbus [OPENPROM]: Use pci_device_to_OF_node(). 2007-04-26 01:54:59 -07:00
scsi git-libata-all-ipr-fix 2007-04-28 14:16:00 -04:00
serial [SPARC/64] constify of_get_property return: drivers 2007-04-26 01:54:27 -07:00
sh
sn
spi spi: fix use of set_cs in spi_s3c24xx driver 2007-04-17 16:36:27 -07:00
tc [PATCH] Fix build error on zs serial driver 2007-04-04 21:12:47 -07:00
telephony
usb usb-net/pegasus: simplify carrier detection 2007-04-27 20:16:41 -04:00
video [IGAFB]: Use pci_device_to_OF_node() on sparc. 2007-04-26 01:55:03 -07:00
w1
zorro
Kconfig
Makefile IB: Remove reference to obsolete CONFIG_IPATH_CORE 2007-04-18 20:20:53 -07:00