diff --git a/repos/gems/recipes/src/sculpt_manager/used_apis b/repos/gems/recipes/src/sculpt_manager/used_apis index 274e0f2552..f39cc0fc50 100644 --- a/repos/gems/recipes/src/sculpt_manager/used_apis +++ b/repos/gems/recipes/src/sculpt_manager/used_apis @@ -18,3 +18,4 @@ capture_session gpu_session pin_state_session pin_control_session +i2c_session diff --git a/repos/gems/run/sculpt.run b/repos/gems/run/sculpt.run index 243e0b32c5..4f97fb3726 100644 --- a/repos/gems/run/sculpt.run +++ b/repos/gems/run/sculpt.run @@ -182,10 +182,17 @@ proc driver_routes { } { } set result(mnt_reform2) { + + + + + + + } set result(imx8q_evk) { @@ -446,6 +453,7 @@ install_config { + diff --git a/repos/gems/src/app/sculpt_manager/driver/fb.h b/repos/gems/src/app/sculpt_manager/driver/fb.h index f6360b65ac..688a678744 100644 --- a/repos/gems/src/app/sculpt_manager/driver/fb.h +++ b/repos/gems/src/app/sculpt_manager/driver/fb.h @@ -99,6 +99,7 @@ struct Sculpt::Fb_driver : private Noncopyable xml.node("route", [&] { gen_parent_route (xml); gen_parent_route(xml); + gen_parent_route(xml); gen_capture_route(xml); gen_parent_rom_route(xml, "fb_drv"); gen_parent_rom_route(xml, "config", "config -> fb_drv"); diff --git a/repos/gems/src/app/sculpt_manager/drivers.cc b/repos/gems/src/app/sculpt_manager/drivers.cc index d8f857a154..58cd1e3b98 100644 --- a/repos/gems/src/app/sculpt_manager/drivers.cc +++ b/repos/gems/src/app/sculpt_manager/drivers.cc @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/repos/gems/src/app/sculpt_manager/main.cc b/repos/gems/src/app/sculpt_manager/main.cc index a6644aeaba..5d3cad48e0 100644 --- a/repos/gems/src/app/sculpt_manager/main.cc +++ b/repos/gems/src/app/sculpt_manager/main.cc @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -86,6 +87,8 @@ struct Sculpt::Main : Input_event_handler, Build_info const _build_info = Build_info::from_xml(Attached_rom_dataspace(_env, "build_info").xml()); + bool const _mnt_reform = (_build_info.board == "mnt_reform2"); + Registry _child_states { }; void _with_child(auto const &name, auto const &fn) @@ -277,11 +280,28 @@ struct Sculpt::Main : Input_event_handler, ** Device discovery ** **********************/ + Board_info::Soc _soc { + .fb = _mnt_reform, + .touch = false, + .wifi = false, /* initialized via PCI */ + .usb = _mnt_reform, + .mmc = _mnt_reform, + .modem = false, + .nic = _mnt_reform, + }; + Drivers _drivers { _env, _child_states, *this, *this }; Drivers::Resumed _resumed = _drivers.resumed(); - Board_info::Options _driver_options { }; + Board_info::Options _driver_options { + .display = _mnt_reform, + .usb_net = false, + .nic = false, + .wifi = false, + .suppress {}, + .suspending = false, + }; /** * Drivers::Action @@ -1626,6 +1646,7 @@ struct Sculpt::Main : Input_event_handler, Main(Env &env) : _env(env) { + _drivers.update_soc(_soc); _gui.input()->sigh(_input_handler); _gui.mode_sigh(_gui_mode_handler); _handle_gui_mode(); @@ -2263,6 +2284,7 @@ void Sculpt::Main::_generate_runtime_config(Xml_generator &xml) const gen_parent_service(xml); gen_parent_service(xml); gen_parent_service(xml); + gen_parent_service(xml); gen_parent_service(xml); }); diff --git a/repos/gems/src/app/sculpt_manager/model/route.h b/repos/gems/src/app/sculpt_manager/model/route.h index 2ba5203c18..3bcc3cd602 100644 --- a/repos/gems/src/app/sculpt_manager/model/route.h +++ b/repos/gems/src/app/sculpt_manager/model/route.h @@ -41,6 +41,7 @@ struct Sculpt::Route : List_model::Element case Service::Type::GUI: return "gui"; case Service::Type::GPU: return "gpu"; case Service::Type::RM: return "rm"; + case Service::Type::I2C: return "i2c"; case Service::Type::IO_MEM: return "io_mem"; case Service::Type::IO_PORT: return "io_port"; case Service::Type::IRQ: return "irq"; @@ -76,6 +77,7 @@ struct Sculpt::Route : List_model::Element case Service::Type::GUI: return "GUI"; case Service::Type::GPU: return "GPU"; case Service::Type::RM: return "Region maps"; + case Service::Type::I2C: return "I2C"; case Service::Type::IO_MEM: return "Direct memory-mapped I/O"; case Service::Type::IO_PORT: return "Direct port I/O"; case Service::Type::IRQ: return "Direct device interrupts"; diff --git a/repos/gems/src/app/sculpt_manager/model/service.h b/repos/gems/src/app/sculpt_manager/model/service.h index 31e1c7df1a..39d316e5e9 100644 --- a/repos/gems/src/app/sculpt_manager/model/service.h +++ b/repos/gems/src/app/sculpt_manager/model/service.h @@ -27,7 +27,7 @@ struct Sculpt::Service enum class Type { AUDIO_IN, AUDIO_OUT, BLOCK, EVENT, CAPTURE, FILE_SYSTEM, NIC, GUI, GPU, - RM, IO_MEM, IO_PORT, IRQ, REPORT, ROM, TERMINAL, TRACE, USB, RTC, + RM, IO_MEM, IO_PORT, IRQ, REPORT, ROM, TERMINAL, TRACE, USB, RTC, I2C, PLATFORM, PIN_STATE, PIN_CONTROL, VM, PD, UPLINK, PLAY, RECORD, UNDEFINED }; enum class Match_label { EXACT, LAST }; @@ -55,6 +55,7 @@ struct Sculpt::Service case Type::GUI: return "Gui"; case Type::GPU: return "Gpu"; case Type::RM: return "RM"; + case Type::I2C: return "I2C"; case Type::IO_MEM: return "IO_MEM"; case Type::IO_PORT: return "IO_PORT"; case Type::IRQ: return "IRQ";