WiP! AHCI driver
This commit is contained in:
parent
5d4fee3bf2
commit
1ff7865d6c
|
@ -36,6 +36,16 @@ with lib;
|
||||||
|
|
||||||
hardware.genode = {
|
hardware.genode = {
|
||||||
|
|
||||||
|
ahci.enable = lib.mkEnableOption "AHCI (SATA) block driver";
|
||||||
|
|
||||||
|
framebuffer = {
|
||||||
|
enable = lib.mkEnableOption "framebuffer driver";
|
||||||
|
driver = mkOption {
|
||||||
|
type = types.enum [ "boot" "vesa" ];
|
||||||
|
default = "vesa";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
usb = {
|
usb = {
|
||||||
|
|
||||||
enable = lib.mkEnableOption "USB driver";
|
enable = lib.mkEnableOption "USB driver";
|
||||||
|
@ -48,14 +58,6 @@ with lib;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
framebuffer = {
|
|
||||||
enable = lib.mkEnableOption "framebuffer driver";
|
|
||||||
driver = mkOption {
|
|
||||||
type = types.enum [ "boot" "vesa" ];
|
|
||||||
default = "vesa";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -115,7 +117,19 @@ with lib;
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
'') (builtins.attrNames config.networking.interfaces)
|
'') (builtins.attrNames config.networking.interfaces)
|
||||||
++ lib.optional config.hardware.genode.framebuffer.enable
|
++ lib.optional config.hardware.genode.ahci.enable
|
||||||
|
(builtins.toFile ("framebuffer.platform-policy.dhall") ''
|
||||||
|
let Genode = env:DHALL_GENODE
|
||||||
|
|
||||||
|
in Genode.Init.Config.Policy::{
|
||||||
|
, service = "Platform"
|
||||||
|
, label = Genode.Init.LabelSelector.prefix "ahci_drv"
|
||||||
|
, content =
|
||||||
|
[ Genode.Prelude.XML.leaf
|
||||||
|
{ name = "pci", attributes = toMap { class = "AHCI" } }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
'') ++ lib.optional config.hardware.genode.framebuffer.enable
|
||||||
(builtins.toFile ("framebuffer.platform-policy.dhall") ''
|
(builtins.toFile ("framebuffer.platform-policy.dhall") ''
|
||||||
let Genode = env:DHALL_GENODE
|
let Genode = env:DHALL_GENODE
|
||||||
|
|
||||||
|
@ -280,6 +294,40 @@ with lib;
|
||||||
|
|
||||||
in lib.filterAttrs (n: v: v != null) (nics // sockets);
|
in lib.filterAttrs (n: v: v != null) (nics // sockets);
|
||||||
|
|
||||||
|
genode.core.children.ahci_drv = {
|
||||||
|
inputs = [ pkgs.genodePackages.ahci_drv ];
|
||||||
|
configFile = pkgs.writeText "ahci_drv.dhall" ''
|
||||||
|
let Genode = env:DHALL_GENODE
|
||||||
|
|
||||||
|
let Init = Genode.Init
|
||||||
|
|
||||||
|
in Init.Child.flat
|
||||||
|
Init.Child.Attributes::{
|
||||||
|
, binary = "ahci_drv"
|
||||||
|
, resources = Init.Resources::{
|
||||||
|
, caps = 400
|
||||||
|
, ram = Genode.units.MiB 10
|
||||||
|
, constrainPhys = True
|
||||||
|
}
|
||||||
|
, romReports = [ { local = "ports", route = "ahci_ports" } ]
|
||||||
|
, routes =
|
||||||
|
[ Init.ServiceRoute.parent "IRQ"
|
||||||
|
, Init.ServiceRoute.parent "IO_MEM"
|
||||||
|
, Init.ServiceRoute.parent "IO_PORT"
|
||||||
|
]
|
||||||
|
, config = Init.Config::{
|
||||||
|
, polices =
|
||||||
|
[ Init.Config.Policy::{
|
||||||
|
, service = "Block"
|
||||||
|
, label = Init.LabelSelector.prefix "part_block"
|
||||||
|
, attributes = toMap { device = "0", writeable = "yes" }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
genode.core.children.acpi_drv = {
|
genode.core.children.acpi_drv = {
|
||||||
inputs = [ pkgs.genodePackages.acpi_drv ];
|
inputs = [ pkgs.genodePackages.acpi_drv ];
|
||||||
configFile = pkgs.writeText "acpi_drv.dhall" ''
|
configFile = pkgs.writeText "acpi_drv.dhall" ''
|
||||||
|
|
Loading…
Reference in New Issue