android_kernel_xiaomi_sm8350/drivers/ata
Mikael Pettersson 95006188cb sata_promise: ATAPI support
This patch adds ATAPI support to the sata_promise driver.
This has been tested on both first- and second-generation
chips (20378 and 20575), and with both SATAPI and PATAPI
devices. CD-writing works.

SATAPI DMA works on second-generation chips, but on
first-generation chips SATAPI is limited to PIO due
to what appears to be HW limitations.
PATAPI DMA works on both first- and second-generation
chips, but requires the separate PATA support patch
before it can be used on TX2plus chips.

The functional changes to the driver are:
- remove ATA_FLAG_NO_ATAPI from PDC_COMMON_FLAGS
- add ->check_atapi_dma() operation to enable DMA for bulk data
  transfers but force PIO for other ATAPI commands; this filter
  is from Promise's driver and largely matches pata_pdc207x.c
- use a more restrictive ->check_atapi_dma() on first-generation
  chips to force SATAPI to always use PIO
- add handling of ATAPI protocols to pdc_qc_prep(), pdc_host_intr(),
  and pdc_qc_issue_prot(): ATAPI_DMA is handled by the driver
  while non-DMA protocols are handed over to libata generic code
- add pdc_issue_atapi_pkt_cmd() to handle the initial steps in
  issuing ATAPI DMA commands before sending the actual CDB;
  this procedure was ported from Promise's driver

Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-02-09 17:39:29 -05:00
..
ahci.c [PATCH] ahci: trivial endianness annotations 2007-02-09 09:14:07 -08:00
ata_generic.c libata: set_mode, Fix the FIXME 2007-01-24 19:55:16 -05:00
ata_piix.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
Kconfig [PATCH] libata: Add support for the MPC52xx ATA controller 2007-02-09 17:39:29 -05:00
libata-core.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
libata-eh.c libata: fix ata_eh_suspend() return value 2007-01-27 03:21:26 -05:00
libata-scsi.c [PATCH] user of the jiffies rounding patch: ATA subsystem 2007-02-09 17:39:29 -05:00
libata-sff.c Fix Maple PATA IRQ assignment. 2007-01-26 17:27:40 -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
Makefile [PATCH] libata: Add support for the MPC52xx ATA controller 2007-02-09 17:39:29 -05:00
pata_ali.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -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] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pata_hpt366.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -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: set_mode, Fix the FIXME 2007-01-24 19:55:16 -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 [PATCH] libata: kill unnecessary sht->max_sectors initializations 2006-12-03 17:56:22 +09: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] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pata_sil680.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
pata_sis.c [libata] trim trailing whitespace 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_mv.c sata_mv HighPoint 2310 support (88SX7042) 2007-01-19 19:24:36 -05:00
sata_nv.c [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
sata_promise.c sata_promise: ATAPI support 2007-02-09 17:39:29 -05:00
sata_promise.h
sata_qstor.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
sata_sil24.c [PATCH] sata_sil24: add PMP related constants 2006-12-01 22:40:29 -05:00
sata_sil.c [PATCH] libata: move BMDMA host status recording from EH to interrupt handler 2006-12-03 17:56:24 +09: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 [libata] trim trailing whitespace 2007-02-09 17:39:29 -05:00
sata_vsc.c [libata] sata_svw, sata_vsc: kill iomem warnings 2006-12-20 14:37:04 -05:00