linux/drivers
Mikael Pettersson ff7cddf59e sata_promise: update reset code
sata_promise's reset code has deviated quite a bit from
the Promise reference driver's, and it has been observed
to fail to recover from errors in some cases.

This patch thus updates the reset code to more closely
match the reference driver:

- soft reset (pdc_reset_port):
  * wait for ATA engine to not be in packet command mode
    (2nd gen only)
  * write reset bit in PDC_CTLSTAT before the first read
    in the loop
  * for 2nd gen SATA follow up with FPDMA reset and clearing
    error status registers
- hard reset (pdc_sata_hardreset):
  * wait for ATA engine to not be in packet command mode
    (2nd gen only)
  * reset ATA engine via the PCI control register
  * Tejun's change to use non-waiting hardreset + follow-up SRST

I'm not changing the hotplug mask bits since they are taken care
of by sata_promise's ->freeze() and ->thaw() operations. And I'm
not writing the PMP port # because that's always zero (for now).

Tested here on various controllers. In particular, one disk
which used to timeout and fail to recover from certain hdparm
and smartmonctl commands now works nicely.

Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
2009-09-17 16:46:34 -04:00
..
accessibility
acpi Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-09-16 07:49:54 -07:00
amba
ata sata_promise: update reset code 2009-09-17 16:46:34 -04:00
atm
auxdisplay
base Driver Core: devtmpfs - kernel-maintained tmpfs-based /dev 2009-09-15 09:50:49 -07:00
block Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 2009-09-16 08:27:10 -07:00
bluetooth pcmcia: dtl1_cs: fix pcmcia_loop_config logic 2009-09-15 10:17:16 -07:00
cdrom
char Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 2009-09-16 08:27:10 -07:00
clocksource
connector
cpufreq Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-09-15 09:39:44 -07:00
cpuidle
crypto
dca
dio
dma
edac amd64_edac: check NB MCE bank enable on the current node properly 2009-09-16 13:05:46 +02:00
eisa
firewire driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
firmware driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
gpio
gpu
hid
hwmon hwmon: (lm85) Don't bind to Winbond/Nuvoton WPCD377I 2009-09-15 17:18:14 +02:00
i2c
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-next-2.6 2009-09-15 10:01:16 -07:00
idle
ieee1394
ieee802154
infiniband driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
input Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 2009-09-16 08:27:10 -07:00
isdn
leds
lguest
macintosh Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2009-09-15 09:51:09 -07:00
mca
md
media Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 2009-09-15 09:22:18 -07:00
memstick
message
mfd
misc hpilo: add poll f_op 2009-09-15 09:50:48 -07:00
mmc driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
mtd Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 2009-09-16 08:27:10 -07:00
net Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu 2009-09-17 09:52:43 -07:00
nubus
of
oprofile
parisc
parport
pci Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-09-16 07:49:54 -07:00
pcmcia Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pcmcia-2.6 2009-09-16 08:11:23 -07:00
platform
pnp
power
pps
ps3
rapidio
regulator
rtc Nicolas Pitre has a new email address 2009-09-15 09:37:12 -07:00
s390 driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
sbus
scsi driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
serial
sh
sn
spi
ssb
staging Staging: remove sxg driver 2009-09-15 12:02:35 -07:00
tc
telephony
thermal
uio uio: add generic driver for PCI 2.3 devices 2009-09-15 09:50:48 -07:00
usb debugfs: Modified default dir of debugfs for debugging UHCI. 2009-09-15 09:50:49 -07:00
uwb Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb 2009-09-17 09:44:09 -07:00
video Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-09-16 07:49:54 -07:00
virtio
vlynq
w1
watchdog
xen Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-09-15 09:39:44 -07:00
zorro
Kconfig
Makefile