• Mikael Pettersson's avatar
    sata_promise: ATAPI support · 95006188
    Mikael Pettersson authored
    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: default avatarMikael Pettersson <mikpe@it.uu.se>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    95006188
sata_promise.c 27.9 KB