linux/drivers
Tejun Heo 8e16f94122 [PATCH] ahci: do not powerdown during initialization
ahci_init_controller() calls ahci_deinit_port() to make sure the
controller is stopped before initializing the controller.  In turn,
ahci_deinit_port() invokes ahci_power_down() to power down the port.
If the controller supports slumber mode, the link is put into it.

Unfortunately, some devices don't implement link powersaving mode
properly and show erratic behavior after link is put into slumber
mode.  For example, HL-DT-ST DVD-RAM GSA-H30N completely locks up on
slumber transition and can only be recovered with the *REAL* hard
reset - power removal and reapply.

Note that this makes the first probing reset different from all
others.  If the above dvd-ram is hotplugged after ahci is initialized,
no problem occurs because ahci is already fully initialized with phy
powered up.  So, this might also be the reason for other weird AHCI
initial probing abnormalities.

This patch moves power up/down out of port init/deinit and call them
only when needed.

Power down is now called only when suspending.  As system suspend
usually involves powering down 12v for storage devices, this shouldn't
cause problem even if the attached device doesn't support slumber
mode.  However, in partial power management and suspend failure cases,
devices might lock up after suspend attempt.  I thought about removing
transition to slumber mode altogether but ahci spec mandates it before
HBA D3 state transition.  Blacklisting such devices might be the
solution.

Signed-off-by: Tejun Heo <htejun@gmail.com>
2006-12-03 17:56:29 +09:00
..
acorn IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
acpi ACPI: Change ACPI to use dev_archdata instead of firmware_data 2006-12-01 14:52:01 -08:00
amba
ata [PATCH] ahci: do not powerdown during initialization 2006-12-03 17:56:29 +09:00
atm Fix misc .c/.h comment typos 2006-11-30 05:24:39 +01:00
base Driver core: platform_driver_probe(), can save codespace 2006-12-01 14:52:02 -08:00
block aoe: Add forgotten NULL at end of attribute list in aoeblk.c 2006-11-16 14:30:26 -08:00
bluetooth [PATCH] lockdep: annotate DECLARE_WAIT_QUEUE_HEAD 2006-10-30 12:08:40 -08:00
cdrom [PATCH] block: support larger block pc requests 2006-12-01 10:40:55 +01:00
char Merge master.kernel.org:/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 2006-12-01 16:47:26 -08:00
clocksource [PATCH] clocksource: acpi_pm: add another greylist chipset 2006-10-21 13:35:05 -07:00
connector
cpufreq [PATCH] Fix CPU_FREQ_GOV_ONDEMAND=y compile error 2006-11-21 14:07:15 -08:00
crypto
dio
dma [PATCH] drivers/dma trivial annotations 2006-10-10 15:37:21 -07:00
edac [PATCH] edac_mc: fix error handling 2006-11-03 12:27:57 -08:00
eisa [PATCH] EISA: handle sysfs errors 2006-10-11 11:14:25 -07:00
fc4 [SCSI] fc4: Conversion to struct scsi_cmnd in fc4 2006-10-25 15:12:45 -07:00
firmware [PATCH] dell_rbu: fix error check 2006-11-16 11:43:38 -08:00
hwmon hwmon: Fix debug messages in w83781d 2006-10-18 13:03:09 -07:00
i2c Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2006-12-01 16:41:27 -08:00
ide Fix misc .c/.h comment typos 2006-11-30 05:24:39 +01:00
ieee1394 [ETH1394]: Fix unaligned accesses. 2006-10-30 15:24:38 -08:00
infiniband IB/ucm: Fix deadlock in cleanup 2006-11-29 15:33:10 -08:00
input Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 2006-12-01 16:41:58 -08:00
isdn Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 2006-12-01 16:41:58 -08:00
leds [PATCH] drivers/led: handle sysfs errors 2006-10-17 08:18:46 -07:00
macintosh [PATCH] powerpc: windfarm shall request it's sub modules 2006-11-15 19:57:12 -08:00
mca [PATCH] drivers/mca: handle sysfs errors 2006-10-11 11:14:25 -07:00
md [PATCH] md: do not freeze md threads for suspend 2006-11-08 18:29:24 -08:00
media Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 2006-12-01 16:41:58 -08:00
message Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2006-12-01 16:41:27 -08:00
mfd IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
misc [PATCH] Fix for LKDTM MEM_SWAPOUT crashpoint 2006-11-06 01:46:23 -08:00
mmc Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6 2006-12-01 16:41:07 -08:00
mtd Fix typos in doc and comments 2006-11-30 05:32:19 +01:00
net Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 2006-12-01 16:41:58 -08:00
nubus
oprofile
parisc Fix misc .c/.h comment typos 2006-11-30 05:24:39 +01:00
parport [PATCH] parport: fix compilation failure 2006-11-16 11:43:37 -08:00
pci Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2006-12-01 16:41:27 -08:00
pcmcia [PATCH] fix "pcmcia: fix 'rmmod pcmcia' with unbound devices" 2006-11-25 13:28:33 -08:00
pnp Fix DMA resource allocation in ACPIPnP 2006-10-18 11:36:11 -07:00
rapidio Fix several typos in drivers/ 2006-10-03 22:31:37 +02:00
rtc [PATCH] drivers/rtc/rtc-rs5c372.c: fix a NULL dereference 2006-11-25 13:28:33 -08:00
s390 Fix misc .c/.h comment typos 2006-11-30 05:24:39 +01:00
sbus [SPARC]: Fix bus_id[] string overflow. 2006-10-27 01:03:31 -07:00
scsi Fix misc .c/.h comment typos 2006-11-30 05:24:39 +01:00
serial [POWERPC] CPM_UART: Fix non-console initialisation 2006-11-10 21:35:36 +11:00
sh
sn [PATCH] ioc4: Enable build on non-SN2 2006-10-17 08:18:42 -07:00
spi Fix misc Kconfig typos 2006-11-30 05:22:59 +01:00
tc [MIPS] Fix DECserial build error by IRQ hander change 2006-10-08 02:38:28 +01:00
telephony [PATCH] drivers/telephony/ixj: fix an array overrun 2006-11-08 18:29:23 -08:00
usb Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 2006-12-01 16:41:58 -08:00
video Driver core: convert fb code to use struct device 2006-12-01 14:52:00 -08:00
w1 W1: ioremap balanced with iounmap 2006-11-16 14:30:26 -08:00
zorro
Kconfig [PATCH] ioc4: Enable build on non-SN2 2006-10-17 08:18:42 -07:00
Makefile