内核驱动 apds990x

支持的芯片:Avago APDS990X

数据手册:不免费提供

作者:Samu Onkalo <samu.p.onkalo@nokia.com>

描述

APDS990x 是一款组合的环境光和接近传感器。ALS 和接近功能高度关联。启用接近功能时,ALS 测量路径必须运行。

ALS 为两个通道生成原始测量值:透明通道(红外 + 可见光)和仅红外通道。但是,阈值比较仅使用透明通道进行。根据光源的光谱,照度值和硬件上的阈值水平可能会有很大差异。

驱动程序会对两个方向进行必要的转换,以便用户仅处理照度值。照度值是使用来自两个通道的信息计算的。硬件阈值水平是从给定的照度值计算出来的,以匹配当前类型的照明。有时,估计的不准确会导致误中断,但这没有害处。

ALS 包含 4 个不同的增益步长。驱动程序会自动选择合适的增益步长。每次测量后,都会估计结果的可靠性,并在必要时触发新的测量。

如果已知值,平台数据可以为转换公式提供调整后的值。否则,将使用传感器默认值。

接近侧稍微简单一些。无需复杂的转换。它直接产生可用的值。

驱动程序使用 pm_runtime 框架控制芯片的运行状态。稳压器根据芯片的运行状态进行控制。

SYSFS

chip_id

只读 - 显示检测到的芯片类型和版本

power_state

读写 - 启用/禁用芯片。使用计数逻辑

1 启用芯片,0 禁用芯片

lux0_input

只读 - 测量的照度值

发生阈值中断时调用 sysfs_notify

lux0_sensor_range

只读 - lux0_input 的最大值。

实际上永远不会达到,因为传感器往往在此之前饱和。实际最大值取决于光谱等。

lux0_rate

读写 - 测量速率(单位:Hz)

lux0_rate_avail

只读 - 支持的测量速率

lux0_calibscale

读写 - 校准值。

默认设置为中性值。输出结果乘以 calibscale / calibscale_default 值。

lux0_calibscale_default

只读 - 中性校准值

lux0_thresh_above_value

读写 - HI 电平阈值。

所有高于该值的结果都会触发中断。65535(即 sensor_range)禁用上述中断。

lux0_thresh_below_value

读写 - LO 电平阈值。

所有低于该值的结果都会触发中断。0 禁用以下中断。

prox0_raw

只读 - 测量的接近值

发生阈值中断时调用 sysfs_notify

prox0_sensor_range

只读 - prox0_raw 的最大值 (1023)

prox0_raw_en

读写 - 启用/禁用接近 - 使用计数逻辑

  • 1 启用接近

  • 0 禁用接近

prox0_reporting_mode

读写 - 触发/周期性。

在“触发”模式下,驱动程序会告知两个可能的值:0 或 prox0_sensor_range 值。0 表示没有接近,1023 表示接近。这将导致最少的中断次数。在“周期性”模式下,驱动程序会报告所有高于 prox0_thresh_above 的值。这会导致更多的中断,但它可以给出关于距离的_粗略_估计。

prox0_reporting_mode_avail

只读 - prox0_reporting_mode 的接受值(触发、周期性)

prox0_thresh_above_value

读写 - 触发接近事件的阈值水平。