内核驱动 bh1770glc¶
支持的芯片
ROHM BH1770GLC
OSRAM SFH7770
数据手册:不可免费获取
作者:Samu Onkalo <samu.p.onkalo@nokia.com>
描述¶
BH1770GLC 和 SFH7770 是环境光和接近传感器的组合。ALS 和接近部分各自独立工作,但它们共享通用的 I2C 接口和中断逻辑。原则上,它们可以独立运行,但 ALS 侧的结果用于估计接近传感器的可靠性。
ALS 产生 16 位勒克斯值。该芯片包含中断逻辑,以产生低阈值和高阈值中断。
接近部分包含高达 3 个 IR LED 的 IR-LED 驱动器。该芯片测量反射的 IR 光量并产生接近结果。分辨率为 8 位。驱动程序仅支持一个通道。驱动程序使用 ALS 结果来估计接近结果的可靠性。因此,在需要接近检测时,ALS 始终在运行。
驱动程序使用阈值中断来避免轮询值。芯片中不存在接近低中断。这是通过使用延迟工作来模拟的。只要存在高于中断的接近阈值,延迟工作就会被向前推进。因此,当接近级别低于阈值时,没有中断,延迟工作最终将运行。这被视为无接近指示。
当在配置中启用时,芯片状态通过运行时 pm 框架控制。
校准比例因子用于隐藏芯片之间的差异。默认情况下,值设置为中性状态,表示因子为 1.00。要获得正确的值,需要校准的光源作为参考。设置校准比例因子,使测量产生大约预期的勒克斯值。
SYSFS¶
- chip_id
RO - 显示检测到的芯片类型和版本
- power_state
RW - 启用/禁用芯片
使用计数逻辑
1 启用芯片
0 禁用芯片
- lux0_input
RO - 测量的勒克斯值
当发生阈值中断时调用 sysfs_notify
- lux0_sensor_range
RO - lux0_input 最大值
- lux0_rate
RW - 测量速率,单位为 Hz
- lux0_rate_avail
RO - 支持的测量速率
- lux0_thresh_above_value
RW - HI 级别阈值
所有高于该值的结果都会触发中断。65535(即 sensor_range)禁用上述中断。
- lux0_thresh_below_value
RW - LO 级别阈值
所有低于该值的结果都会触发中断。0 禁用以下中断。
- lux0_calibscale
RW - 校准值
默认设置为中性值。输出结果乘以 calibscale / calibscale_default 值。
- lux0_calibscale_default
RO - 中性校准值
- prox0_raw
RO - 测量的接近值
当发生阈值中断时调用 sysfs_notify
- prox0_sensor_range
RO - prox0_raw 最大值
- prox0_raw_en
RW - 启用/禁用接近
使用计数逻辑
1 启用接近
0 禁用接近
- prox0_thresh_above_count
RW - 触发事件之前需要的接近中断次数
- prox0_rate_above
RW - 当级别高于阈值时(即报告接近开启时)的测量速率(单位为 Hz)。
- prox0_rate_below
RW - 当级别低于阈值时(即报告接近关闭时)的测量速率(单位为 Hz)。
- prox0_rate_avail
RO - 支持的接近测量速率,单位为 Hz
- prox0_thresh_above0_value
RW - 触发接近事件的阈值级别。
通过持久性过滤器过滤 (prox0_thresh_above_count)
- prox0_thresh_above1_value
RW - 立即触发事件的阈值级别