genode/os/src/drivers/ahci
Martin Stein e164671cd1 ahci_drv: basic support for exynos 5
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
2013-05-22 18:36:55 +02:00
..
exynos5 ahci_drv: basic support for exynos 5 2013-05-22 18:36:55 +02:00
include ahci_drv: separate PCI specifics from the rest 2013-05-22 18:32:05 +02:00
x86_32 ahci_drv: separate PCI specifics from the rest 2013-05-22 18:32:05 +02:00
empty.cc ahci_drv: separate PCI specifics from the rest 2013-05-22 18:32:05 +02:00
main.cc ahci_drv: separate PCI specifics from the rest 2013-05-22 18:32:05 +02:00
README Imported Genode release 11.11 2011-12-22 16:19:25 +01:00
target.mk ahci_drv: separate PCI specifics from the rest 2013-05-22 18:32:05 +02:00

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.