核心驅動 lm93¶
支援的晶片
National Semiconductor LM93
字首 'lm93'
掃描地址: I2C 0x2c-0x2e
National Semiconductor LM94
字首 'lm94'
掃描地址: I2C 0x2c-0x2e
- 作者
Mark M. Hoffman <mhoffman@lightlink.com>
移植到 2.6 由 Eric J. Bowersox <ericb@aspsys.com>
修改以適應 2.6.20 由 Carsten Emde <ce@osadl.org>
為主線整合而修改 由 Hans J. Koch <hjk@hansjkoch.de>
模組引數¶
init: 整型 設定為非零值以強制進行某些初始化 (預設值為 0)。
disable_block: 整型 “0”允許 SMBus 塊資料事務(如果主機支援)。“1”停用 SMBus 塊資料事務。預設值為 0。
vccp_limit_type: 整型陣列 (2) 配置 in7 和 in8 的限制類型,其中 0 表示絕對值,非零表示相對值。此處的“相對值”指資料手冊中的“使用 VID 的動態 Vccp 監控”。這大大簡化了介面,允許一次只使用一組限制(絕對或相對),儘管硬體能夠同時啟用兩者。無論如何,同時啟用兩者並沒有一個令人信服的使用場景。預設值為 “0,0”。
vid_agtl: 整型 “0”配置 VID 引腳,使其 V(ih) = 最小 2.1V,V(il) = 最大 0.8V。“1”配置 VID 引腳,使其 V(ih) = 最小 0.8V,V(il) = 最大 0.4V。(後者在資料手冊中稱為 AGTL+ 相容模式。) 即,此引數控制 VID 引腳輸入閾值;如果您的 VID 輸入不工作,請嘗試更改此值。預設值為 “0”。
硬體描述¶
(摘自資料手冊)
LM93 硬體監控器具有與 SMBus 2.0 相容的兩線數字介面。LM93 使用 8 位 ADC 測量兩個遠端二極體連線電晶體的溫度、自身晶片溫度以及 16 路電源電壓。為了設定風扇速度,LM93 有兩個 PWM 輸出,每個輸出可由多達四個溫度區域控制。風扇控制演算法基於查詢表。LM93 包含一個數字濾波器,可用於平滑溫度讀數,從而更好地控制風扇速度。LM93 有四個轉速計輸入用於測量風扇速度。包含所有測量值的限值和狀態暫存器。LM93 建立在先前主機板管理 ASIC 的功能之上,並使用了 LM85 的一些特性(即智慧轉速計模式)。它還增加了對動態 Vccp 監控和 PROCHOT 的測量和控制支援。它旨在以最少的外部元件監控雙處理器 Xeon 級主機板。
LM94 也支援 LM93 相容模式。不支援 LM94 的額外感測器和功能。
使用者介面¶
#PROCHOT¶
LM93 可以監控兩個 #PROCHOT 訊號。結果可在 sysfs 檔案 prochot1、prochot2、prochot1_avg、prochot2_avg、prochot1_max 和 prochot2_max 中找到。prochot1_max 和 prochot2_max 分別包含 #PROCHOT1 和 #PROCHOT2 的使用者限制。prochot1 和 prochot2 包含最近完整時間間隔的當前讀數。prochot1_avg 和 prochot2_avg 的值類似於一個 2 週期指數移動平均值(但不完全是——請查閱資料手冊)。請注意,這第三個值是由晶片本身計算的。所有值的範圍為 0-255,其中 0 表示未限流,255 表示 > 99.6%。
兩個 #PROCHOT 訊號的監控間隔也是可配置的。這些間隔可在 sysfs 檔案 prochot1_interval 和 prochot2_interval 中找到。這些檔案中的值分別指定了 #P1_PROCHOT 和 #P2_PROCHOT 的間隔。選擇此列表中不存在的值將導致驅動程式使用下一個最大的間隔。可用間隔為 (秒)
- #PROCHOT 間隔
0.73, 1.46, 2.9, 5.8, 11.7, 23.3, 46.6, 93.2, 186, 372
可以將 LM93 配置為邏輯上短接兩個 #PROCHOT 訊號。即,當 #P1_PROCHOT 被置位時,LM93 將自動置位 #P2_PROCHOT,反之亦然。透過向 sysfs 檔案 prochot_short 寫入非零整數可以啟用此模式。
LM93 還可以透過向一個或兩個 #PROCHOT 引腳驅動 PWM 訊號來覆蓋它們。當被覆蓋時,該訊號週期為 3.56 毫秒,最小脈衝寬度為 5 個時鐘週期 (22.5kHz 時 => 6.25% 佔空比),最大脈衝寬度為 80 個時鐘週期 (22.5kHz 時 => 99.88% 佔空比)。
sysfs 檔案 prochot1_override 和 prochot2_override 包含布林整型值,分別用於啟用或停用 #P1_PROCHOT 和 #P2_PROCHOT 的覆蓋功能。sysfs 檔案 prochot_override_duty_cycle 包含一個值,用於控制啟用覆蓋功能時使用的 PWM 訊號的佔空比。該值範圍為 0 到 15,其中 0 表示最小佔空比,15 表示最大佔空比。
#VRD_HOT¶
LM93 可以監控兩個 #VRD_HOT 訊號。結果可在 sysfs 檔案 vrdhot1 和 vrdhot2 中找到。每個檔案包含一個值:一個布林值,其中 1 表示 #VRD_HOT 被置位,0 表示它被複位。這些檔案是隻讀的。
智慧轉速計模式 (摘自資料手冊)
If a fan is driven using a low-side drive PWM, the tachometer
output of the fan is corrupted. The LM93 includes smart tachometer
circuitry that allows an accurate tachometer reading to be
achieved despite the signal corruption. In smart tach mode all
four signals are measured within 4 seconds.
透過向 sysfs 檔案 fan<n>_smart_tach 寫入 1 或 2(將風扇轉速計與 PWM 關聯)來啟用智慧轉速計模式。寫入零將停用該風扇的功能。請注意,如果 PWM 輸出頻率為 22500 Hz,則無法啟用智慧轉速計模式(參見下文)。
手動 PWM¶
LM93 的兩個 PWM 輸出具有固定或覆蓋模式(儘管仍然存在一些條件會覆蓋此模式——詳見資料手冊第 15.10.6 節)。sysfs 檔案 pwm1_override 和 pwm2_override 用於啟用此模式;每個都是一個布林整型值,其中 0 停用手動控制模式,1 啟用手動控制模式。sysfs 檔案 pwm1 和 pwm2 用於設定手動佔空比;每個都是一個整數 (0-255),其中 0 表示 0% 佔空比,255 表示 100% 佔空比。請注意,佔空比值受硬體限制。選擇一個不可用的值將導致驅動程式使用下一個最大的值。另請注意:當手動 PWM 模式停用時,pwm1 和 pwm2 的值表示由硬體選擇的當前佔空比。
PWM 輸出頻率¶
LM93 支援 PWM 輸出通道的多種不同頻率。sysfs 檔案 pwm1_freq 和 pwm2_freq 用於選擇頻率。頻率值受硬體限制。選擇一個不可用的值將導致驅動程式使用下一個最大的值。另請注意,此引數對智慧轉速計模式有影響(參見上文)。
- PWM 輸出頻率 (Hz)
12, 36, 48, 60, 72, 84, 96, 22500 (預設)
自動 PWM¶
LM93 能夠進行復雜的自動風扇控制,具有許多不同的配置點。首先,每個 PWM 輸出可以繫結到八個控制源的任意組合。最終的 PWM 是 PWM 輸出所繫結到的所有單個控制源中最大的一個。
八個控制源包括:temp1-temp4(在資料手冊中也稱為“區域”)、#PROCHOT 1 和 2,以及 #VRDHOT 1 和 2。繫結在 sysfs 檔案 pwm<n>_auto_channels 中以位掩碼形式表示,其中“1”啟用繫結,“0”停用繫結。硬體預設值為 0x0f(所有溫度繫結)。
0x01
溫度 1
0x02
溫度 2
0x04
溫度 3
0x08
溫度 4
0x10
#PROCHOT 1
0x20
#PROCHOT 2
0x40
#VRDHOT 1
0x80
#VRDHOT 2
函式 y = f(x) 將源溫度 x 轉換為 PWM 輸出 y。LM93 的此功能源自一個基礎溫度和包含 12 個溫度偏移量的表。基礎溫度在 sysfs 檔案 temp<n>_auto_base 中以攝氏度表示。偏移量以累積攝氏度表示,溫度值 <n> 的偏移量 <i> 的值包含在檔案 temp<n>_auto_offset<i> 中。例如,如果基礎溫度是 40C
偏移量 #
temp<n>_auto_offset<i>
範圍
PWM
1
0
25.00%
2
0
28.57%
3
1
40C - 41C
32.14%
4
1
41C - 42C
35.71%
5
2
42C - 44C
39.29%
6
2
44C - 46C
42.86%
7
2
48C - 50C
46.43%
8
2
50C - 52C
50.00%
9
2
52C - 54C
53.57%
10
2
54C - 56C
57.14%
11
2
56C - 58C
71.43%
12
2
58C - 60C
85.71%
> 60C
100.00%
有效偏移量範圍為 0C <= x <= 7.5C,以 0.5C 遞增。
每個溫度通道都有一個獨立的基礎溫度。然而,請注意,只有兩個偏移量表:一個用於 temp[12],另一個用於 temp[34]。因此,對例如 temp1_auto_offset<i> 的任何更改也將影響 temp2_auto_offset<i>。
LM93 還可以對偏移量表應用滯後,以防止偏移量表中兩個步長之間出現不必要的振盪。這些值可在 sysfs 檔案 temp<n>_auto_offset_hyst 中找到。此檔案中的值與 temp<n>_auto_offset<i> 中的表示相同。
如果溫度讀數低於該通道的基礎值,LM93 將使用最小 PWM 值。這些值可在 sysfs 檔案 temp<n>_auto_pwm_min 中找到。請注意,只有兩個最小值:一個用於 temp[12],另一個用於 temp[34]。因此,對例如 temp1_auto_pwm_min 的任何更改也將影響 temp2_auto_pwm_min。
PWM 啟動週期¶
當 PWM 輸出從 0% 佔空比命令到某個 > 0% 的值時,就會發生啟動週期。LM93 支援在啟動期間的最小佔空比。這些值可在 sysfs 檔案 pwm<n>_auto_spinup_min 中找到。此檔案中的值與其他 PWM 佔空比值的表示相同。啟動週期的持續時間也是可配置的。這些值可在 sysfs 檔案 pwm<n>_auto_spinup_time 中找到。此檔案中的值為啟動時間(秒)。可用的啟動時間受硬體限制。選擇一個不可用的值將導致驅動程式使用下一個最大的值。
- 啟動持續時間
0 (停用,硬體預設), 0.1, 0.25, 0.4, 0.7, 1.0, 2.0, 4.0
#PROCHOT 和 #VRDHOT PWM 斜坡上升¶
如果 #PROCHOT 或 #VRDHOT 訊號在繫結到 PWM 輸出通道時被置位,LM93 將以離散步進方式將 PWM 輸出斜坡上升至 100% 佔空比。每個步進的持續時間是可配置的。有兩個檔案,每個檔案都包含一個以秒為單位的值:pwm_auto_prochot_ramp 和 pwm_auto_vrdhot_ramp。可用的斜坡上升時間受硬體限制。選擇一個不可用的值將導致驅動程式使用下一個最大的值。
- 斜坡上升時間
0 (停用,硬體預設) 到 0.75,以 0.05 秒為間隔
風扇加速¶
對於每個溫度通道,都有一個加速溫度:如果通道超過此限制,LM93 將立即將兩個 PWM 輸出驅動到 100%。此限制在 sysfs 檔案 temp<n>_auto_boost 中以攝氏度表示。此功能還有一個滯後溫度:達到加速限制後,溫度通道必須下降到此值以下,加速功能才會停用。此溫度也在 sysfs 檔案 temp<n>_auto_boost_hyst 中以攝氏度表示。
GPIO 引腳¶
LM93 可以監控四個專用 GPIO 引腳以及四個轉速輸入引腳的邏輯電平。GPIO0-GPIO3 分別對應 (風扇) 轉速計 1-4。透過讀取 sysfs 檔案 gpio 中的位掩碼來讀取所有八個 GPIO。最低有效位 (LSB) 是 GPIO0,最高有效位 (MSB) 是 GPIO7。
LM93 特有的 sysfs 檔案¶
檔案 |
描述 |
|---|---|
prochot<n> |
當前 #PROCHOT % |
prochot<n>_avg |
移動平均 #PROCHOT % |
prochot<n>_max |
限制 #PROCHOT % |
prochot_short |
啟用或停用邏輯 #PROCHOT 引腳短接 |
prochot<n>_override |
強制將 #PROCHOT 置位為 PWM |
prochot_override_duty_cycle |
當 #PROCHOT 被覆蓋時使用的 PWM 訊號的佔空比 |
prochot<n>_interval |
#PROCHOT PWM 取樣間隔 |
vrdhot<n> |
0 表示復位,1 表示置位 |
fan<n>_smart_tach |
啟用或停用智慧轉速計模式 |
pwm<n>_auto_channels |
選擇 PWM 輸出的控制源 |
pwm<n>_auto_spinup_min |
啟動期間的最小佔空比 |
pwm<n>_auto_spinup_time |
啟動持續時間 |
pwm_auto_prochot_ramp |
當 #PROCHOT 置位時每步的斜坡上升時間 |
pwm_auto_vrdhot_ramp |
當 #VRDHOT 置位時每步的斜坡上升時間 |
temp<n>_auto_base |
溫度通道基礎值 |
temp<n>_auto_offset[1-12] |
溫度通道偏移量 |
temp<n>_auto_offset_hyst |
溫度通道偏移量滯後 |
temp<n>_auto_boost |
溫度通道加速 (PWM 至 100%) 限制 |
temp<n>_auto_boost_hyst |
溫度通道加速滯後 |
gpio |
8 個 GPIO 引腳的輸入狀態;只讀 |