-- SPDX-License-Identifier: CC0-1.0 let drivers = env:drivers ? ../compositions/pc-drivers.dhall let Genode = env:DHALL_GENODE let Init = Genode.Init let Child = Init.Child let Resources = Init.Resources let ServiceRoute = Init.ServiceRoute let parentRomRoute = λ(from : Text) → λ(to : Text) → ServiceRoute.parentLabel "ROM" (Some from) (Some to) let childRomRoute = λ(child : Text) → λ(from : Text) → ServiceRoute.childLabel "ROM" child (Some from) (None Text) let label = \(_ : Text) -> { local = _, route = _ } in Init::{ , verbose = True , children = toMap { , drivers = Init.toChild drivers Init.Attributes::{ , provides = [ "Block", "Framebuffer", "Input" ] , resources = Init.Resources::{ ram = Genode.units.MiB 4 } , romReports = [ label "block_devices" ] , routes = [ parentRomRoute "managed/input_filter" "input_filter.config" , parentRomRoute " numlock_remap" "numlock_remap.config" , childRomRoute "dynamic_rom" "capslock" , childRomRoute "dynamic_rom" "numlock" , childRomRoute "dynamic_rom" "system" , ServiceRoute.child "Report" "_report_rom" , ServiceRoute.parent "Timer" , Genode.Init.ServiceRoute.parent "IRQ" , Genode.Init.ServiceRoute.parent "IO_MEM" , Genode.Init.ServiceRoute.parent "IO_PORT" ] } , dynamic_rom = Child.flat Child.Attributes::{ , binary = "dynamic_rom" , resources = Resources::{ ram = Genode.units.MiB 4 } , provides = [ "ROM" ] , config = Genode.Init.Config::{ , content = [ Genode.Prelude.XML.text '' '' ] } } , test-driver_manager = Child.flat Child.Attributes::{ , binary = "test-driver_manager" , config = Init.Config::{ , content = [ Genode.Prelude.XML.text '' '' ] } , reportRoms = [ label "block_devices" ] , routes = [ , ServiceRoute.child "Block" "drivers" , ServiceRoute.child "Framebuffer" "drivers" , ServiceRoute.child "Input" "drivers" ] } } }