diff --git a/src/runtime/src/main.rs b/src/runtime/src/main.rs index 4d07248..519d12b 100644 --- a/src/runtime/src/main.rs +++ b/src/runtime/src/main.rs @@ -11,6 +11,7 @@ extern crate alloc; +#[cfg(feature = "target_kasli_soc")] use core::cell::RefCell; use log::{info, warn, error}; @@ -148,14 +149,11 @@ pub fn main_core0() { info!("gateware ident: {}", identifier_read(&mut [0; 64])); i2c::init(); - let i2c_bus = unsafe { (i2c::I2C_BUS).as_mut().unwrap() }; - - #[cfg(feature = "target_kasli_soc")] - let (mut io_expander0, mut io_expander1); #[cfg(feature = "target_kasli_soc")] { - io_expander0 = io_expander::IoExpander::new(i2c_bus, 0).unwrap(); - io_expander1 = io_expander::IoExpander::new(i2c_bus, 1).unwrap(); + let i2c_bus = unsafe { (i2c::I2C_BUS).as_mut().unwrap() }; + let mut io_expander0 = io_expander::IoExpander::new(i2c_bus, 0).unwrap(); + let mut io_expander1 = io_expander::IoExpander::new(i2c_bus, 1).unwrap(); io_expander0 .init(i2c_bus) .expect("I2C I/O expander #0 initialization failed"); @@ -169,6 +167,11 @@ pub fn main_core0() { io_expander1.set(1, 1, false); io_expander0.service(i2c_bus).unwrap(); io_expander1.service(i2c_bus).unwrap(); + task::spawn(io_expanders_service( + RefCell::new(i2c_bus), + RefCell::new(io_expander0), + RefCell::new(io_expander1), + )); } let cfg = match Config::new() { @@ -186,11 +189,5 @@ pub fn main_core0() { #[cfg(has_grabber)] task::spawn(grabber::grabber_thread(timer)); - #[cfg(feature = "target_kasli_soc")] - task::spawn(io_expanders_service( - RefCell::new(i2c_bus), - RefCell::new(io_expander0), - RefCell::new(io_expander1), - )); comms::main(timer, cfg); } diff --git a/src/runtime/src/rtio_acp.rs b/src/runtime/src/rtio_acp.rs index 4c1f33b..d356b8c 100644 --- a/src/runtime/src/rtio_acp.rs +++ b/src/runtime/src/rtio_acp.rs @@ -11,6 +11,7 @@ pub const RTIO_O_STATUS_UNDERFLOW: i32 = 2; pub const RTIO_O_STATUS_DESTINATION_UNREACHABLE: i32 = 4; pub const RTIO_I_STATUS_WAIT_EVENT: i32 = 1; pub const RTIO_I_STATUS_OVERFLOW: i32 = 2; +#[allow(unused)] pub const RTIO_I_STATUS_WAIT_STATUS: i32 = 4; // TODO pub const RTIO_I_STATUS_DESTINATION_UNREACHABLE: i32 = 8;