From e6ee7d3d4ae9cca5c6c22dfd0f83a734ba37e40b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 10 Mar 2023 16:53:01 +0100 Subject: [PATCH] wifi: provide platform specific DTB access The device-tree binary is normally required on ARM-based platforms where as on x86 it is omitted. The platform-specific DTB helper provides a generic interface for accssing the DTB and needs to be implemented on each platform. Issue #4813 --- repos/pc/lib/mk/wifi.inc | 1 + repos/pc/src/lib/wifi/dtb_helper.cc | 21 ++++++++++++++++++++ repos/pc/src/lib/wifi/dtb_helper.h | 30 +++++++++++++++++++++++++++++ repos/pc/src/lib/wifi/wlan.cc | 5 ++++- 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 repos/pc/src/lib/wifi/dtb_helper.cc create mode 100644 repos/pc/src/lib/wifi/dtb_helper.h diff --git a/repos/pc/lib/mk/wifi.inc b/repos/pc/lib/mk/wifi.inc index d0e71ba1a5..a7b98e2d7b 100644 --- a/repos/pc/lib/mk/wifi.inc +++ b/repos/pc/lib/mk/wifi.inc @@ -12,6 +12,7 @@ SRC_CC += wlan.cc SRC_CC += firmware.cc SRC_CC += socket_call.cc SRC_CC += lx_emul/random.cc +SRC_CC += dtb_helper.cc SRC_C += dummies.c SRC_C += lx_emul.c diff --git a/repos/pc/src/lib/wifi/dtb_helper.cc b/repos/pc/src/lib/wifi/dtb_helper.cc new file mode 100644 index 0000000000..c298f86941 --- /dev/null +++ b/repos/pc/src/lib/wifi/dtb_helper.cc @@ -0,0 +1,21 @@ +/** + * \brief DTB access helper + * \author Josef Soentgen + * \date 2023-04-11 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + + +#include "dtb_helper.h" + + +Dtb_helper::Dtb_helper(Genode::Env &env) : _env { env } { } + + +void *Dtb_helper::dtb_ptr() { return nullptr; } diff --git a/repos/pc/src/lib/wifi/dtb_helper.h b/repos/pc/src/lib/wifi/dtb_helper.h new file mode 100644 index 0000000000..fd25cb4362 --- /dev/null +++ b/repos/pc/src/lib/wifi/dtb_helper.h @@ -0,0 +1,30 @@ +/** + * \brief DTB access helper + * \author Josef Soentgen + * \date 2023-04-11 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#ifndef _DTB_HELPER_H_ +#define _DTB_HELPER_H_ + +/* Genode includes */ +#include + + +struct Dtb_helper +{ + Genode::Env &_env; + + Dtb_helper(Genode::Env &env); + + void *dtb_ptr(); +}; + +#endif /* _DTB_HELPER_H_ */ diff --git a/repos/pc/src/lib/wifi/wlan.cc b/repos/pc/src/lib/wifi/wlan.cc index 5b2e8c47c0..d3e6d0b893 100644 --- a/repos/pc/src/lib/wifi/wlan.cc +++ b/repos/pc/src/lib/wifi/wlan.cc @@ -29,6 +29,7 @@ /* local includes */ #include "lx_user.h" +#include "dtb_helper.h" using namespace Genode; @@ -155,6 +156,8 @@ struct Wlan Io_signal_handler _signal_handler { _env.ep(), *this, &Wlan::_handle_signal }; + Dtb_helper _dtb_helper { _env }; + void _handle_signal() { if (uplink_task_struct_ptr) { @@ -175,7 +178,7 @@ struct Wlan genode_allocator_ptr(Lx_kit::env().heap), genode_signal_handler_ptr(_signal_handler)); - lx_emul_start_kernel(nullptr); + lx_emul_start_kernel(_dtb_helper.dtb_ptr()); } };