Kernel driver w83791d¶
支援的晶片
Winbond W83791D
字首: ‘w83791d’
掃描地址: I2C 0x2c - 0x2f
資料手冊: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83791D_W83791Gb.pdf
作者: Charles Spirakis <bezaur@gmail.com>
此驅動程式派生自 w83781d.c 和 w83792d.c 原始碼檔案。
致謝
w83781d.c
Frodo Looijaard <frodol@dds.nl>,
Philip Edelbrock <phil@netroedge.com>,
Mark Studebaker <mdsxyz123@yahoo.com>
w83792d.c
Shane Huang (Winbond),
Rudolf Marek <r.marek@assembler.cz>
其他貢獻者
Sven Anders <anders@anduras.de>
Marc Hulsman <m.hulsman@tudelft.nl>
模組引數¶
- init boolean
(預設 0)
使用 ‘init=1’ 使驅動程式執行額外的軟體初始化。預設行為是執行儘可能少的初始化,並依靠 BIOS 正確設定晶片。如果您知道您有一個 w83791d 並且遇到問題,請在嘗試 reset=1 之前嘗試 init=1。
- reset boolean
(預設 0)
使用 ‘reset=1’ 重置晶片(透過索引 0x40,位 7)。預設行為是不重置晶片以保留 BIOS 設定。
- force_subclients=bus,caddr,saddr,saddr
用於強制特定晶片的子客戶端的 i2c 地址。例如,使用 force_subclients=0,0x2f,0x4a,0x4b 將匯流排 0 上晶片 0x2f 的子客戶端強制到 i2c 地址 0x4a 和 0x4b。
描述¶
此驅動程式實現對 Winbond W83791D 晶片的支援。 W83791G 晶片似乎與 W83791D 相同,但無鉛。
晶片的檢測有時可能會失敗,因為它可能處於不允許乾淨訪問的內部狀態(當前未選擇帶有 ID 暫存器的 Bank)。如果您知道晶片的地址,請使用“force”引數;這將首先使其進入更良性的狀態。
該驅動程式實現三個溫度感測器、十個電壓感測器、五個風扇轉速感測器和每個風扇的手動 PWM 控制。
溫度以攝氏度為單位測量,temp1 的測量解析度為 1 攝氏度,temp2 和 temp3 的測量解析度為 0.5 攝氏度。當溫度高於過溫關斷值時,會觸發警報;它會一直保持開啟狀態,直到溫度降至遲滯值以下。
電壓感測器(也稱為 IN 感測器)以毫伏為單位報告其值。如果電壓超過可程式設計的最小或最大限制,則會觸發警報。
風扇轉速以 RPM(每分鐘轉數)報告。如果轉速降至可程式設計限制以下,則會觸發警報。風扇讀數可以被可程式設計分頻器(所有風扇的 1、2、4、8、16、32、64 或 128)分割,以使讀數具有更大的範圍或準確性。
每個受控風扇都由 PWM 控制。可以單獨讀取和設定每個風扇的 PWM 佔空比。有效值範圍為 0(停止)到 255(全速)。 PWM 1-3 支援 Thermal Cruise 模式,在該模式下,PWM 會自動調節以使 temp 1-3 分別保持在特定的目標溫度。有關 sysfs 介面的描述,請參見下文。
w83791d 有一個全域性位,用於啟用在觸發警報時揚聲器發出蜂鳴聲,以及一個位掩碼,用於啟用或停用特定警報的蜂鳴聲。您需要同時啟用全域性蜂鳴聲啟用位和相應的蜂鳴聲位,才能使觸發的警報發出蜂鳴聲。
全域性啟用的 sysfs 介面是透過 sysfs beep_enable 檔案。此檔案用於傳統程式碼和新程式碼。
蜂鳴聲位掩碼的 sysfs 介面已從單個 sysfs beep_mask 檔案的原始傳統方法遷移到使用多個 *_beep 檔案的新方法,如 sysfs 檔案的命名和資料格式標準 中所述。
警報對應的點陣圖也發生了類似的更改。原始的傳統方法使用包含觸發警報點陣圖的單個 sysfs alarms 檔案。較新的方法使用多個 sysfs *_alarm 檔案(再次遵循 sysfs-interface 中描述的模式)。
由於這兩種方法都讀取和寫入底層硬體,因此可以互換使用它們,並且一種方法的更改會自動反映在另一種方法中。如果您使用傳統的位掩碼方法,則您的使用者空間程式碼負責處理 alarms 和 beep_mask 點陣圖不相同的事實(請參見下表)。
注意:所有新程式碼都應編寫為使用較新的 sysfs 介面規範,因為這樣可以避免點陣圖問題,並且是將來首選的介面。
驅動程式最多每三秒鐘讀取一次硬體晶片值。更頻繁地請求值的使用者模式程式碼將收到快取的值。
/sys 檔案¶
sysfs 介面記錄在“sysfs-interface”檔案中。此處僅記錄晶片特定的選項。
pwm[1-3]_enable |
此檔案控制風扇/溫度控制模式,適用於風扇 1-3。風扇/PWM 4-5 僅支援手動模式。
|
temp[1-3]_target |
定義熱巡航模式的目標溫度。單位:千分之一攝氏度 RW |
temp[1-3]_tolerance |
熱巡航模式的溫度容差。指定目標溫度周圍的一個間隔,在該間隔內風扇速度不會改變。單位:千分之一攝氏度 RW |
警報點陣圖 vs. beep_mask 位掩碼¶
對於使用 alarms 和 beep_mask 檔案的傳統程式碼
訊號 |
警報 |
beep_mask |
Obs |
|---|---|---|---|
in0 (VCORE) |
0x000001 |
0x000001 |
|
in1 (VINR0) |
0x000002 |
0x002000 |
<== 不匹配 |
in2 (+3.3VIN) |
0x000004 |
0x000004 |
|
in3 (5VDD) |
0x000008 |
0x000008 |
|
in4 (+12VIN) |
0x000100 |
0x000100 |
|
in5 (-12VIN) |
0x000200 |
0x000200 |
|
in6 (-5VIN) |
0x000400 |
0x000400 |
|
in7 (VSB) |
0x080000 |
0x010000 |
<== 不匹配 |
in8 (VBAT) |
0x100000 |
0x020000 |
<== 不匹配 |
in9 (VINR1) |
0x004000 |
0x004000 |
|
temp1 |
0x000010 |
0x000010 |
|
temp2 |
0x000020 |
0x000020 |
|
temp3 |
0x002000 |
0x000002 |
<== 不匹配 |
fan1 |
0x000040 |
0x000040 |
|
fan2 |
0x000080 |
0x000080 |
|
fan3 |
0x000800 |
0x000800 |
|
fan4 |
0x200000 |
0x200000 |
|
fan5 |
0x400000 |
0x400000 |
|
tart1 |
0x010000 |
0x040000 |
<== 不匹配 |
tart2 |
0x020000 |
0x080000 |
<== 不匹配 |
tart3 |
0x040000 |
0x100000 |
<== 不匹配 |
case_open |
0x001000 |
0x001000 |
|
global_enable |
0x800000 |
(透過 beep_enable 修改) |