From 3b83292205a64ad4e8ef774572d6989da0266700 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Mon, 22 Apr 2024 16:31:22 +0200 Subject: [PATCH] sculpt: refine condition of nic support A network card can be provided by PCI, and the SoC as well. Therefore, add an additional state variable in the Board_info::Soc, and check it appropriatedly. Issue #5174 --- repos/gems/src/app/phone_manager/main.cc | 1 + repos/gems/src/app/sculpt_manager/driver/nic.h | 2 +- repos/gems/src/app/sculpt_manager/model/board_info.h | 2 +- repos/gems/src/app/sculpt_manager/view/network_widget.h | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/repos/gems/src/app/phone_manager/main.cc b/repos/gems/src/app/phone_manager/main.cc index bb87a7a164..4e0ad0bd54 100644 --- a/repos/gems/src/app/phone_manager/main.cc +++ b/repos/gems/src/app/phone_manager/main.cc @@ -209,6 +209,7 @@ struct Sculpt::Main : Input_event_handler, .usb = false, .mmc = false, .modem = false, /* depends on presence of battery */ + .nic = false, }; Drivers _drivers { _env, _child_states, *this, *this }; diff --git a/repos/gems/src/app/sculpt_manager/driver/nic.h b/repos/gems/src/app/sculpt_manager/driver/nic.h index 59e96a83f5..1a084410eb 100644 --- a/repos/gems/src/app/sculpt_manager/driver/nic.h +++ b/repos/gems/src/app/sculpt_manager/driver/nic.h @@ -47,7 +47,7 @@ struct Sculpt::Nic_driver : private Noncopyable void update(Registry ®istry, Board_info const &board_info) { - bool const use_nic = board_info.detected.nic + bool const use_nic = (board_info.detected.nic || board_info.soc.nic) && board_info.options.nic && !board_info.options.suspending; diff --git a/repos/gems/src/app/sculpt_manager/model/board_info.h b/repos/gems/src/app/sculpt_manager/model/board_info.h index 6f27f7e373..c26201af60 100644 --- a/repos/gems/src/app/sculpt_manager/model/board_info.h +++ b/repos/gems/src/app/sculpt_manager/model/board_info.h @@ -93,7 +93,7 @@ struct Sculpt::Board_info */ struct Soc { - bool fb, touch, wifi, usb, mmc, modem; + bool fb, touch, wifi, usb, mmc, modem, nic; bool operator != (Soc const &other) const { diff --git a/repos/gems/src/app/sculpt_manager/view/network_widget.h b/repos/gems/src/app/sculpt_manager/view/network_widget.h index 734a7d33f3..a3768bfc2c 100644 --- a/repos/gems/src/app/sculpt_manager/view/network_widget.h +++ b/repos/gems/src/app/sculpt_manager/view/network_widget.h @@ -60,7 +60,7 @@ struct Sculpt::Network_widget : Widget s.widget(_local, selected); if (target.managed() || target.manual_type == Nic_target::WIRED) - if (board_info.detected.nic) + if (board_info.detected.nic || board_info.soc.nic) s.widget(_wired, selected); if (target.managed() || target.manual_type == Nic_target::WIFI)