kernel-ark/drivers
Sergei Shtylyov 47694bb86a [PATCH] pdc202xx_new: fix PLL/timing issues
Fix the CRC errors in the higher UltraDMA modes with the Promise PDC20268
and newer chips that always occur on non-x86 machines and when there are
more than 2 adapters on x86 machines.  Fix the overclocking issue for
PDC20269 and newer chips that occurs when an UltraDMA/133 capable drive is
connected.  Here's the summary of changes:

- add code to detect the PLL input clock detection and setup it output clock,
  remove the PowerMac hacks;

- replace the macros accessing the indexed regiters with functions, switch to
  using them where appropriate, gather the PIO/MWDMA/UDMA timings into tables;

- rewrite the speedproc() handler to set the drive's transfer mode first, and
  then override the timing registers set by hardware on UltraDMA/133 chips;

- use better criterion for determining higher UltraDMA modes, and add comment
  concerning the doubtful value of the code enabling IORDY/prefetch;

- replace the stupid 'pdcnew_new_' prefixes with mere 'pdcnew_';

- get rid of unneded spaces, parens and type casts, clean up some printk's,
  add some new lines here and there...

This work is loosely based on these former patches by Albert Lee:

[1] http://marc.theaimsgroup.com/?l=linux-ide&m=110992442032300
[2] http://marc.theaimsgroup.com/?l=linux-ide&m=110992457729382
[3] http://marc.theaimsgroup.com/?l=linux-ide&m=110992474205555
[4] http://marc.theaimsgroup.com/?l=linux-ide&m=111019224802939

Some PLL clock detection code was backported from his pata_pdc2027x driver...

This code has been successfully tested by me on PDC2026[89] chips.

I tried to keep this rework as several patches but it made no sense: [2] was
largely a modification of the non-working timing override code, [3] by itself
extended the overclocking issue to the case of non-UltraDMA/133 drives, and
finally, the cleanup patch based on [1] ended up rejected...

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Albert Lee <albertcc@tw.ibm.com>
Acked-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-10 09:55:41 -08:00
..
acorn
acpi
amba
ata [PATCH] libata: Incorrect timing computation for PIO5/6 2006-12-07 07:37:07 -05:00
atm [PATCH] atm/ambassador: use bitrev8 2006-12-08 08:28:40 -08:00
base Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-12-07 08:59:11 -08:00
block [PATCH] struct path: convert nbd 2006-12-08 08:28:47 -08:00
bluetooth [PATCH] lockdep: annotate bcsp driver 2006-12-07 08:39:34 -08:00
cdrom [PATCH] drivers/cdrom/*: trivial vsnprintf() conversion 2006-12-07 08:39:35 -08:00
char [PATCH] sysctl: remove unused "context" param 2006-12-10 09:55:41 -08:00
clocksource [PATCH] time: re-add verify_pmtmr_rate 2006-12-08 08:28:37 -08:00
connector
cpufreq [PATCH] hotplug CPU: clean up hotcpu_notifier() use 2006-12-07 08:39:39 -08:00
crypto [PATCH] geode crypto is PCI device 2006-12-10 09:55:40 -08:00
dio
dma [PATCH] slab: remove SLAB_KERNEL 2006-12-07 08:39:24 -08:00
edac [PATCH] Add include/linux/freezer.h and move definitions from sched.h 2006-12-07 08:39:27 -08:00
eisa
fc4
firmware
hid [PATCH] Generic HID layer - build 2006-12-08 10:43:20 -08:00
hwmon
i2c [PATCH] struct path: convert i2c-drivers 2006-12-08 08:28:45 -08:00
ide [PATCH] pdc202xx_new: fix PLL/timing issues 2006-12-10 09:55:41 -08:00
ieee1394 [PATCH] struct path: convert ieee1394 2006-12-08 08:28:46 -08:00
infiniband [PATCH] LOG2: Implement a general integer log2 facility in the kernel 2006-12-08 08:28:51 -08:00
input [PATCH] ucb1400_ts depends SND_AC97_BUS 2006-12-10 09:55:39 -08:00
isdn [PATCH] ISDN: fix warnings 2006-12-08 08:29:01 -08:00
leds [PATCH] PCEngines WRAP LED Support 2006-12-07 08:39:36 -08:00
macintosh Merge rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-08 01:07:56 -05:00
mca
md [PATCH] make drivers/md/dm-snap.c:ksnapd static 2006-12-08 08:29:09 -08:00
media [PATCH] struct path: convert v4l 2006-12-08 08:28:50 -08:00
message [PATCH] kernel-doc: fix fusion and i2o docs 2006-12-07 08:39:40 -08:00
mfd [PATCH] Add include/linux/freezer.h and move definitions from sched.h 2006-12-07 08:39:27 -08:00
misc [PATCH] tifm: fix NULL ptr and style 2006-12-07 08:39:33 -08:00
mmc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc 2006-12-08 08:47:07 -08:00
mtd [PATCH] slab: remove SLAB_KERNEL 2006-12-07 08:39:24 -08:00
net [PATCH] Amiga PCMCIA NE2000 Ethernet dev->irq init 2006-12-09 09:41:18 -08:00
nubus
oprofile [PATCH] struct path: convert oprofile 2006-12-08 08:28:48 -08:00
parisc
parport [PATCH] Kconfig refactoring for better menu nesting 2006-12-10 09:55:39 -08:00
pci [PATCH] Kconfig refactoring for better menu nesting 2006-12-10 09:55:39 -08:00
pcmcia [PATCH] struct path: convert pcmcia 2006-12-08 08:28:48 -08:00
pnp [PATCH] struct path: convert isapnp 2006-12-08 08:28:46 -08:00
ps3
rapidio
rtc [PATCH] AT91RM9200 RTC 2006-12-10 09:55:40 -08:00
s390 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2006-12-08 11:21:55 -08:00
sbus [PATCH] struct path: convert sbus 2006-12-08 08:28:49 -08:00
scsi [PATCH] Sun3 SCSI: Make sun3 scsi drivers compile/work again 2006-12-09 09:41:18 -08:00
serial [PATCH] Kconfig refactoring for better menu nesting 2006-12-10 09:55:39 -08:00
sh
sn
spi [PATCH] spi: stabilize PIO mode transfers on PXA2xx systems 2006-12-10 09:55:40 -08:00
tc [PATCH] tty: switch to ktermios 2006-12-08 08:28:57 -08:00
telephony [PATCH] struct path: convert ixj 2006-12-08 08:28:46 -08:00
usb [PATCH] Generic HID layer - build 2006-12-08 10:43:20 -08:00
video [PATCH] video: neofb stray bracket fix 2006-12-08 08:29:08 -08:00
w1 [PATCH] better CONFIG_W1_SLAVE_DS2433_CRC handling 2006-12-07 08:39:43 -08:00
zorro [PATCH] struct path: convert zorro 2006-12-08 08:28:50 -08:00
Kconfig [PATCH] Generic HID layer - build 2006-12-08 10:43:20 -08:00
Makefile [PATCH] Generic HID layer - build 2006-12-08 10:43:20 -08:00