linux-stable/drivers/ide
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
..
arm Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cris Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
h8300 fix file specification in comments 2006-10-03 23:01:26 +02:00
legacy [PATCH] pcmcia: conf.ConfigBase and conf.Present consolidation 2006-12-04 20:12:02 -05:00
mips [PATCH] swarm: Actually initialize the IDE driver 2006-10-06 08:53:41 -07:00
pci [PATCH] pdc202xx_new: fix PLL/timing issues 2006-12-10 09:55:41 -08:00
ppc fix file specification in comments 2006-10-03 23:01:26 +02:00
ide-cd.c [PATCH] ide-cd: only set rq->errors SCSI style for block pc requests 2006-11-13 09:47:00 -08:00
ide-cd.h [PATCH] ide-cd: remove write-only cmd field from struct cdrom_info 2005-12-15 02:20:49 +01:00
ide-disk.c [PATCH] Split struct request ->flags into two parts 2006-09-30 20:23:37 +02:00
ide-dma.c [PATCH] ide: remove dma_base2 field from ide_hwif_t 2006-10-03 08:04:08 -07:00
ide-floppy.c Fix misc .c/.h comment typos 2006-11-30 05:24:39 +01:00
ide-generic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ide-io.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
ide-iops.c [PATCH] ide: Fix crash on repeated reset 2006-10-03 08:04:08 -07:00
ide-lib.c [PATCH] ide_dma_speed() fixes 2006-10-03 08:04:07 -07:00
ide-pnp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ide-probe.c [PATCH] IDE core: driver layer error checking 2006-10-03 08:04:08 -07:00
ide-proc.c [PATCH] IDE core: driver layer error checking 2006-10-03 08:04:08 -07:00
ide-tape.c [PATCH] completions: lockdep annotate on stack completions 2006-10-01 00:39:24 -07:00
ide-taskfile.c [PATCH] ide: add sanity checking to ide taskfile ioctl 2006-10-16 08:27:54 -07:00
ide-timing.h [PATCH] ide: actually honor drive's minimum PIO/DMA cycle times 2006-06-26 09:58:27 -07:00
ide.c [PATCH] lockdep: fix ide/proc interaction 2006-12-07 08:39:32 -08:00
Kconfig [PATCH] winbond IDE depends on IDEDMA 2006-12-07 08:39:43 -08:00
Makefile [IDE] Add driver for Sibyte Swarm evaluation board 2005-11-17 16:23:50 +00:00
setup-pci.c [PATCH] ide: complete switch to pci_get 2006-12-10 09:55:40 -08:00