xref: /DragonOS/kernel/src/driver/base/platform/platform_device.rs (revision 2a7d773d3d39f1cb3d59d6baa817c896c6fd52d1)
1*2a7d773dSTingHuang use alloc::sync::Arc;
2*2a7d773dSTingHuang use super::{
3*2a7d773dSTingHuang     super::device::{
4*2a7d773dSTingHuang         Device,
5*2a7d773dSTingHuang         DeviceType,
6*2a7d773dSTingHuang         DeviceState
7*2a7d773dSTingHuang     },
8*2a7d773dSTingHuang     CompatibleTable, platform_driver::PlatformDriver
9*2a7d773dSTingHuang };
10*2a7d773dSTingHuang 
11*2a7d773dSTingHuang /// @brief: 实现该trait的设备实例应挂载在platform总线上,
12*2a7d773dSTingHuang ///         同时应该实现Device trait
13*2a7d773dSTingHuang pub trait PlatformDevice: Device {
14*2a7d773dSTingHuang     fn get_type(&self) -> DeviceType {
15*2a7d773dSTingHuang         DeviceType::PlatformDev
16*2a7d773dSTingHuang     }
17*2a7d773dSTingHuang 
18*2a7d773dSTingHuang     /// @brief: 获取设备匹配表
19*2a7d773dSTingHuang     /// @parameter: None
20*2a7d773dSTingHuang     /// @return: 设备匹配表
21*2a7d773dSTingHuang     fn get_compatible_table(&self) -> CompatibleTable;
22*2a7d773dSTingHuang 
23*2a7d773dSTingHuang     /// @brief: 判断设备是否初始化
24*2a7d773dSTingHuang     /// @parameter: None
25*2a7d773dSTingHuang     /// @return: 如果已经初始化,返回true,否则,返回false
26*2a7d773dSTingHuang     fn is_initialized(&self) -> bool;
27*2a7d773dSTingHuang 
28*2a7d773dSTingHuang     /// @brief: 设置设备状态
29*2a7d773dSTingHuang     /// @parameter set_state: 设备状态
30*2a7d773dSTingHuang     /// @return: None
31*2a7d773dSTingHuang     fn set_state(&self, set_state: DeviceState);
32*2a7d773dSTingHuang 
33*2a7d773dSTingHuang     /// @brief: 设置platform设备驱动
34*2a7d773dSTingHuang     /// @parameter driver: platform设备驱动
35*2a7d773dSTingHuang     /// @return: None
36*2a7d773dSTingHuang     fn set_driver(&self, driver: Option<Arc<dyn PlatformDriver>>);
37*2a7d773dSTingHuang }
38*2a7d773dSTingHuang 
39