mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-10 21:01:49 +00:00
sculpt: support for pinephone wifi driver
This patch replaces the former 'nic_drv' and 'nic_drv_dtb' functions by a more general 'nic_driver_routes' function that can return one or multiple platform-specific ROM routes for NIC-driver binaries and dtb files. This allows for supplying customizations for the wifi driver as well. E.g., on the PinePhone, this hook can be used to handle the renaming of the 'wifi_drv' to 'a64_wifi_drv'. Related to issue #4813 and issue genodelabs/genode-allwinner#17.
This commit is contained in:
parent
1d376717c1
commit
54d7a48c9b
@ -150,22 +150,35 @@ proc log_route { } {
|
||||
}
|
||||
|
||||
|
||||
proc nic_drv { } {
|
||||
##
|
||||
# ROM routes that relabel generic NIC driver names to platform-specific binaries
|
||||
#
|
||||
proc nic_driver_routes { } {
|
||||
|
||||
if {[have_board pc]} { return ipxe_nic_drv }
|
||||
if {[have_board imx8q_evk]} { return fec_nic_drv }
|
||||
if {[have_board mnt_reform2]} { return fec_nic_drv }
|
||||
set result(pc) {
|
||||
<service name="ROM" label="nic_drv"> <parent label="ipxe_nic_drv"/> </service>
|
||||
<service name="ROM" label="wifi_drv"> <parent label="pc_wifi_drv"/> </service>
|
||||
}
|
||||
|
||||
return nic_unavailable
|
||||
}
|
||||
set result(mnt_reform2) {
|
||||
<service name="ROM" label="nic_drv"> <parent label="fec_nic_drv"/> </service>
|
||||
<service name="ROM" label="nic_drv.dtb"> <parent label="fec_nic_drv-mnt_reform2.dtb"/> </service>
|
||||
}
|
||||
|
||||
set result(imx8q_evk) {
|
||||
<service name="ROM" label="nic_drv"> <parent label="fec_nic_drv"/> </service>
|
||||
<service name="ROM" label="nic_drv.dtb"> <parent label="fec_nic_drv-imx8q_evk.dtb"/> </service>
|
||||
}
|
||||
|
||||
proc nic_drv_dtb { } {
|
||||
set result(pinephone) {
|
||||
<service name="ROM" label="wifi_drv"> <parent label="a64_wifi_drv"/> </service>
|
||||
<service name="ROM" label="wifi_drv.dtb"> <parent label="wifi-pinephone.dtb"/> </service>
|
||||
}
|
||||
|
||||
if {[have_board imx8q_evk]} { return fec_nic_drv-imx8q_evk.dtb }
|
||||
if {[have_board mnt_reform2]} { return fec_nic_drv-mnt_reform2.dtb }
|
||||
if {[info exists result([board])]} {
|
||||
return $result([board]); }
|
||||
|
||||
return nic_unavailable
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
@ -627,9 +640,7 @@ install_config {
|
||||
<child name="leitzentrale" label="fonts"/> </service>
|
||||
<service name="Report"> <child name="fs_report"/> </service>
|
||||
<service name="LOG" label="unlogged"> <parent/> </service>
|
||||
} [log_route] {
|
||||
<service name="ROM" label="nic_drv"> <parent label="} [nic_drv] {"/> </service>
|
||||
<service name="ROM" label="nic_drv.dtb"> <parent label="} [nic_drv_dtb] {"/> </service>
|
||||
} [log_route] [nic_driver_routes] {
|
||||
<service name="Event" label="global"> <child name="nitpicker"/> </service>
|
||||
<service name="Event" label="leitzentrale"> <child name="leitzentrale"/> </service>
|
||||
<service name="Capture" label="global"> <child name="nitpicker"/> </service>
|
||||
|
@ -19,12 +19,10 @@ void Sculpt::gen_wifi_drv_start_content(Xml_generator &xml)
|
||||
Cap_quota{250}, Ram_quota{32*1024*1024},
|
||||
Priority::NETWORK);
|
||||
|
||||
xml.node("binary", [&] () {
|
||||
xml.attribute("name", "pc_wifi_drv");
|
||||
});
|
||||
|
||||
xml.node("config", [&] () {
|
||||
|
||||
xml.attribute("dtb", "wifi_drv.dtb");
|
||||
|
||||
xml.node("vfs", [&] () {
|
||||
gen_named_node(xml, "dir", "dev", [&] () {
|
||||
xml.node("null", [&] () {});
|
||||
@ -60,7 +58,8 @@ void Sculpt::gen_wifi_drv_start_content(Xml_generator &xml)
|
||||
xml.node("parent", [&] () {
|
||||
xml.attribute("label", "wifi"); }); });
|
||||
|
||||
gen_parent_rom_route(xml, "pc_wifi_drv");
|
||||
gen_parent_rom_route(xml, "wifi_drv");
|
||||
gen_parent_rom_route(xml, "wifi_drv.dtb");
|
||||
gen_parent_rom_route(xml, "ld.lib.so");
|
||||
gen_parent_rom_route(xml, "libcrypto.lib.so");
|
||||
gen_parent_rom_route(xml, "vfs.lib.so");
|
||||
@ -70,6 +69,7 @@ void Sculpt::gen_wifi_drv_start_content(Xml_generator &xml)
|
||||
gen_parent_rom_route(xml, "vfs_wifi.lib.so");
|
||||
gen_parent_rom_route(xml, "libssl.lib.so");
|
||||
gen_parent_rom_route(xml, "wifi.lib.so");
|
||||
gen_parent_rom_route(xml, "a64_wifi.lib.so");
|
||||
gen_parent_rom_route(xml, "wpa_driver_nl80211.lib.so");
|
||||
gen_parent_rom_route(xml, "wpa_supplicant.lib.so");
|
||||
gen_parent_rom_route(xml, "iwlwifi-1000-5.ucode");
|
||||
|
Loading…
x
Reference in New Issue
Block a user