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