Android8.1 MSM8909平台增加温度传感器
物联网模块为了提高性价比,一般使用高通低端的MSM8909平台。最近在该平台的Android 8.1版本上调试了温度传感器,包括driver代码和HAL层,作个记录。
客户使用的是Microchip的AT30TS74(Atmel被Microchip收购),本来是很简单的I2c芯片,但是厂家没有提供驱动参考代码,适配android的驱动代码得自己写,有点坑。好吧,找个类似的传感器修改,先配置设备树:
Atmel@48 { //temperature sensor
compatible = “Atmel,AT30TS74”;
reg = <0x48>;
};
i2c地址和硬件原理图上的A2、A1、A0脚接法有关。
在驱动里注册i2c,注册input设备,再注册一个sensors_classdev设备:
data->cdev = sensors_cdev;
data->cdev.sensors_enable = at30ts74_enable_set;
data->cdev.sensors_poll_delay = at30ts74_poll_delay_set;
err = sensors_classdev_register(&data->input->dev, &data->cdev);
if (err) {
pr_err(“class device create failed: %d\n”, err);
goto error_class_sysfs;
}
这些是标准的套路不用多说。到了HAL层,由于MSM8909还是用的sensor老的HAL架构(新的平台架构已经走的是adsp模式),高通HAL层的温度传感器代码还得自己适配。还是坑啊。最接近的就是气压传感器了,对应的代码为hardware\qcom\sensors\Bmp180.cpp
可以自己参考这个修改一个温度传感器的,注意点:
Android8.1 MSM8909平台增加温度传感器
最新推荐文章于 2023-10-31 17:19:08 发布