Skip to content

Feature/ite boards voltage scaling - #53

Merged
eous merged 3 commits into
mainfrom
feature/ite-boards-voltage-scaling
Mar 31, 2026
Merged

eous merged 3 commits into
mainfrom
feature/ite-boards-voltage-scaling

Conversation

@eous

@eous eous commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

No description provided.

eous added 2 commits March 30, 2026 19:04
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
Copilot AI review requested due to automatic review settings March 31, 2026 02:06

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread src/db/boards/mod.rs Outdated
Comment thread src/db/sensor_labels.rs
Comment thread src/sensors/superio/ite87xx.rs Outdated
Comment thread src/sensors/superio/ite87xx.rs
- 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
@eous
eous merged commit 54fd5b2 into main Mar 31, 2026
6 checks passed
@eous
eous deleted the feature/ite-boards-voltage-scaling branch March 31, 2026 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants