1
linux/drivers/ide
Bartlomiej Zolnierkiewicz a77dcc437c ide: add CS5536 host driver (v3)
This is a port of libata's pata_cs5536.c (written by Martin K. Petersen)
to IDE subsystem.

Changes done while at it:

* Reprogram PIO/MWDMA timings if needed before and after DMA transfer
  (chipset uses shared PIO/MWDMA timings).

* Fix cable detection to report 80-wires cable if BIOS set it for any
  device on a port (IDE core will do drive-side cable detection later).

* Don't disable UDMA while programming PIO timings.

* Simplify PCI/MSR support.

Pros of having IDE host driver in addition to libata's one:

* IDE is much lighter than SCSI+libata, the host driver itself is also
  a bit smaller:

   text    data     bss     dec     hex filename
   1261     496       4    1761     6e1 drivers/ata/pata_cs5536.o
   1242     128       4    1374     55e drivers/ide/cs5536.o

* This allows use of IDE features which are unavailable under libata.

v2:
* Fixes per review from Sergei:
  - simplify dependency check in Kconfig
  - use IDE_DRV_MASK also for ->drive_data
  - disable UDMA when programming MWDMA
  - program new DTC timings only when necessary
  - fix printk() level in cs5536_init_one()

* Fix patch description according to comments from Alan and Sergei.

v3:
* Smarter masking of UDMA bits per Sergei's suggestion.

