高通APQ8009w LTR303_ALS 光感(sensor)兼容模式调试

内容提示

本文主要记录ltr303_als光感的调试以及高通sensor兼容模式的配置,特别主要,如果采用了兼容模式,所有的sensor都要采用这种模式。这点要特别注意!!!

LTR303_ALS

LTR303_ALS资料请网上搜索或找供应商提供。IIC 唯一地址0x29,不像其他IC又有引脚可以拉高拉低来改变从机地址。IIC都是标准8位寄存器地址的读写,参考文档即可。

sensor兼容模式

以前调试sensor都是单一的一个,不需要考虑兼容性问题,但是由于某颗供货周期、短缺的因素,项目要求使用功能一样的两个sensor,实际量产的时候,以实际情况贴sensor,这是急需要在代码里面做兼容。如果sensor放到driver下,只需要通过id 的判断来加载不同的驱动即可。高通apq8009w则是通过sensor_def_qcomdev.conf 文件实现兼容相同类型的sensor。这种sensor放在ASDP的架构好像是ddf的架构,了解的不多,这里所说的可能是错误的,请指正。
kba-170212221015_4_how_to_enable_boot_time_ssi_auto-detect这个文档又讲怎样兼容。怎样添加一个sensor,文档和网上的资料都特别多,这里不列出了。

调试记录

sensor 移植,参考网上资料和高通文档介绍移植很容易。下面是简单的记录

1.添加FAE给你的驱动 sns_dd_ltr303.h sns_dd_ltr303.c sns_dd_ltr303_uimg.c 文件添加到 modem_proc/Sensors /dd/qcom/src/sns_dd_ltr303.c b/msm8909w-law-3-0-0-1_amss_standard_oem/modem_proc/Sensors/dd/qcom/src 目录 下,不同平台添加的路径不同,请注意。
2. 找到驱动文件里面的sns_ddf_driver_if_s 结构体 在modem_proc/Sensors/dd/qcom/inc/sns_dd.h声明 extern sns_ddf_driver_if_s sns_dd_ltr303_if; //add 2020-05-19

3.modem_proc/Sensors/dd/qcom/build/dd_qcom.scons包含驱动文件
B U I L D P A T H / s n s d d l t r 30 3 u i m g . c " , " {BUILDPATH}/sns_dd_ltr303_uimg.c", " {BUILDPATH}/sns_dd_ltr303.c”,

4.添加编译选项 Sensors/build/Sensors.scons
env.Append(CPPDEFINES = [“CONFIG_SUPPORT_LTR303”])

5.添加uuid modem 和 Android端都要同时添加必须要相同
modem_proc/Sensors/common/inc/sns_reg_common.h
#define SNS_REG_UUID_LTR303
{0x32,0xfb,0x90,0xdb,0xc7,0x0b,0x40,0xf1,0xa2,0xf1,0xcd,0xd4,0xe1,0x9d,0xb6,0x8a} //add 2020-05-19
android 在vender 目录下有个相同的文件,不同平台路径有差异,找到对应sns_reg_common.h
#define SNS_REG_UUID_LTR303
{0x32,0xfb,0x90,0xdb,0xc7,0x0b,0x40,0xf1,0xa2,0xf1,0xcd,0xd4,0xe1,0x9d,0xb6,0x8a} //add 2020-05-19

6.sensor 函数指针和uuid 建立联系modem_proc/Sensors/smgr/src/sns_smgr_reg.c
#ifdef CONFIG_SUPPORT_LTR303 //add huangcheng 2020-04-23
{SNS_REG_UUID_LTR303, &sns_dd_ltr303_if},
#endif

7.modem_proc/Sensors/smgr/src/sns_smgr_sensor_config.h
#define SNS_SMGR_SENSOR_4_DD_FN_LIST_PTR &sns_dd_ltr303_if
这个应该是默认配置进去的sensor,也是通过搜其他类型的sensor 找到此处的差异,高通文档上有,网上的文章没有提到这个配置,导致配置不出来。
截止到此处,sensor的移植(添加)已经去不完成

CONF 文件修改

需要注意的地方(参考kba-170212221015_4)
调试之前已经修改为auto_detect模式。故即便这里只有一个该类型的sensor也要采用这种配置,
1900 0 0x00010001 #Maj Ver 这里必须改为0 否这不能正常使用,以前配置的sensor都没有用,需要使用的senson必须必须必须按照auto_detect这种模式配置,即使你只用一个sensor也必须这样配置。如果还配置不出来,给高通提case吧。
注意UUID 和之前定义的对应方式,不是直接去掉ox放到这里的,要反过来,IIC 地址 等配置。有些还有reset 脚要配置,还有供电等,否者senso这样也调试不同。下面数字的意义见sns_reg_api_v02.h
#DEVINFO_MAG LTR303_ALS auto-detect //add 2020-05-19
2300 2 0x00010001 # set to 1 to enable
2301 1 0x00010001 # set this to number of gyro sensors you want to auto-detect eg: 2 if there are 2 different gyro sensors
#LTR303_ALS ALS/Prox
2302 0xf1400bc7db90fb32 0x00010001 #UUID_HIGH
2303 0x8ab69de1d4cdf1a2 0x00010001 #UUID_LOW
2304 100000 0x00010001 #OFF_TO_IDLE
2305 250000 0x00010001 #IDLE_TO_READY
2306 0xFFFF 0x00010001 #GPIO1
2307 1040 0x00010001 #REG_GROUP_ID
2308 0xFFFF 0x00010001 #CAL_PRI_GROUP_ID
2309 0x01 0x00010001 #I2C_BUS
2310 0x29 0x00010001 #CS for SPI
2311 1 0x00010001 #SENSTIVITY
2312 0 0x00010001 #FLAGS
2368 0x02 0x00010001
2369 0x02 0x00010001 //add 2020-05-19 end

总结

在这里插入图片描述
经过上述配置编译,在驱动文件编译报错问题就不在详解,找FAE给你解决。找应用给你写个app或者网上下载一个装下去和读到光感值,证明驱动已将基本调通,功能优化的问题以后再解决。
以后再补上怎样push config文件,如何重启的windows 脚本,这些高通文档上也有,方便调试,不用每次修改一次编译一次再烧录浪费时间。

2020-05-20 huangcheng

猜你喜欢

转载自blog.csdn.net/HC_huangcheng/article/details/106230675
ALS