genode/repos/os/src/drivers/ahci
Ehmry - 3d68a520cb Tag release 19.11
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEsIWqvdxEKaxX80hspyRgNBfs1rcFAl3fpmAACgkQpyRgNBfs
 1rcezQ//ZoYChufO6m2CByuPUbITql12b6oyOjmvcw16NW+Nsf2EodwMeCk/9yyM
 kWIxqOtXp1yFPGNf8ebEkTu5YXYMkHrUds4V6nQ4nQnyk7VnQmR3XTnqP8Sr27Hp
 fHi7Dddjxufexeyb6bwis04mK4PeFWXk/D6H4nh6ZeaR30g/GQ+Wt4N64a+HcQ1g
 kLMKuLlooOoq0L9q8IVLAtQoKNR1LP6x0FKGH8B6elwns8rXna2fRSlCB+W7qLwl
 K/pQadaIkwQNj8TEXuQxdGOR1GIrTbUz9ExS6U1yPXjqK06CunDZqsn+Cv5G7p+5
 ybMaViXwDGilZjhNLTjAbPhqhoOVu+yDB5gwzKiYt6/gTKP8N+VUpXKhGpzu/0ya
 wEt2b/43vmPm1NsBQQFU6vmjyW0W0iOl+a1tetv/qFo4mzQNesbVlu6t91b0EAjp
 C0JzZj9UHj/QkKgLIPkWMVWyz+VtODUeFhMLV6+86wzFmqSNhbaL0K/1LvX3AHZR
 5M/sjMRdtRL9U7Xv/LTn/Sgisk5wT2wfI9dpkAZALZjm22751mSTv9XhdLC/+XpA
 0F7cfSg36DphYsyPmSQ9+Q79rpU+bvuuTbqAsLdYcflMaW4bsIOd4j5Lk3adIPbN
 EE0uu+CD1GbqpKy+vLr+2EIlYpVNRTQKLklmkmhb+ZBuvUo00cU=
 =4dhl
 -----END PGP SIGNATURE-----

Merge tag '19.11'

Tag release 19.11
2019-11-28 13:21:13 +01:00
..
spec Tup: add x86 drivers from os repo 2019-10-28 11:32:29 +01:00
README default ahci_drv and part_blk Block sessions to read-only 2017-08-28 16:49:51 +02:00
Tupfile Tup: add x86 drivers from os repo 2019-10-28 11:32:29 +01:00
Tuprules.tup Tup: rename INCLUDES to CPPFLAGS 2019-10-28 11:32:29 +01:00
ahci.cc timeout: use uint64_t for all plain time values 2019-05-06 16:15:26 +02:00
ahci.h block session: remove Block::Session::Operations 2019-05-03 13:53:12 +02:00
ata_driver.h ahci_drv: set 'Cmd::St' to 1 before writing 'Sact' register 2019-11-25 14:15:57 +01:00
atapi_driver.h block_session: server-defined payload alignment 2019-05-03 13:53:12 +02:00
main.cc Add missing override annotations 2019-02-19 11:12:11 +01:00
target.inc os: name ahci_drv unambigously (ref #2190) 2019-05-16 13:11:01 +02:00

README

This directory contains the implementation of Genode's AHCI driver

Behavior
--------

The driver supports x86 32/64 bit platforms and the Exynos5 SOC. If
more than one AHCI controller is present, the first one will be used.
Each active device on each AHCI port will be represented by a Genode
block session. The server must be configured via a policy, that states
which client can access a certain device:


!<start name="ahci">
!  <binary name="ahci_drv" />
!  <resource name="RAM" quantum="10M" />
!  <provides><service name="Block" /></provides> }
!  <route>
!    <any-service> <parent /> <any-child /> </any-service>
!  </route>
!  <config atapi="no">
!    <!-- use model and serial number -->
!    <policy label_prefix="test-ahci" model="QEMU HARDDISK" serial="QM00005" writeable="yes" />
!    <!-- use controller port number -->
!    <policy label_prefix="bench" device="1" writeable="yes" />
!    <!-- read-only access -->
!    <policy label_prefix="boot_fs" device="2"/>
!  </config>
!</start>

In the example above, a session request labeled with "test-ahci" gains access to
a device with certain model and serial numbers, "bench" gains access to
device at port 1, and finally the session "boot_fs" gains read-only access to
port 2. ATAPI support is by default disabled and can be enabled by
setting the config attribute "atapi" to "yes".

ahci_drv supports reporting of active ports, which can be enabled via
configuration sub-node like follows.

!<report ports="yes"/>

The report structure is depicted by the following example.

! <ports>
!   <port num="0" type="ATA" block_count="32768" block_size="512"
!     model="QEMU HARDDISK" serial="QM00005"/>
!   <port num="1" type="ATAPI"/>
!   <port num="2" type="ATA" block_count="32768" block_size="512"
!     model="QEMU HARDDISK" serial="QM00009"/>
! </ports>