Libata Feature Table

From ata Wiki
Jump to: navigation, search

Supported

  • ATA command set
  • ATAPI (PACKET command)
  • Bus technologies:
    • Parallel ATA (a.k.a. PATA, a.k.a. EIDE)
    • Serial ATA (a.k.a. SATA)
    • Pluggable driver API permits support of unusual bus technologies such as parallel port or ethernet transports.
  • Command protocols:
    • PIO read/write
    • PIO read/write multiple
    • non-data
    • DMA
    • ATAPI
    • ATAPI DMA
    • NCQ
  • Host controllers:
    • Hotplug (i.e. unplug the card)
    • Bus-mastering DMA
    • PCI Message Signalled Interrupts (MSI)
    • PCI IDE legacy and native modes
    • ADMA-compliant
    • AHCI-compliant
    • Taskfile-based, FIS-based or exotic
    • Unlimited number of ports (compile-time limit is 32, but this is easily changed)
    • Legacy ISA PATA devices
    • Simplex DMA
    • Suspend/resume (depends on driver). Refer to the driver/feature matrix for details.
    • PCI IDE SATA hardware drivers:
      • Broadcom/Serverworks
      • Intel
      • NVIDIA
      • Silicon Image
      • SiS
      • ULi
      • VIA
      • Vitesse/Intel
    • Advanced SATA hardware drivers:
      • AMCC
      • AHCI (Intel, VIA, JMicron, ATI, NVIDIA, ...)
      • Freescale
      • Initio
      • Marvell
      • Promise
      • Pacific Digital
      • Silicon Image
    • PCI IDE PATA hardware drivers:
      • AMD
      • Analog Devices
      • Artop
      • ATI
      • Cypress
      • HighPoint Technologies
      • Intel
      • ITE
      • National Semiconductor
      • Netcell
      • Opti
      • Radisys
      • Silicon Image / CMD
      • SiS
      • SMSC
      • Toshiba
      • Triflex
      • ULi
      • VIA
      • Winbond
    • Advanced PATA hardware drivers:
      • Promise
  • ATA/ATAPI device support:
    • Arbitrary ATA command execution (SMART, ATA pass-through)
    • C/H/S, LBA, and LBA48
    • 12-byte or 16-byte ATAPI CDB
    • Support for SATA PHY registers
    • SCSI simulator, attempts SCSI SAT compliance
    • Interrupt-driven operation, or polling via kernel thread
    • Hotplug (i.e. unplug the drive)
    • Device reset on error
    • Suspend/resume, ACPI
    • ATA commands supported:
      • Everything not listed in the 'Not Supported' list below.
    • SCSI commands supported:
      • ATA(12, 16)
      • FORMAT UNIT
      • INQUIRY
      • MODE SENSE(6, 10)
      • READ(6, 10, 16)
      • READ CAPACITY, READ CAPACITY(16)
      • REPORT LUNS
      • REZERO UNIT
      • SEEK(6, 10)
      • SEND DIAGNOSTIC
      • START STOP UNIT
      • SYNCHRONIZE CACHE
      • TEST UNIT READY
      • VERIFY, VERIFY(16)
      • WRITE(6, 10, 16)
  • RAID:
    • BIOS RAID supported in conjunction with dmraid.
    • Software RAID 0/1/5/6+ supported by md Linux driver.
    • Hardware RAID supported by various Linux drivers, but not covered by this feature list. Read the SATA RAID FAQ before assuming that your "SATA RAID" card is really hardware RAID. Most aren't.
  • Architecture for handling controller-specific, device-specific errata
  • Support for initializing PATA device, controller timings
  • Modular device driver API, which allows for full-featured drivers implemented with a minimum amount of code.

Not supported

  • Command protocols:
    • Soft reset — though the libata error handler (EH) supports soft reset internally.
    • Hard reset — though the libata error handler (EH) supports hard reset internally.
    • Legacy TCQ (no support planned)
  • ATA/ATAPI device support:
    • ATA commands:
      • Read/write TCQ
      • On some controllers, vendor-specific commands will fail.
  • SATA target mode:
    • Acard controller
    • Marvell controller
  • Marvell Port Multiplier:
    • Queued command-based switching
  • cable_detect:
    • per-device-specific cable/speed settings (Master/Slave each!), within a single port (e.g. supported by CS5536), not supported by .cable_detect() callback (per-ata_port global)
Personal tools