Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 30 additions & 14 deletions platform/dev-qemu/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 32 additions & 0 deletions platform/dev-qemu/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ bench = false
name = "dev-qemu"
test = false

[features]
default = []
# sp-serial off (default): SmbusEspiMedium (the framing ec-test-cli
# speaks). On: MctpSerialMedium / DSP0253 (the framing the SP speaks
# over the two-QEMU link). Pure compile-time selector — both medium
# constructors already exist in uart-service.
sp-serial = []

[profile.release]
lto = true # better optimizations
codegen-units = 1
Expand Down Expand Up @@ -62,3 +70,27 @@ static_cell = "2.1.0"
defmt = "0.3.6"
defmt-semihosting = "0.3.0"
semihosting = { version = "0.1", features = ["panic-handler"] }

# TEMPORARY (F1.1 placeholder): redirect embedded-services crates to a
# dymk fork commit = the EC's current pin (62d4ea9) + ONLY the
# uart_service::default_mctp_serial constructor (F1.0). This keeps the
# rest of embedded-services at 62d4ea9, so dev-qemu builds with zero
# platform-common churn. Remove this whole block once F1.0 merges
# upstream AND the EC is modernized to embedded-services main (tracked
# as a separate epic); the branch=main deps will then resolve the
# constructor directly via a Cargo.lock bump.
[patch."https://github.com/OpenDevicePartnership/embedded-services"]
battery-service = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
battery-service-interface = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
battery-service-relay = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
embedded-services = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
mctp-rs = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
odp-service-common = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
power-policy-interface = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
thermal-service = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
thermal-service-interface = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
thermal-service-relay = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
time-alarm-service = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
time-alarm-service-interface = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
time-alarm-service-relay = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
uart-service = { git = "https://github.com/dymk/embedded-services", rev = "ac26892ab25a1af9872d0d28208f8e290bffdfc7" }
23 changes: 20 additions & 3 deletions platform/dev-qemu/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,29 @@ use platform_common::mock::MockOdpRelayHandler;
use semihosting as _; // Panic handler
use static_cell::StaticCell;

// MCTP medium for the uart-service, selected at build time: SmbusEspi
// by default (the framing ec-test-cli speaks), MctpSerialMedium under
// sp-serial (the framing the SP speaks over the two-QEMU link). Both
// constructors live in uart-service; dev-qemu holds no wire addressing.
#[cfg(not(feature = "sp-serial"))]
type EcUartService = uart_service::DefaultService<MockOdpRelayHandler>;
#[cfg(feature = "sp-serial")]
type EcUartService = uart_service::MctpSerialService<MockOdpRelayHandler>;

#[cfg(not(feature = "sp-serial"))]
fn new_uart_service(relay: MockOdpRelayHandler) -> EcUartService {
uart_service::DefaultService::default_smbusespi(relay).unwrap()
}
#[cfg(feature = "sp-serial")]
fn new_uart_service(relay: MockOdpRelayHandler) -> EcUartService {
uart_service::MctpSerialService::default_mctp_serial(relay).unwrap()
}

#[embassy_executor::task]
async fn uart_service(uart: buffered::Uart<'static, Async>, relay: MockOdpRelayHandler) {
info!("Starting uart service");
static UART_SERVICE: StaticCell<uart_service::DefaultService<MockOdpRelayHandler>> = StaticCell::new();
let uart_service = uart_service::DefaultService::default_smbusespi(relay).unwrap();
let uart_service = UART_SERVICE.init(uart_service);
static UART_SERVICE: StaticCell<EcUartService> = StaticCell::new();
let uart_service = UART_SERVICE.init(new_uart_service(relay));
let Err(e) = uart_service::task::uart_service(uart_service, uart).await;
panic!("uart-service error: {:?}", e);
}
Expand Down
8 changes: 8 additions & 0 deletions platform/dev-qemu/supply-chain/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,14 @@ criteria = "safe-to-deploy"
version = "1.0.4"
criteria = "safe-to-deploy"

[[exemptions.crc]]
version = "3.4.0"
criteria = "safe-to-deploy"

[[exemptions.crc-catalog]]
version = "2.5.0"
criteria = "safe-to-deploy"

[[exemptions.darling]]
version = "0.20.11"
criteria = "safe-to-deploy"
Expand Down
Loading