kernel_optimize_test/drivers/ide
Sergei Shtylyov 7b73ee05d0 hpt366: init code rewrite
Finally, rework the driver init.  code to correctly handle all the chip
variants HighPoint has created so far.  This should cure the rest of the
timing issues in the driver (especially, on 66 MHz PCI) caused by the
HighPoint's habit of switching the base DPLL clock with every new revision
of the chips...

  - switch to using the enumeration type to differ between the numerous chip
    variants, matching PCI device/revision ID with the chip type early, at the
    init_setup stage;

  - extend the hpt_info structure to hold the DPLL and PCI clock frequencies,
    stop duplicating it for each channel by storing the pointer in the pci_dev
    structure: first, at the init_setup stage, point it to a static "template"
    with only the chip type and its specific base DPLL frequency, the highest
    supported DMA mode, and the chip settings table pointer filled, then, at
    the init_chipset stage, allocate per-chip instance  and fill it with the
    rest of the necessary information;

  - get rid of the constant thresholds in the HPT37x PCI clock detection code,
    switch  to calculating  PCI clock frequency based on the chip's base DPLL
    frequency;

  - switch to using the DPLL clock and enable UltraATA/133 mode by default on
    anything newer than HPT370/A;

  - fold PCI clock detection and DPLL setup code into init_chipset_hpt366(),
    unify the HPT36x/37x setup code and the speedproc handlers by joining the
    register setting lists into the table indexed by the clock selected;

  - add enablebits for all the chips to avoid touching disabled channels
    (though the HighPoint BIOS seem to only disable the primary one on
    HPT371/N);

  - separate the UltraDMA and MWDMA masks there to avoid changing PIO timings
    when setting an UltraDMA mode in hpt37x_tune_chipset().

This version has been tested on HPT370/302/371N.

Thanks to Alan for the inspiration. Hopefully, his libata driver will also
benefit from the work done on this "obsolete" driver...

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2007-02-07 18:18:16 +01:00
..
arm
cris
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 hpt366: init code rewrite 2007-02-07 18:18:16 +01:00
ppc fix file specification in comments 2006-10-03 23:01:26 +02:00
ide-cd.c [PATCH] ide-cd: Handle strange interrupt on the Intel ESB2 2006-12-10 09:57:20 -08:00
ide-cd.h
ide-disk.c
ide-dma.c [PATCH] ide: remove dma_base2 field from ide_hwif_t 2006-10-03 08:04:08 -07:00
ide-floppy.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
ide-generic.c
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 ide: unregister idepnp driver on unload 2007-01-27 13:47:02 +01:00
ide-probe.c [PATCH] remove blk_queue_activity_fn 2006-12-12 10:22:23 +01:00
ide-proc.c [PATCH] IDE core: driver layer error checking 2006-10-03 08:04:08 -07:00
ide-tape.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
ide-taskfile.c [PATCH] ide: add sanity checking to ide taskfile ioctl 2006-10-16 08:27:54 -07:00
ide-timing.h
ide.c [PATCH] ide section fixes 2007-02-01 16:17:06 -08:00
Kconfig kconfig: Standardize "depends" -> "depends on" in Kconfig files 2006-12-12 20:04:19 +01:00
Makefile
setup-pci.c [PATCH] ide: complete switch to pci_get 2006-12-10 09:55:40 -08:00