Edit online

接口设计

Driver 层接口设计

以下接口是 TSensor 设备驱动框架的标准接口。
struct rt_sensor_ops
{
    rt_size_t (*fetch_data)(struct rt_sensor_device *sensor, void *buf, rt_size_t len);
    rt_err_t (*control)(struct rt_sensor_device *sensor, int cmd, void *arg);
};
1. aic_tsen_fetch
函数原型 rt_size_t aic_tsen_fetch(struct rt_sensor_device *sensor, void *buf, rt_size_t len)
功能说明 读取 TSensor 温度数据
参数定义 sensor - 指向 sensor 设备

buf - 用来保存读取到的温度,是 data 类型的数据结构

len - buf 的长度

返回值 1,成功; <0,失败
注意事项 目前仅支持读取 CPU 位置处的 TSensor
2. aic_tsen_control
函数原型 rt_err_t aic_tsen_control(struct rt_sensor_device *sensor, int cmd, void *args)
功能说明 TSensor 驱动的 ioctl 接口
参数定义 sensor - 指向 sensor 设备

cmd - ioctl 命令码

args - ioctl 命令相应的参数

返回值 -1,失败
注意事项 目前暂未实现此接口中的 ioctl 命令,所以统一返回-1。 不影响正常读数据功能

HAL 层接口设计

HAL 层的函数接口声明存放在 hal_tsen.h 中,主要接口有:
void hal_tsen_enable(int enable);
void hal_tsen_ch_enable(u32 ch, int enable);
int hal_tsen_ch_init(struct aic_tsen_ch *chan, u32 pclk);

int hal_tsen_get_temp(struct aic_tsen_ch *chan, s32 *val);
s32 hal_tsen_data2temp(struct aic_tsen_ch *chan);
u16 hal_tsen_temp2data(struct aic_tsen_ch *chan, s32 temp);
void hal_tsen_status_show(struct aic_tsen_ch *chan);

irqreturn_t hal_tsen_irq_handle(int irq, void *arg);