android_kernel_oneplus_msm8998/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
atm
base
block
bluetooth
cdrom
char [PATCH] sysctl: remove unused "context" param 2006-12-10 09:55:41 -08:00
clocksource
connector
cpufreq
crypto [PATCH] geode crypto is PCI device 2006-12-10 09:55:40 -08:00
dio
dma
edac
eisa
fc4
firmware
hid [PATCH] Generic HID layer - build 2006-12-08 10:43:20 -08:00
hwmon
i2c
ide [PATCH] pdc202xx_new: fix PLL/timing issues 2006-12-10 09:55:41 -08:00
ieee1394
infiniband
input [PATCH] ucb1400_ts depends SND_AC97_BUS 2006-12-10 09:55:39 -08:00
isdn
leds
macintosh
mca
md [PATCH] make drivers/md/dm-snap.c:ksnapd static 2006-12-08 08:29:09 -08:00
media
message
mfd
misc
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
net [PATCH] Amiga PCMCIA NE2000 Ethernet dev->irq init 2006-12-09 09:41:18 -08:00
nubus
oprofile
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
pnp
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
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
telephony
usb [PATCH] Generic HID layer - build 2006-12-08 10:43:20 -08:00
video
w1
zorro
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