核心驅動程式 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 - 觸發距離事件的閾值水平。