您的位置:首页 > 移动开发 > Android开发

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

2016-07-15 13:57 633 查看
简介:

描述调试光感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的值会发现变化,表示驱动已经正常工作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 光感 mtk8163