1. 将light-auto.c加入kernel编译(路径自行定义即可)
2. 配置dts:
light_auto: light-auto {
compatible = "light-auto";
io-channels = <&saradc 0>; //第一个参数是引用的iio设备,第二个参数是该设备的通道号,根据实际情况填写
io-channel-names = "light"; //通道名称,用于驱动获取iio设备用
threshold-microvolt = <1800000>; //电压临界值,即无影响时的值,根据实际情况填写
poll-interval = <100>; //驱动轮询函数轮询间隔的时间,根据实际情况填写
};
3. 在device/rockchip/下配置对应的BoardConfig.mk(若已配置,忽略即可):
BOARD_LIGHT_SENSOR_SUPPORT := true
4. 在device/rockchip/下配置对应的mk文件,编译sensors模块(若已配置,忽略;该模块的版本可根据情况自行选择):
PRODUCT_PACKAGES += \
android.hardware.sensors@1.0-service \
android.hardware.sensors@1.0-impl \
sensors.$(TARGET_BOARD_HARDWARE)
注:
1. 第1、2步骤完成后,设备下生成/dev/lightsensor节点,使用getevent命令可以看到类似以下的打印:
add device 1: /dev/input/event4
name: "lightsensor-level"
2. 第3步骤完成后,设备vendor/etc/permissions/路径下生成android.hardware.sensor.light.xml文件
3. 第4步骤完成后,设备vendor路径下生成以下文件:
./etc/init/android.hardware.sensors@1.0-service.rc
./lib64/hw/android.hardware.sensors@1.0-impl.so
./lib64/hw/sensors.rk30board.so
./lib/hw/android.hardware.sensors@1.0-impl.so
./lib/hw/sensors.rk30board.so
./bin/hw/android.hardware.sensors@1.0-service
4. 此驱动仅用作演示用,不作为最终结果,最终仍需根据实际情况自行调整优化!