81 lines
3.6 KiB
C
81 lines
3.6 KiB
C
/*
|
|
* Copyright (c) XMEDIA. All rights reserved.
|
|
*/
|
|
|
|
#ifndef MPI_SYS_H
|
|
#define MPI_SYS_H
|
|
|
|
#include "xmedia_type.h"
|
|
|
|
typedef enum {
|
|
MPI_SYS_SENSOR_CLK_EN = 0,
|
|
MPI_SYS_SENSOR_RST_SEL,
|
|
MPI_SYS_SENSOR_CLK_SET,
|
|
MPI_SYS_SENSOR_CLK_GET,
|
|
MPI_SYS_MAX,
|
|
} mpi_sys_func_id;
|
|
|
|
/*
|
|
* 函数功能:配置模块时钟或复位
|
|
* 函数参数:
|
|
* chn_id - 输入参数,需配置模块的目标通道,不支持多通道则配置为0
|
|
* func_id - 输入参数,操作类型
|
|
* param - 输入参数
|
|
* 时钟开关/复位场景:0表示时钟关闭/复位撤销;1表示时钟打开/复位使能
|
|
* 时钟配置场景:需要配置的时钟频率,单位为Hz
|
|
* func_id为MPI_SYS_SENSOR_CLK_GET时,param为输出参数,获取当前时钟频率,单位为Hz
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_OPEN_FAILED - 打开设备节点失败
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 参数非法
|
|
*/
|
|
xmedia_s32 mpi_sys_mod_ctrl(xmedia_u32 chn_id, mpi_sys_func_id func_id, xmedia_u32 *param);
|
|
|
|
/*
|
|
* 函数功能:创建内核态proc节点,以及调试信息缓存buffer,用于保存用户态调试信息
|
|
* 函数参数:
|
|
* name - 输入参数,创建的目标节点名称,用于区分不同节点,需要以‘\0’结束
|
|
* buffer_len - 输入参数,需申请的调试信息缓存buffer的长度
|
|
* handle - 输出参数,创建的proc节点操作句柄
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_NOT_INIT - 没有初始化sys模块
|
|
* XMEDIA_ERRCODE_NULL_PTR - 空指针
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 参数非法
|
|
* XMEDIA_ERRCODE_CREATE_FAILED - 创建proc节点失败
|
|
* XMEDIA_ERRCODE_BUFFER_FULL - 已创建的节点达到最大值
|
|
*/
|
|
xmedia_s32 mpi_sys_create_proc_entry(xmedia_char *name, xmedia_u32 buffer_len, xmedia_handle *handle);
|
|
|
|
/*
|
|
* 函数功能:销毁内核态proc节点,以及释放调试信息缓存buffer
|
|
* 函数参数:
|
|
* handle - 输入参数,目标节点操作句柄
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_NOT_INIT - 没有初始化sys模块
|
|
* XMEDIA_ERRCODE_DESTROY_FAILED - 销毁proc节点失败
|
|
* 注意:只能销毁用户态mpi_sys_create_proc_entry接口创建的proc节点
|
|
*/
|
|
xmedia_s32 mpi_sys_destory_proc(xmedia_handle handle);
|
|
|
|
/*
|
|
* 函数功能:往proc节点buffer写入调试信息
|
|
* 函数参数:
|
|
* handle - 输入参数,目标节点操作句柄
|
|
* buffer_addr_va - 输入参数,用户态保存调试信息的缓存地址(虚拟地址)
|
|
* buffer_len - 输入参数,需要写入的数据长度
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_NOT_INIT - 没有初始化sys模块
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 参数非法
|
|
* XMEDIA_ERRCODE_NULL_PTR - buffer地址为空指针
|
|
* XMEDIA_ERRCODE_BUFFER_FULL - 待写入数据长度大于内核缓存空间的最大长度
|
|
* XMEDIA_ERRCODE_BAD_ADDRESS - buffer地址异常,不支持拷贝到内核态
|
|
* XMEDIA_ERRCODE_COPY_DATA_ERROR - 从用户态拷贝数据到内核态出错
|
|
* 注意:只支持一次性将调试信息写入内核态的buffer中,不支持分段写入
|
|
*/
|
|
xmedia_s32 mpi_sys_write_proc(xmedia_handle handle, xmedia_u64 buffer_addr_va, xmedia_u32 buffer_len);
|
|
|
|
#endif
|