Cc: Martin K. Petersen <mkp@mkp.net>
Cc: Karl Auerbach <karl@iwl.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-02-02 20:12:23 +01:00
..
aec62xx.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
ali14xx.c
alim15x3.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
amd74xx.c amd74xx: use ide_get_pair_dev() helper 2009-01-06 17:20:54 +01:00
atiixp.c
au1xxx-ide.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
buddha.c
cmd64x.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
cmd640.c cmd640: use ide_get_pair_dev() helper 2009-01-06 17:20:55 +01:00
cs5520.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
cs5530.c drivers/ide/{cs5530.c,sc1200.c}: Move a dereference below a NULL test 2008-12-22 23:05:06 +01:00
cs5535.c
cs5536.c ide: add CS5536 host driver (v3) 2009-02-02 20:12:23 +01:00
cy82c693.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
delkin_cb.c
dtc2278.c
falconide.c ide: fix Falcon IDE breakage 2009-01-19 13:46:56 +01:00
gayle.c gayle: set IDE_HFLAG_SERIALIZE explictly 2008-12-29 20:27:33 +01:00
hpt366.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
ht6560b.c
icside.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
ide_arm.c [ARM] clps7500: remove support 2008-11-27 12:38:11 +00:00
ide_platform.c
ide-4drives.c
ide-acpi.c ide: struct device - replace bus_id with dev_name(), dev_set_name() 2009-02-02 20:12:21 +01:00
ide-atapi.c ide-cd: convert to ide-atapi facilities 2009-01-06 17:20:58 +01:00
ide-cd_ioctl.c
ide-cd_verbose.c
ide-cd.c ide-cd: fix DMA for non bio-backed requests 2009-02-02 20:12:21 +01:00
ide-cd.h ide: remove ide_driver_t typedef 2009-01-06 17:20:53 +01:00
ide-cs.c pcmcia: add another pata/ide ID 2008-11-09 21:35:36 +01:00
ide-disk_ioctl.c
ide-disk_proc.c
ide-disk.c ide: can't use SSD/non-rotational queue flag for all CFA devices 2009-01-14 19:19:03 +01:00
ide-disk.h
ide-dma-sff.c ide-dma-sff: factor out ide_dma_sff_write_status() 2009-01-06 17:21:02 +01:00
ide-dma.c ide: merge ide_hwgroup_t with ide_hwif_t (v2) 2009-01-06 17:20:50 +01:00
ide-floppy_ioctl.c ide-floppy: allocate only toplevel packet commands 2009-01-02 16:12:51 +01:00
ide-floppy_proc.c
ide-floppy.c ide: merge ide_hwgroup_t with ide_hwif_t (v2) 2009-01-06 17:20:50 +01:00
ide-floppy.h
ide-gd.c ide: remove ->error method from struct ide_driver 2009-01-06 17:20:54 +01:00
ide-gd.h ide: remove ide_driver_t typedef 2009-01-06 17:20:53 +01:00
ide-generic.c
ide-h8300.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
ide-io.c ide-cd: fix DMA for non bio-backed requests 2009-02-02 20:12:21 +01:00
ide-ioctls.c ide: remove the last ide-scsi remnants 2009-01-02 16:12:54 +01:00
ide-iops.c ide: fix accidental LOCKDEP breakage caused by local_irq_set() removal 2009-01-14 19:19:02 +01:00
ide-legacy.c ide: move legacy ISA/VLB ports handling to ide-legacy.c (v2) 2008-12-29 20:27:37 +01:00
ide-lib.c ide: merge ide_hwgroup_t with ide_hwif_t (v2) 2009-01-06 17:20:50 +01:00
ide-park.c ide: merge ide_hwgroup_t with ide_hwif_t (v2) 2009-01-06 17:20:50 +01:00
ide-pci-generic.c ide: Switch to a common address 2008-11-02 21:40:08 +01:00
ide-pio-blacklist.c
ide-pm.c ide: fix suspend regression 2009-01-14 19:19:04 +01:00
ide-pnp.c
ide-probe.c IDE: Unregister and disable devices if initialization fails. 2009-02-02 20:12:22 +01:00
ide-proc.c ide: add port and host iterators 2009-01-06 17:20:56 +01:00
ide-scan-pci.c
ide-sysfs.c ide: move sysfs support to ide-sysfs.c 2009-01-02 16:12:48 +01:00
ide-tape.c ide: remove ->error method from struct ide_driver 2009-01-06 17:20:54 +01:00
ide-taskfile.c ide: remove ide_driver_t typedef 2009-01-06 17:20:53 +01:00
ide-timings.c
ide.c ide: add port and host iterators 2009-01-06 17:20:56 +01:00
it821x.c it821x.c: use dev->revision instead of pci_read_config_byte 2009-01-14 19:19:03 +01:00
it8172.c Resurrect IT8172 IDE controller driver 2009-01-06 17:21:01 +01:00
it8213.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
jmicron.c ide: Switch to a common address 2008-11-02 21:40:08 +01:00
Kconfig ide: add CS5536 host driver (v3) 2009-02-02 20:12:23 +01:00
macide.c m68k: machw.h cleanup 2008-12-28 20:00:03 +01:00
Makefile ide: add CS5536 host driver (v3) 2009-02-02 20:12:23 +01:00
ns87415.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
opti621.c
palm_bk3710.c drivers/ide/palm_bk3710.c buildfix 2009-01-19 13:46:57 +01:00
pdc202xx_new.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
pdc202xx_old.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
piix.c piix: sync ich_laptop[] with ata_piix.c 2009-01-06 17:21:01 +01:00
pmac.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
q40ide.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
qd65xx.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
qd65xx.h ide: remove 'byte' typedef 2009-01-06 17:20:53 +01:00
rapide.c arm ide breakage 2008-10-26 09:35:05 -07:00
rz1000.c rz1000: apply chipset quirks early (v2) 2008-12-29 20:27:33 +01:00
sc1200.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
scc_pata.c scc_pata: make use of scc_dma_sff_read_status() 2009-01-06 17:21:02 +01:00
serverworks.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
setup-pci.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
sgiioc4.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
siimage.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
sis5513.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
sl82c105.c sl82c105: remove dead code 2009-01-14 19:19:03 +01:00
slc90e66.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
tc86c001.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
triflex.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
trm290.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
tx4938ide.c tx4938ide: Fix build error due to read_sff_dma_status moving 2009-01-14 19:19:04 +01:00
tx4939ide.c ide: move read_sff_dma_status() method to 'struct ide_dma_ops' 2009-01-06 17:21:02 +01:00
umc8672.c ide: merge ide_hwgroup_t with ide_hwif_t (v2) 2009-01-06 17:20:50 +01:00
via82cxxx.c ide: Force VIA IDE legacy interrupts for AmigaOne boards 2009-02-02 20:12:22 +01:00