我是靠谱客的博主 呆萌路灯,最近开发中收集的这篇文章主要介绍MTK平台下的sensor操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

针对MTK平台,抽象出一层hwmsensor,来管理所有的模块,为上层提供统一的接口,屏蔽下层硬件不同而导致的差异性。
MTK代码里使用了一个hwmsensor模块控制所有的sensor。
代码路径:mediatek/kernel/drivers/hwmon/hwmsen/hwmsen_dev.c,编译成hwmsen_dev.o,系统起来后会生成/dev/hwmsensor设备。
使用sensor_operate接口管理所有sensor驱动,向上提供hwmsen_unlocked_ioctl接口

再往下就是具体的sensor驱动代码了,根据MTK的驱动结构完成sensor_operate接口,并调用hwmsen_dev.c里的hwmsen_attach函数,把sensor_operate接口加到hwmsen_dev的列表里,这样hwmsen_dev里就能调用所有sensor的sensor_operate函数。


tmd2772为例:

hwmsensor模块中还提供一种中断方法,poll轮询方法,通过input子系统实现数据交互

在hwmsen_poll函数中,调度sensor工作队列,读取sensor驱动层数据

static void hwmsen_poll(unsigned long data)
{
    struct hwmdev_object *obj = (struct hwmdev_object *)data;
    if(obj != NULL)
    {
        queue_work(sensor_workqueue, &obj->report);
    }
}
在static void hwmsen_work_func(struct work_struct *work)函数中,遍历hwmsen_dev列表,读取每一个sensor列表中的数据。

通过调用    

input_report_rel(obj->idev, EVENT_TYPE_SENSOR, event_type);
input_sync(obj->idev);//modified

将数据上报的应用层

最后

以上就是呆萌路灯为你收集整理的MTK平台下的sensor操作的全部内容,希望文章能够帮你解决MTK平台下的sensor操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部