linux/drivers/ata
Mikael Pettersson 4113bb6b67 sata_promise: issue ATAPI commands as normal packets
This patch (against libata #upstream + the ATAPI cleanup patch)
reimplements sata_promise's ATAPI support to format ATAPI DMA
commands as normal packets, and to issue them via the hardware's
normal packet machinery.

It turns out that the only reason for issuing ATAPI DMA
commands via the pdc_issue_atapi_pkt_cmd() procedure was to
perform two interrupt-fiddling steps for ATA_DFLAG_CDB_INTR
devices. But these steps aren't needed because sata_promise
sets ATA_FLAG_PIO_POLLING, which disables DMA for those devices.
The remaining steps can easily be done in ATA taskfile packets.

Concrete changes:
- pdc_atapi_dma_pkt() is extended to program all packet setup
  steps, and not just contain the CDB; the sequence of steps
  exactly mirrors what pdc_issue_atapi_pkt_cmd() did
- pdc_atapi_dma_pkt() needed more parameters: simplify it by
  just passing 'qc' and having it extract the data it needs
- pdc_issue_atai_pkt_cmd() and its two helper procedures
  pdc_wait_for_drq() and pdc_wait_on_busy() are removed

Tested on first- and second-generation chips, SATAPI and PATAPI,
with no observable regressions.

Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-02-09 17:39:34 -05:00
..
Kconfig sata_inic162x: finally, driver for initio 162x SATA controllers, take #2 2007-02-09 17:39:31 -05:00
Makefile sata_inic162x: finally, driver for initio 162x SATA controllers, take #2 2007-02-09 17:39:31 -05:00
ahci.c libata: handle pci_enable_device() failure while resuming 2007-02-09 17:39:30 -05:00
ata_generic.c libata: set_mode, Fix the FIXME 2007-01-24 19:55:16 -05:00
ata_piix.c ata_piix: add ICH7 on Acer 3682WLMi to laptop list 2007-02-09 17:39:29 -05:00
libata-core.c libata: kill qc->nsect and cursect 2007-02-09 17:39:31 -05:00
libata-eh.c libata: kill qc->nsect and cursect 2007-02-09 17:39:31 -05:00
libata-scsi.c libata: kill qc->nsect and cursect 2007-02-09 17:39:31 -05:00
libata-sff.c libata-sff: Don't try and activate channels which are not in use 2007-02-09 17:39:30 -05:00
libata.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-05 17:01:28 +00:00
pata_ali.c libata: use ata_id_c_string() 2007-02-09 17:39:30 -05:00
pata_amd.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_artop.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_atiixp.c pata_atiixp: propogate cable detection hack from drivers/ide to the new driver 2007-02-02 11:52:05 -05:00
pata_cmd64x.c libata cmd64x: whack into a shape that looks like the documentation 2007-01-24 19:52:31 -05:00
pata_cs5520.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pata_cs5530.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pata_cs5535.c [libata] pata_cs5535: fix build 2006-12-03 07:57:21 -05:00
pata_cypress.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_efar.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_hpt3x2n.c libata hpt3xn: Hopefully sort out the DPLL logic versus the vendor code 2007-01-24 19:52:31 -05:00
pata_hpt3x3.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pata_hpt37x.c libata: use ata_id_c_string() 2007-02-09 17:39:30 -05:00
pata_hpt366.c libata: use ata_id_c_string() 2007-02-09 17:39:30 -05:00
pata_isapnp.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_it821x.c libata: use ata_id_c_string() 2007-02-09 17:39:30 -05:00
pata_it8213.c [PATCH] pata_it8213: Add new driver for the IT8213 card 2007-02-09 17:39:28 -05:00
pata_ixp4xx_cf.c libata: set_mode, Fix the FIXME 2007-01-24 19:55:16 -05:00
pata_jmicron.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pata_legacy.c libata: set_mode, Fix the FIXME 2007-01-24 19:55:16 -05:00
pata_marvell.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pata_mpc52xx.c [PATCH] libata: Add support for the MPC52xx ATA controller 2007-02-09 17:39:29 -05:00
pata_mpiix.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_netcell.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_ns87410.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_oldpiix.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_opti.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_optidma.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_pcmcia.c [PATCH] pcmcia: conf.ConfigBase and conf.Present consolidation 2006-12-04 20:12:02 -05:00
pata_pdc202xx_old.c libata: kill qc->nsect and cursect 2007-02-09 17:39:31 -05:00
pata_pdc2027x.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_platform.c [PATCH] pata_platform: fallout from set_mode() change 2007-01-30 08:39:20 -08:00
pata_qdi.c [PATCH] ata: fix platform_device_register_simple() error check 2006-12-16 10:45:28 -05:00
pata_radisys.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_rz1000.c libata: set_mode, Fix the FIXME 2007-01-24 19:55:16 -05:00
pata_sc1200.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_serverworks.c libata: use ata_id_c_string() 2007-02-09 17:39:30 -05:00
pata_sil680.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pata_sis.c pata_sis: implement laptop list and add ASUS A6K/A6U 2007-02-09 17:39:29 -05:00
pata_sl82c105.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_triflex.c [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09:00
pata_via.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pata_winbond.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pdc_adma.c [PATCH] Fix numerous kcalloc() calls, convert to kzalloc() 2006-12-13 09:05:52 -08:00
sata_inic162x.c sata_inic162x: finally, driver for initio 162x SATA controllers, take #2 2007-02-09 17:39:31 -05:00
sata_mv.c sata_mv HighPoint 2310 support (88SX7042) 2007-01-19 19:24:36 -05:00
sata_nv.c sata_nv: add suspend/resume support v3 (Resubmit) 2007-02-09 17:39:30 -05:00
sata_promise.c sata_promise: issue ATAPI commands as normal packets 2007-02-09 17:39:34 -05:00
sata_promise.h
sata_qstor.c libata: kill qc->nsect and cursect 2007-02-09 17:39:31 -05:00
sata_sil.c libata: handle pci_enable_device() failure while resuming 2007-02-09 17:39:30 -05:00
sata_sil24.c libata: handle pci_enable_device() failure while resuming 2007-02-09 17:39:30 -05:00
sata_sis.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
sata_svw.c [PATCH] sata_svw: trivial iomem annotations 2007-02-09 09:14:07 -08:00
sata_sx4.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
sata_uli.c libata: implement ATA_FLAG_IGN_SIMPLEX and use it in sata_uli 2007-01-25 17:26:01 -05:00
sata_via.c sata_via: PATA support 2007-02-09 17:39:30 -05:00
sata_vsc.c [libata] sata_vsc: build fix after PCI MSI feature addition 2007-02-09 17:39:31 -05:00