xref: /DragonOS/kernel/src/driver/base/firmware.rs (revision 91e9d4ab55ef960f57a1b6287bc523ca4341f67a)
106d5e247SLoGin use alloc::{string::ToString, sync::Arc};
206d5e247SLoGin 
3*91e9d4abSLoGin use system_error::SystemError;
406d5e247SLoGin 
506d5e247SLoGin use super::kset::KSet;
606d5e247SLoGin 
706d5e247SLoGin /// `/sys/firmware`的kset
806d5e247SLoGin static mut FIRMWARE_KSET_INSTANCE: Option<Arc<KSet>> = None;
906d5e247SLoGin 
1006d5e247SLoGin #[inline(always)]
1106d5e247SLoGin #[allow(dead_code)]
sys_firmware_kset() -> Arc<KSet>1206d5e247SLoGin pub fn sys_firmware_kset() -> Arc<KSet> {
1306d5e247SLoGin     unsafe { FIRMWARE_KSET_INSTANCE.clone().unwrap() }
1406d5e247SLoGin }
1506d5e247SLoGin 
1606d5e247SLoGin /// 初始化`/sys/firmware`的kset
firmware_init() -> Result<(), SystemError>1706d5e247SLoGin pub(super) fn firmware_init() -> Result<(), SystemError> {
1806d5e247SLoGin     let firmware_kset = KSet::new("firmware".to_string());
1906d5e247SLoGin     firmware_kset
2006d5e247SLoGin         .register(None)
2106d5e247SLoGin         .expect("register firmware kset failed");
2206d5e247SLoGin     unsafe {
2306d5e247SLoGin         FIRMWARE_KSET_INSTANCE = Some(firmware_kset);
2406d5e247SLoGin     }
2506d5e247SLoGin     return Ok(());
2606d5e247SLoGin }
27