e164671cd1
This is a first version of the AHCI driver. It supports SATA HDDs with UDMA-133 only, up to 6 Gbps and native command queueing. The more blocks one transfers with one command, the higher is the chance that the driver produces a fatal handshake error. Nevertheless the driver is stable with one block per ATA command. Although NCQ is used the driver doesn't queue multiple commands simultanously. The driver was tested with a western digital HDD "WDC WD2500BEVS-08VAT1 13.01A13" (250 GB) with hw_arndale (run/ahci) and foc_arndale (run/ahci, run/l4linux: dd). SSDs were not tested. Fix #706 |
||
---|---|---|
.. | ||
exynos5 | ||
include | ||
x86_32 | ||
empty.cc | ||
main.cc | ||
README | ||
target.mk |
This directory contains an implementation of a simple AHCI driver. Behavior -------- The server implements Genode's new block-driver API ('os/include/block'), thus exposing the block-session interface as front-end. AHCI depends on Genode's PCI driver as well as the timer server. For a usage example see: 'os/run/ahci.run'. Limitations and known issues ---------------------------- Currently, the server scans the PCI bus at startup and retrieves the first available AHCI controller, scans the controller ports and uses the first non-ATAPI port where a device is present. On real hardware and on kernels taking advantage of I/O APICs (namely NOVA and Fiasco.OC) we still lack support for ACPI parsing and thus for interrupts, leading to a non-working driver.