MT8163 Android 6.0 调试光感IC(STK3310)总结

简介:
描述调试光感IC stk3310的过程。
调试硬件平台:MT8163
调试软件平台:Android6.0

总修改文件:
project 为工程的名称

arch/arm64/boot/dts/project.dts
 device/pskyed/project/ProjectConfig.mk
kernel-3.18/drivers/misc/mediatek/alsps/Kconfig
kernel-3.18/arch/arm64/configs/project_defconfig
 device/pskyed/project/ProjectConfig.mk
device/pskyed/project/overlay/frameworks/base/core/res/res/values/config.xml

一驱动程序的调试和分析
增加驱动文件
在kernel-3.18\drivers\misc\mediatek\alsps\ 目录下
增加
stk3x1x 的驱动文件,这个驱动文件可以从其他调试好的BSP中获取,也可以从供应商获取。

增加编译项
kernel-3.18\drivers\misc\mediatek\alsps\Kconfig 增加:
source “drivers/misc/mediatek/alsps/stk3x1x/Kconfig”
kernel-3.18\drivers\misc\mediatek\alsps\Makefile 增加:
obj-$(CONFIG_MTK_STK3X1X) += stk3x1x/
arch/arm64/configs/project_defconfig 增加编译宏:

  CONFIG_CUSTOM_KERNEL_ALSPS=y
CONFIG_MTK_STK3X1X=y 

这样驱动就会被编译进内核。

Dts配置I2C device
目录:
arch/arm64/boot/dts/project.dts
在&i2c2 { 中增加:

      alsps@48{
         compatible = "mediatek,alsps";
         reg = <0x48>;
         interrupt-parent = <&pio>;
         interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
         int-gpio = <&pio 30 0>;
         status = "okay";
};  

在现有的Dts的架构下,device “alsps”会被创建。Driver中必须对应是“alsps”。
I2c地址为:0x48;
可以在设备上看到以下设备:/sys/bus/i2c/devices/3-0048
增加:

   cust_alsps@0 {
               compatible = "mediatek,stk3x1x";
               i2c_num = <2>;
               i2c_addr = <0x48 0x48 0x78 0x00>;
               polling_mode_ps = <1>;
               polling_mode_als = <1>;
               power_id = <0xffff>;
               power_vol = <0>;
               als_level = <5 10 25 50 100 150 200 400 1000 1500 2000 3000 5000 8000 10000>;
               als_value = <10 50 100 150 200 250 280 280 1600 1600 1600 6000 6000 9000 10240 10240>;
               ps_threshold_high = <120>;
               ps_threshold_low = <100>;
               is_batch_supported_ps = <0>;
               is_batch_supported_als = <0>;
       };

以上信息 stk3x1x的驱动会读取硬件配置信息。
二、HAL层的添加
2.1
修改目录:
device/pskyed/project/ProjectConfig.mk
CUSTOM_KERNEL_ALSPS = stk3x1x

此处的CUSTOM_KERNEL_ALSPS 只要有值即可。
可以查看
vendor/mediatek/proprietary/hardware/sensor/
下的代码,

if defined(CUSTOM_KERNEL_ALSPS) || defined(CUSTOM_KERNEL_ALS)

因此CUSTOM_KERNEL_ALSPS 只要不为空即加上了光感的中间层的函数。

三、应用层开关的添加
3.1 修改如下文件:
目录:
device/pskyed/project/overlay/frameworks/base/core/res/res/values/config.xml
修改如下:
true
改为 true之后在界面上就会有自动背光的选项。
此时点开自动背光,程序才会调用到驱动中的enable函数,从而开启背光的定时器线程。

调试小技巧:
遇到的问题是驱动probe成功了,节点也有了,但是不知道是否初始化OK了。
解决办法:1.adb连上机器,
切到目录:/sys/bus/platform/drivers/als_ps
查看 所以的寄存器:cat allreg
cat allreg
第一个寄存器是sensor的开关,默认自动感光是关闭的。
敲入命令: echo 00 03 > allreg
会打开感光sensor,
此时读取 als的值会发现变化,表示驱动已经正常工作。

猜你喜欢

转载自blog.csdn.net/zhenglie110/article/details/51914967
今日推荐