linux/drivers/ide/pci
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
..
Makefile [MIPS] Remove IT8172-based platforms, ITE 8172G and Globespan IVR support. 2006-10-03 17:59:17 +01:00
aec62xx.c [PATCH] Fix 2.6.18-rc6 IDE breakage, add missing ident needed for current VIA boards 2006-09-11 07:53:44 -07:00
alim15x3.c [PATCH] ide: more conversion to pci_get APIs 2006-12-08 08:29:03 -08:00
amd74xx.c [PATCH] IDE: Add the support of nvidia PATA controllers of MCP67 to amd74xx.c 2006-11-03 12:27:59 -08:00
atiixp.c [PATCH] atiixp: ATI SB600 IDE support for various modes 2006-09-29 09:18:12 -07:00
cmd64x.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cmd640.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cs5520.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cs5530.c [PATCH] IDE: more pci_find cleanup 2006-10-03 08:04:09 -07:00
cs5535.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cy82c693.c [PATCH] IDE: more pci_find cleanup 2006-10-03 08:04:09 -07:00
generic.c [PATCH] drivers/ide/pci/generic.c: add missing newline to the all-generic-ide message 2006-10-30 12:08:41 -08:00
hpt34x.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
hpt366.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
it821x.c [PATCH] it821x: fix ide dma setup bug 2006-07-28 09:02:17 +02:00
jmicron.c Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
ns87415.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
opti621.c [PATCH] ide: hotplug mark __devinit opti621.c 2005-07-03 16:33:16 +02:00
pdc202xx_new.c [PATCH] pdc202xx_new: fix PLL/timing issues 2006-12-10 09:55:41 -08:00
pdc202xx_old.c [PATCH] Enable cdrom dma access with pdc20265_old 2006-10-03 08:04:07 -07:00
piix.c [PATCH] ide: backport piix fixes from libata into the legacy driver 2006-10-03 08:04:08 -07:00
rz1000.c Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
sc1200.c [PATCH] CONFIG_PM=n slim: drivers/ide/pci/sc1200.c 2006-10-03 08:04:08 -07:00
serverworks.c [PATCH] serverworks: Switch to pci refcounted interfaces 2006-10-01 00:39:20 -07:00
sgiioc4.c [PATCH] sgiioc4: Disable module unload 2006-11-25 13:28:34 -08:00
siimage.c [PATCH] ide: remove dma_base2 field from ide_hwif_t 2006-10-03 08:04:08 -07:00
sis5513.c [PATCH] ide: more conversion to pci_get APIs 2006-12-08 08:29:03 -08:00
sl82c105.c [PATCH] sl82c105: straighten up IDE control/status register caching 2006-12-08 08:29:03 -08:00
slc90e66.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
triflex.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
trm290.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
via82cxxx.c [PATCH] via82cxxx: handle error condition properly 2006-12-07 08:39:32 -08:00