MIO 驱动程序管理MIO的功能复用,该驱动程序具备以下功能:
以下部分将指导您完成 MIO 驱动的硬件配置:
以下部分将指导您完成 MIO 驱动的软件配置:
drivers/mio/fmio/fmio.h
typedef struct
{
FMioConfig config; /* mio config */
u32 is_ready; /* mio initialize the complete flag */
}FMioCtrl;
typedef struct
{
u32 instance_id; /*mio id*/
uintptr func_base_addr; /*I2C or UART function address*/
u32 irq_num; /* Device intrrupt id */
uintptr mio_base_addr; /*MIO control address*/
u32 version; /*mio version*/
u32 function_type; /*mio function type*/
u32 mio_status; /*mio function type status*/
} FMioConfig; /*mio configs*/
MIO驱动实例
const FMioConfig *FMioLookupConfig(u32 instance_id);
Note:
- 用户需要修改配置参数时,可以通过修改返回的FMioConfig副本,作为FMioSelectFunc函数的入参,
Input:
- u32 instance_id, 当前控制的MIO控制器实例号
Return:
- const FMioConfig *, 返回驱动默认参数, NULL表示失败
FError FMioSelectFunc(uintptr addr, u32 mio_type);
Note:
- 设置Mio功能
Input:
- uintptr addr, 当前控制器的MIO基地址
- u32 mio_type, 想要设置的MIO功能
Return:
- @return {FError *} 返回错误码
u32 FMioGetFunc(uintptr addr);
Note:
- 获取Mio功能
Input:
- uintptr addr, 当前控制器的MIO基地址
Return:
- @return {u32} 返回MIO的状态
u32 FMioGetVersion(uintptr addr);
Note:
- 获取Mio版本
Input:
- uintptr addr, 当前控制器的MIO基地址
Return:
- @return {u32} 返回MIO的版本
FError FMioFuncInit(FMioCtrl *instance_p, u32 mio_type)
Note:
- 初始化MIO的功能
Input:
- FMioCtrl *instance_p, 当前控制器的结构体
- u32 mio_type,需要配置的选项,串口还是IIC
Return:
- @return {u32} 返回初始化的状态
FError FMioFuncDeinit(FMioCtrl *instance_p)
Note:
- 去初始化MIO的结构体,和相关寄存器
Input:
- FMioCtrl *instance_p, 当前控制器的结构体
Return:
- @return {u32} 返回去初始化的状态
uintptr FMioFuncGetAddress(FMioCtrl *instance_p,u32 mio_type);
Note:
- 获取功能配置的基地址,如果当前配置和目标配置不一致,则失败
Input:
- FMioCtrl *instance_p, 当前控制器的结构体
- u32 mio_type, 目标配置的类型UART或者I2c
Return:
- @return {uintptr} 返回基地址的值
u32 FMioFuncGetIrqNum(FMioCtrl *instance_p,u32 mio_type);
Note:
- 获取功能配置的中断号,如果当前配置和目标配置不一致,则失败
Input:
- FMioCtrl *instance_p, 当前控制器的结构体
- u32 mio_type, 目标配置的类型UART或者I2c
Return:
- @return {u32} 返回中断号