linux/drivers
Bartlomiej Zolnierkiewicz b740d8846e serverworks: always tune CSB6
Switch the driver to always program DMA/PIO timings and set device transfer
mode instead of trusting BIOS on CSB6 controllers (libata pata_serverworks.c
driver is also doing things this way and there were no problems reported so
far).  While doing conversion I noticed that the old code had many issues:

* the code was assuming that hwif->dma_status is always valid
  (which obviously isn't true if hwif->dma_base == NULL)

* value of "(ultra_timing >> (4*unit)) & ~(0xF0)" expression wasn't checked
  to fit into udma_modes[5]

* code validating DMA timings didn't validate corresponding PIO timings

* extra CSB5 PIO register wasn't validated et all

* hwif->ide_dma_off_quietly() is always called before ide_set_dma() (which in
  turn calls hwif->speedproc() method - svwks_tune_chipset() in this case)
  so the code depending on DMA capable bit of DMA status to be set was never
  executed (=> the code was never validating DMA timings despite actually
  enabling DMA if the PIO timings were OK!)

* on resume driver dependend entirely on BIOS to restore timings and set
  transfer mode on the device

While at it:

There is no need to read PIO/MWDMA timings now so don't do it.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Acked-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
2007-07-09 23:17:53 +02:00
..
acorn
acpi ACPI: fix acpi_osi=!Linux 2007-07-02 21:06:48 -07:00
amba
ata pata_pcmcia: Switch to ata_sff_port_start 2007-07-03 11:31:06 -04:00
atm potential compiler error, irqfunc caller sites update 2007-07-06 10:23:43 -07:00
auxdisplay
base
block
bluetooth
cdrom
char Add support SiS based XGI chips to SiS DRM. 2007-06-27 09:54:49 -07:00
clocksource
connector
cpufreq
crypto
dio
dma IOATDMA: fix section mismatches 2007-06-28 11:34:53 -07:00
edac
eisa
fc4
firewire firewire: add Kconfig help on building both stacks 2007-06-29 17:32:07 +02:00
firmware
hid
hwmon hwmon/coretemp: fix a broken error path 2007-06-24 08:59:10 -07:00
i2c
ide serverworks: always tune CSB6 2007-07-09 23:17:53 +02:00
ieee1394 ieee1394: fix to ether1394_tx in ether1394.c 2007-06-16 12:43:20 +02:00
infiniband IPoIB/cm: Partial error clean up unmaps wrong address 2007-07-02 20:48:31 -07:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2007-07-05 15:55:37 -07:00
isdn
kvm KVM: Prevent guest fpu state from leaking into the host 2007-06-15 12:30:59 +03:00
leds
macintosh x86_64: Fix only make Macintosh drivers default on Macs 2007-06-22 18:41:18 -07:00
mca
md md: fix bug in error handling during raid1 repair 2007-06-16 13:16:15 -07:00
media V4L/DVB (5822): Fix the return value in ttpci_budget_init() 2007-07-03 15:11:21 -03:00
message
mfd SM501: Check SM501 ID register on initialisation 2007-06-24 08:59:11 -07:00
misc Remove the blink driver 2007-07-04 15:24:39 -07:00
mmc mmc: get back read-only switch function 2007-06-13 19:11:20 +02:00
mtd
net potential compiler error, irqfunc caller sites update 2007-07-06 10:23:43 -07:00
nubus
oprofile
parisc [PARISC] stop lcd driver from stripping initial whitespace 2007-06-21 17:46:19 -04:00
parport
pci
pcmcia
pnp PNP SMCf010 quirk: work around Toshiba Portege 4000 ACPI issues 2007-07-06 10:23:43 -07:00
ps3
rapidio
rtc
s390 s390: netiucv inlining cleanup 2007-06-20 19:12:42 -04:00
sbus
scsi scsi disk help file is not complete 2007-07-02 10:12:34 -04:00
serial serial: clear proper MPSC interrupt cause bits 2007-06-28 11:38:29 -07:00
sh
sn
spi
tc
telephony
usb potential compiler error, irqfunc caller sites update 2007-07-06 10:23:43 -07:00
video fix section mismatch in chipsfb 2007-06-28 11:34:54 -07:00
w1 w1_therm_read_bin: don't call flush_signals() 2007-06-28 11:38:19 -07:00
zorro
Kconfig
Makefile