前言
8926平台的sensor架构与之前的平台完全不同,实际上已经脱离了linux。此平台所有的sensor由adsp芯片控制,代码在modem端,编译和烧录也完全不同,下面以TSL2581为例进行说明。
一、 驱动
集成光传感器TSL2581
1. 驱动程序结构可以参考高通默认的光感驱动文件sns_dd_als_bh1721.c或sns_dd_als_max44009.c或sns_dd_alsprx_tmd277x.c,主要是填充结构体 sns_ddf_driver_if_s;其成员:
init,
reset,
get_data,
set_attrib,
get_attrib,
必须填充,因为sns_smgr_dd_init()对这它们进行检查;
另外probe成员也要填充,因为sns_smgr_parse_reg_devinfo_resp()中代码逻辑有问题,当probe为NULL时,只会填充第一个此类型的sensor的配置。
2. 寄存器配置,电路参考设计要查看 TSL2581的数据手册;
3. TSL2581 和 TMD277X都是TAOS公司的,参考它写最好。如果可以从fae获取驱动代码更好,基本不需要修改,改正编译错误之后就可以使用。
由于芯片在电路板的方向不同,G-sensor,gyro和compass需要调换x、y、z轴的映射,只需在sensor_def_qcomdev.conf文件中修改。
二、 移植
参考高通文档“80-N7635-1_E_Snapdragon_Sensors_Core_New_Sensor_Driver_Integration_LA.pdf”
1. Add the entry function for the new driver in adsp_proc\sensors\dd\qcom\inc\sns_dd.h:
extern sns_ddf_driver_if_s sns_als_tsl2581_driver_fn_list;
2. Add the new driver files in adsp_proc\sensors\dd\qcom\src in the ADSP build
sns_dd_als_tsl2581.h
sns_dd_als_tsl2581.c
3. update the adsp_proc\sensors\dd\qcom\build\dd_qcom.scons file;
"${BUILDPATH}/sns_dd_als_tsl2581.c",
4. Configure Sensors.scons to compile the new files. To include the driver, in adsp_proc\sensors\build\Sensors.scons, add:
env.Append(CPPDEFINES = ["CONFIG_SUPPORT_TSL2581"])
5.Update the sns_reg_common.h files on both the ADSP and APSS builds to add UUID:
UUID可以使用在终端使用命令生成:uuidgen
ADSP – adsp_proc\Sensors\common\inc\sns_reg_common.h
APSS – android\vendor\qcom\proprietary\sensors\dsps\sensordaemon\c
8926平台的sensor架构与之前的平台完全不同,实际上已经脱离了linux。此平台所有的sensor由adsp芯片控制,代码在modem端,编译和烧录也完全不同,下面以TSL2581为例进行说明。
一、 驱动
集成光传感器TSL2581
1. 驱动程序结构可以参考高通默认的光感驱动文件sns_dd_als_bh1721.c或sns_dd_als_max44009.c或sns_dd_alsprx_tmd277x.c,主要是填充结构体 sns_ddf_driver_if_s;其成员:
init,
reset,
get_data,
set_attrib,
get_attrib,
必须填充,因为sns_smgr_dd_init()对这它们进行检查;
另外probe成员也要填充,因为sns_smgr_parse_reg_devinfo_resp()中代码逻辑有问题,当probe为NULL时,只会填充第一个此类型的sensor的配置。
2. 寄存器配置,电路参考设计要查看 TSL2581的数据手册;
3. TSL2581 和 TMD277X都是TAOS公司的,参考它写最好。如果可以从fae获取驱动代码更好,基本不需要修改,改正编译错误之后就可以使用。
由于芯片在电路板的方向不同,G-sensor,gyro和compass需要调换x、y、z轴的映射,只需在sensor_def_qcomdev.conf文件中修改。
二、 移植
参考高通文档“80-N7635-1_E_Snapdragon_Sensors_Core_New_Sensor_Driver_Integration_LA.pdf”
1. Add the entry function for the new driver in adsp_proc\sensors\dd\qcom\inc\sns_dd.h:
extern sns_ddf_driver_if_s sns_als_tsl2581_driver_fn_list;
2. Add the new driver files in adsp_proc\sensors\dd\qcom\src in the ADSP build
sns_dd_als_tsl2581.h
sns_dd_als_tsl2581.c
3. update the adsp_proc\sensors\dd\qcom\build\dd_qcom.scons file;
"${BUILDPATH}/sns_dd_als_tsl2581.c",
4. Configure Sensors.scons to compile the new files. To include the driver, in adsp_proc\sensors\build\Sensors.scons, add:
env.Append(CPPDEFINES = ["CONFIG_SUPPORT_TSL2581"])
5.Update the sns_reg_common.h files on both the ADSP and APSS builds to add UUID:
UUID可以使用在终端使用命令生成:uuidgen
ADSP – adsp_proc\Sensors\common\inc\sns_reg_common.h
APSS – android\vendor\qcom\proprietary\sensors\dsps\sensordaemon\c