Feature/ite boards voltage scaling - #53
Merged
Merged
Conversation
Extend Super I/O chip detection and direct-IO sensor reading for 7 new ITE chip families commonly found on Gigabyte and ASUS motherboards. Detection: add device IDs including non-obvious IT8792E (0x8733) and IT87952E (0x8695). Direct-IO: per-chip ADC resolution (10.9/11/12 mV), per-chip fan/temp channel counts, register 0x77 check for shared temp/voltage registers, IT8665 fan 6 alternate register address, IT8613 fan 1 skip.
Add HwmonConfig struct with voltage_scaling field to BoardTemplate for
correcting hwmon voltage readings with external resistor divider
multipliers. Thread scaling from config through poller to hwmon source.
Users can override via [voltage_scaling] in config.toml.
Add 17 new board templates with sensor labels and voltage scaling:
- Gigabyte X870 (4 boards), X570 (2), B550 (2), B450 (2), B650M,
TRX40, Z690 with ITE chip labels from hardware documentation
- ASUS Prime B350/B450 with IT8655/IT8665 labels
- Beelink EQ/SEi mini-PCs with IT8613 labels
- Shared label/scaling constants to reduce duplication
Add match_vendor field to BoardTemplate (replaces match_any) for safer
board matching. Beelink boards require vendor "azw" to avoid false
positives from their short DMI names ("EQ", "SEi"). ASUS X670E boards
with OR-logic matching split into paired statics.
Add hwmon voltage scaling to existing NCT6798/6799 boards (WRX90E,
ASRock WRX90, X670E family) using multipliers validated against
LibreHardwareMonitor Ri/Rf resistor divider values.
Fix voltage_scaling.rs divider ratio comments (5:1 not 4:1 for +5V).
#33
There was a problem hiding this comment.
Pull request overview
Adds board-aware voltage scaling for hwmon voltage sensors and expands ITE Super I/O (IT86xx/IT87xx) support, improving correctness of reported rail voltages/temps/fans across more boards.
Changes:
- Add configurable + board-template-driven hwmon voltage scaling multipliers (config + DB + hwmon application).
- Expand ITE chip detection/support, including per-chip ADC resolution and shared temp/voltage register probing.
- Extend board database with many new Gigabyte/ASUS/AZW templates and refine matching with vendor constraints.
Reviewed changes
Copilot reviewed 50 out of 50 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/sensors/superio/ite87xx.rs | Broaden ITE chip support, add per-chip ADC resolution, shared temp/voltage probing, and fan register handling updates. |
| src/sensors/superio/chip_detect.rs | Add additional ITE chip IDs/variants and map them to the it87 kernel driver. |
| src/sensors/poller.rs | Thread voltage scaling map into hwmon discovery. |
| src/sensors/hwmon.rs | Accept voltage scaling map, expand it for disambiguated chips, and apply multipliers to voltage readings. |
| src/main.rs | Load voltage scaling from board DB + config and pass it into monitor/snapshot paths. |
| src/db/voltage_scaling.rs | Adjust divider documentation for ASUS WRX90E-SAGE board channels. |
| src/db/sensor_labels.rs | Add load_voltage_scaling to merge board scaling with user overrides. |
| src/db/boards/nvidia/thor/jetson_thor.rs | Update board matching fields and add empty hwmon config block. |
| src/db/boards/nvidia/gb10/dgx_spark.rs | Update board matching fields and add empty hwmon config block. |
| src/db/boards/mod.rs | Add match_vendor + HwmonConfig, provide common hwmon scaling constants, add board entries, and add voltage scaling resolver. |
| src/db/boards/gigabyte/z690/z690_pro.rs | Add Gigabyte Z690 AORUS PRO board template with labels + hwmon voltage scaling. |
| src/db/boards/gigabyte/z690/mod.rs | Export Gigabyte Z690 board module. |
| src/db/boards/gigabyte/x870/x870i_pro.rs | Add Gigabyte X870I board template using shared IT8696 labels/scaling. |
| src/db/boards/gigabyte/x870/x870e_master.rs | Add Gigabyte X870E MASTER board template using shared IT8696 labels/scaling. |
| src/db/boards/gigabyte/x870/x870_gaming.rs | Add Gigabyte X870 GAMING board template using shared IT8696 labels/scaling. |
| src/db/boards/gigabyte/x870/x870_eagle.rs | Add Gigabyte X870 EAGLE board template using shared IT8696 labels/scaling. |
| src/db/boards/gigabyte/x870/mod.rs | Export Gigabyte X870 board modules. |
| src/db/boards/gigabyte/x570/x570_pro.rs | Add Gigabyte X570 AORUS PRO board template using shared IT8688 labels/scaling (+ IT8792 labels). |
| src/db/boards/gigabyte/x570/x570_elite.rs | Add Gigabyte X570 AORUS ELITE board template using shared IT8688 labels/scaling. |
| src/db/boards/gigabyte/x570/mod.rs | Export Gigabyte X570 board modules. |
| src/db/boards/gigabyte/trx50/trx50_ai_top.rs | Update board matching fields and add empty hwmon config block. |
| src/db/boards/gigabyte/trx40/trx40_xtreme.rs | Add Gigabyte TRX40 XTREME board template with labels + hwmon voltage scaling. |
| src/db/boards/gigabyte/trx40/mod.rs | Export Gigabyte TRX40 board module. |
| src/db/boards/gigabyte/mod.rs | Export additional Gigabyte board families (b450/b550/b650/trx40/x570/x870/z690). |
| src/db/boards/gigabyte/b650/mod.rs | Export Gigabyte B650 board module. |
| src/db/boards/gigabyte/b650/b650m_d3hp.rs | Add Gigabyte B650M D3HP board template with labels + hwmon voltage scaling. |
| src/db/boards/gigabyte/b550/mod.rs | Export Gigabyte B550 board modules. |
| src/db/boards/gigabyte/b550/b550m_ds3h.rs | Add Gigabyte B550M DS3H board template with labels + hwmon voltage scaling. |
| src/db/boards/gigabyte/b550/b550_vision_d.rs | Add Gigabyte B550 VISION D board template using shared IT8688 labels (+ IT8792 labels) and scaling. |
| src/db/boards/gigabyte/b450/mod.rs | Export Gigabyte B450 board modules. |
| src/db/boards/gigabyte/b450/b450m_ds3h.rs | Add Gigabyte B450M DS3H board template with labels + hwmon voltage scaling. |
| src/db/boards/gigabyte/b450/b450_elite.rs | Add Gigabyte B450 AORUS ELITE board template with labels (+ IT8792) + hwmon voltage scaling. |
| src/db/boards/azw/mod.rs | Add AZW vendor board namespace. |
| src/db/boards/azw/mini_pc/mod.rs | Export AZW mini-PC board templates. |
| src/db/boards/azw/mini_pc/beelink_sei.rs | Add Beelink SEi template with vendor constraint and empty hwmon scaling. |
| src/db/boards/azw/mini_pc/beelink_eq.rs | Add Beelink EQ template with vendor constraint and empty hwmon scaling. |
| src/db/boards/asus/x670e/tuf_x670e.rs | Split TUF X670 vs B650 templates and add hwmon scaling constants. |
| src/db/boards/asus/x670e/strix_x670e.rs | Split STRIX X670 vs B650 templates and add hwmon scaling constants. |
| src/db/boards/asus/x670e/proart_x670e.rs | Update matching fields and add hwmon scaling constants. |
| src/db/boards/asus/x670e/prime_x670e.rs | Split PRIME X670 vs B650 templates and add hwmon scaling constants. |
| src/db/boards/asus/x670e/crosshair_x670e.rs | Update matching fields and add hwmon scaling constants. |
| src/db/boards/asus/wrx90/wrx90e_sage.rs | Update matching fields, adjust labels for +5V/+12V, and add hwmon scaling constants. |
| src/db/boards/asus/trx50/trx50_sage.rs | Update matching fields and add empty hwmon config block. |
| src/db/boards/asus/mod.rs | Export new ASUS AM4 board modules. |
| src/db/boards/asus/b450/prime_b450.rs | Add ASUS PRIME B450 board template with labels + hwmon voltage scaling. |
| src/db/boards/asus/b450/mod.rs | Export ASUS B450 module. |
| src/db/boards/asus/b350/prime_b350.rs | Add ASUS PRIME B350 board template with labels + hwmon voltage scaling. |
| src/db/boards/asus/b350/mod.rs | Export ASUS B350 module. |
| src/db/boards/asrock/wrx90/wrx90_ws_evo.rs | Update matching fields and add hwmon scaling constants for NCT6799. |
| src/config.rs | Add [voltage_scaling] config map and extend config parsing tests. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Fix test_no_ambiguous_matches to use lookup_board_with_vendor instead of reimplementing matching logic without vendor check - Add unit tests for load_voltage_scaling (board resolution, user override, unknown board) - Remove Vec allocation in read_fans hot path by iterating the chain directly instead of collecting - Format VOLTAGE_REGS_BASE as multi-line for consistency
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.