核心驅動 adm1026¶
- 支援的晶片
Analog Devices ADM1026
字首: ‘adm1026’
掃描地址: I2C 0x2c, 0x2d, 0x2e
資料手冊: 可在 Analog Devices 網站公開獲取
- 作者
Philip Pokorny <ppokorny@penguincomputing.com> for Penguin Computing
Justin Thiessen <jthiessen@penguincomputing.com>
模組引數¶
- gpio_input: int 陣列 (min = 1, max = 17)
要程式設計為輸入的 GPIO 引腳列表 (0-16)
- gpio_output: int 陣列 (min = 1, max = 17)
要程式設計為輸出的 GPIO 引腳列表 (0-16)
- gpio_inverted: int 陣列 (min = 1, max = 17)
要程式設計為反相的 GPIO 引腳列表 (0-16)
- gpio_normal: int 陣列 (min = 1, max = 17)
要程式設計為正常/非反相的 GPIO 引腳列表 (0-16)
- gpio_fan: int 陣列 (min = 1, max = 8)
要程式設計為風扇轉速計的 GPIO 引腳列表 (0-7)
描述¶
此驅動程式實現了對 Analog Devices ADM1026 的支援。 Analog Devices 稱其為 “完整的散熱系統管理控制器”。
ADM1026 實現了三個 (3) 溫度感測器、17 個電壓感測器、16 個通用數字 I/O 線、八個 (8) 風扇速度感測器 (8 位)、一個模擬輸出和一個 PWM 輸出,以及所有上述各項的限制、警報和遮蔽位。 晶片上甚至還有 8k 位元組的 EEPROM 儲存器。
溫度以攝氏度測量。 有兩個外部感測器輸入和一個內部感測器。 每個感測器都有一個高限和一個低限。 如果超過限制,則可以生成中斷 (#SMBALERT)。 中斷可以被遮蔽。 此外,每個感測器都有過溫限制。 如果超過此限制,#THERM 輸出將置位。 當前溫度和限制的解析度為 1 度。
風扇轉速以 RPM(每分鐘轉數)報告,但以 22.5kHz 內部時鐘的計數測量。 每個風扇都有一個上限,對應於最小風扇轉速。 如果超過限制,則可以生成中斷。 可以將每個風扇程式設計為將參考時鐘除以 1、2、4 或 8。並非所有 RPM 值都可以精確表示,因此會進行一些舍入。 使用 8 的分頻器,每個轉速兩個脈衝的風扇,可測量的最低速度為 661 RPM。
有 17 個電壓感測器。 如果電壓超過可程式設計的最小值或最大值限制,則會觸發警報。 請注意,在這種情況下,最小值始終表示“最接近零”;這對於負電壓測量很重要。 幾個輸入集成了衰減器,因此它們可以直接測量更高的電壓。 3.3V、5V、12V、-12V 和電池電壓都有專用輸入。 有幾個輸入被縮放為 0-3V 滿量程範圍,用於 SCSI 終端電源。 剩餘的輸入未縮放,具有 0-2.5V 滿量程範圍。 提供 2.5V 或 1.82V 參考電壓用於負電壓測量。
如果警報被觸發,它將保持觸發狀態,直到至少讀取一次硬體暫存器。 這意味著警報的原因可能已經消失! 請注意,在當前的實現中,只要讀取任何資料,就會讀取所有硬體暫存器(除非距離上次更新的時間少於 2.0 秒)。 這意味著您很容易錯過一次性警報。
ADM1026 連續測量。 模擬輸入大約每秒測量 4 次。 風扇速度測量時間取決於風扇速度和除數。 測量所有風扇速度可能需要長達 1.5 秒。
ADM1026 具有基於溫度感測器輸入自動控制風扇速度的能力。 PWM 輸出和 DAC 輸出都可用於控制風扇速度。 通常只會使用這兩個輸出中的一個。 將最小 PWM 或 DAC 值寫入相應的控制暫存器。 然後在每個溫度感測器的 tmin 值中設定低溫限制。 控制範圍固定為 20 °C,溫度感測器的當前值和 tmin 之間的最大差異設定控制輸出。 有關使用 PWM 和 DAC 輸出控制風扇速度的幾個示例電路,請參見資料手冊。 風扇速度感測器沒有 PWM 補償,因此最好從電源線而不是地線控制風扇電壓。
資料手冊顯示了一個示例應用程式,其中 VID 訊號連線到 GPIO 線。 遺憾的是,晶片可能不會以這種方式連線到 VID 線。 該驅動程式假設晶片 *確實* 以這種方式連線以獲得 VID 電壓。