内核驱动 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
读写 - 触发接近事件的阈值水平。