From 72d832064f26bd23a8bd8ffd4564f8d3885682dd Mon Sep 17 00:00:00 2001 From: Esteban Blanc Date: Thu, 20 May 2021 21:52:54 +0200 Subject: [PATCH] spi: Remove option for spi_driver field --- rust/kernel/spi.rs | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/rust/kernel/spi.rs b/rust/kernel/spi.rs index 4f333252a06398..ceccdc3c7e4ddc 100644 --- a/rust/kernel/spi.rs +++ b/rust/kernel/spi.rs @@ -27,7 +27,7 @@ pub struct DriverRegistration { probe: Option, remove: Option, shutdown: Option, - spi_driver: Option, + spi_driver: bindings::spi_driver, } impl DriverRegistration { @@ -45,7 +45,7 @@ impl DriverRegistration { probe, remove, shutdown, - spi_driver: None, + spi_driver: bindings::spi_driver::default(), } } @@ -72,20 +72,18 @@ impl DriverRegistration { // FIXME: Add documentation pub fn register(self: Pin<&mut Self>) -> Result { - let mut spi_driver = bindings::spi_driver::default(); - spi_driver.driver.name = self.name.as_ptr() as *const c_types::c_char; - spi_driver.probe = self.probe; - spi_driver.remove = self.remove; - spi_driver.shutdown = self.shutdown; - let this = unsafe { self.get_unchecked_mut() }; if this.registered { return Err(Error::EINVAL); } - this.spi_driver = Some(spi_driver); + this.spi_driver.driver.name = this.name.as_ptr() as *const c_types::c_char; + this.spi_driver.probe = this.probe; + this.spi_driver.remove = this.remove; + this.spi_driver.shutdown = this.shutdown; - let res = unsafe { bindings::__spi_register_driver(this.this_module.0, &mut spi_driver) }; + let res = + unsafe { bindings::__spi_register_driver(this.this_module.0, &mut this.spi_driver) }; match res { 0 => { @@ -99,8 +97,7 @@ impl DriverRegistration { impl Drop for DriverRegistration { fn drop(&mut self) { - unsafe { bindings::driver_unregister(&mut self.spi_driver.unwrap().driver) } - // FIXME: No unwrap? But it's safe? + unsafe { bindings::driver_unregister(&mut self.spi_driver.driver) } } }