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