内核驱动程序 apds990x

支持的芯片:Avago APDS990X

数据手册:不公开

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

描述

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

ALS 为两个通道生成原始测量值:清晰通道(红外 + 可见光)和仅红外通道。但是,阈值比较仅使用清晰通道进行。硬件上的 Lux 值和阈值水平可能因光源光谱的不同而有很大差异。

驱动程序进行必要的双向转换,以便用户只需处理 Lux 值。Lux 值是利用两个通道的信息计算得出的。硬件阈值水平根据给定的 Lux 值计算,以匹配当前照明类型。有时估算的不准确会导致错误的L中断,但这无害。

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

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

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

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

SYSFS

chip_id

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

power_state

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

1 启用芯片,0 禁用芯片

lux0_input

RO - 测量的 Lux 值

当阈值中断发生时调用 sysfs_notify

lux0_sensor_range

RO - lux0_input 最大值。

实际上永远达不到,因为传感器在此之前就会饱和。真实的最大值会因光线光谱等因素而异。

lux0_rate

RW - 测量速率,单位 Hz

lux0_rate_avail

RO - 支持的测量速率

lux0_calibscale

RW - 校准值。

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

lux0_calibscale_default

RO - 中性校准值

lux0_thresh_above_value

RW - 高水平阈值。

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

lux0_thresh_below_value

RW - 低水平阈值。

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

prox0_raw

RO - 测量的距离值

当阈值中断发生时调用 sysfs_notify

prox0_sensor_range

RO - prox0_raw 最大值 (1023)

prox0_raw_en

RW - 启用/禁用距离 - 使用计数逻辑

  • 1 启用距离

  • 0 禁用距离

prox0_reporting_mode

RW - 触发 / 周期性。

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

prox0_reporting_mode_avail

RO - prox0_reporting_mode 接受的值(trigger,periodic)

prox0_thresh_above_value

RW - 触发距离事件的阈值水平。