← Documents Documentation/hwmon/adm1026.rst GitHub 원문 ↗

Linux 6.18.37 · Hardware Monitoring

Kernel driver adm1026

ADM1026의 GPIO, 온도·전압·fan 자원, 경보와 자동 fan control을 설명합니다.

Source pathDocumentation/hwmon/adm1026.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

adm1026.rst:1-101

종합 thermal controller의 module parameter, 28개 센서 채널, latch 경보와 온도 기반 PWM/DAC 제어를 다룹니다.

문서 개요
항목
SourceDocumentation/hwmon/adm1026.rst
분량101 source lines
Sensors3 temp + 17 voltage + 8 fan
ControlPWM 또는 DAC

원문과 핵심 지원 범위를 요약합니다.

핵심 흐름
GPIO 역할 지정센서와 경보 감시tmin 설정자동 fan output 계산

드라이버를 이해할 때의 주요 순서입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 Kernel driver adm1026
2 =====================
3
4 Supported chips:
5 * Analog Devices ADM1026
6
7 Prefix: 'adm1026'
8
9 Addresses scanned: I2C 0x2c, 0x2d, 0x2e
10
11 Datasheet: Publicly available at the Analog Devices website
12
13 https://www.onsemi.com/PowerSolutions/product.do?id=ADM1026
14
15 Authors:
16 - Philip Pokorny <[email protected]> for Penguin Computing
17 - Justin Thiessen <[email protected]>
18
19 Module Parameters
20 -----------------
21
22 * gpio_input: int array (min = 1, max = 17)
23 List of GPIO pins (0-16) to program as inputs
24
25 * gpio_output: int array (min = 1, max = 17)
26 List of GPIO pins (0-16) to program as outputs
27
28 * gpio_inverted: int array (min = 1, max = 17)
29 List of GPIO pins (0-16) to program as inverted
30
31 * gpio_normal: int array (min = 1, max = 17)
32 List of GPIO pins (0-16) to program as normal/non-inverted
33
34 * gpio_fan: int array (min = 1, max = 8)
35 List of GPIO pins (0-7) to program as fan tachs
36
37
38 Description
39 -----------
40
41 This driver implements support for the Analog Devices ADM1026. Analog
42 Devices calls it a "complete thermal system management controller."
43
44 The ADM1026 implements three (3) temperature sensors, 17 voltage sensors,
45 16 general purpose digital I/O lines, eight (8) fan speed sensors (8-bit),
46 an analog output and a PWM output along with limit, alarm and mask bits for
47 all of the above. There is even 8k bytes of EEPROM memory on chip.
48
49 Temperatures are measured in degrees Celsius. There are two external
50 sensor inputs and one internal sensor. Each sensor has a high and low
51 limit. If the limit is exceeded, an interrupt (#SMBALERT) can be
52 generated. The interrupts can be masked. In addition, there are over-temp
53 limits for each sensor. If this limit is exceeded, the #THERM output will
54 be asserted. The current temperature and limits have a resolution of 1
55 degree.
56
57 Fan rotation speeds are reported in RPM (rotations per minute) but measured
58 in counts of a 22.5kHz internal clock. Each fan has a high limit which
59 corresponds to a minimum fan speed. If the limit is exceeded, an interrupt
60 can be generated. Each fan can be programmed to divide the reference clock
61 by 1, 2, 4 or 8. Not all RPM values can accurately be represented, so some
62 rounding is done. With a divider of 8, the slowest measurable speed of a
63 two pulse per revolution fan is 661 RPM.
64
65 There are 17 voltage sensors. An alarm is triggered if the voltage has
66 crossed a programmable minimum or maximum limit. Note that minimum in this
67 case always means 'closest to zero'; this is important for negative voltage
68 measurements. Several inputs have integrated attenuators so they can measure
69 higher voltages directly. 3.3V, 5V, 12V, -12V and battery voltage all have
70 dedicated inputs. There are several inputs scaled to 0-3V full-scale range
71 for SCSI terminator power. The remaining inputs are not scaled and have
72 a 0-2.5V full-scale range. A 2.5V or 1.82V reference voltage is provided
73 for negative voltage measurements.
74
75 If an alarm triggers, it will remain triggered until the hardware register
76 is read at least once. This means that the cause for the alarm may already
77 have disappeared! Note that in the current implementation, all hardware
78 registers are read whenever any data is read (unless it is less than 2.0
79 seconds since the last update). This means that you can easily miss
80 once-only alarms.
81
82 The ADM1026 measures continuously. Analog inputs are measured about 4
83 times a second. Fan speed measurement time depends on fan speed and
84 divisor. It can take as long as 1.5 seconds to measure all fan speeds.
85
86 The ADM1026 has the ability to automatically control fan speed based on the
87 temperature sensor inputs. Both the PWM output and the DAC output can be
88 used to control fan speed. Usually only one of these two outputs will be
89 used. Write the minimum PWM or DAC value to the appropriate control
90 register. Then set the low temperature limit in the tmin values for each
91 temperature sensor. The range of control is fixed at 20 °C, and the
92 largest difference between current and tmin of the temperature sensors sets
93 the control output. See the datasheet for several example circuits for
94 controlling fan speed with the PWM and DAC outputs. The fan speed sensors
95 do not have PWM compensation, so it is probably best to control the fan
96 voltage from the power lead rather than on the ground lead.
97
98 The datasheet shows an example application with VID signals attached to
99 GPIO lines. Unfortunately, the chip may not be connected to the VID lines
100 in this way. The driver assumes that the chips *is* connected this way to
101 get a VID voltage.
102

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

지원 칩과 저자

1-18

이 드라이버는 Analog Devices `ADM1026`을 prefix `adm1026`으로 지원합니다. 자동 검색 주소는 I2C `0x2c`, `0x2d`, `0x2e`입니다.

데이터시트는 Analog Devices 웹사이트 및 문서에 적힌 onsemi URL `https://www.onsemi.com/PowerSolutions/product.do?id=ADM1026`에서 확인할 수 있습니다. 저자는 Penguin Computing의 Philip Pokorny와 Justin Thiessen입니다.

ADM1026 식별 정보
항목
Analog Devices ADM1026
Prefixadm1026
검색 주소0x2c, 0x2d, 0x2e
저자Philip Pokorny, Justin Thiessen

드라이버 결합에 필요한 기본 정보입니다.

ADM1026 검색
I2C 0x2c, 0x2d, 0x2e 검색ADM1026 identity 확인adm1026 driver 결합센서와 제어 자원 등록

지정된 세 주소에서 장치를 찾습니다.

Kernel driver adm1026
=====================

Supported chips:
  * Analog Devices ADM1026

    Prefix: 'adm1026'

    Addresses scanned: I2C 0x2c, 0x2d, 0x2e

    Datasheet: Publicly available at the Analog Devices website

               https://www.onsemi.com/PowerSolutions/product.do?id=ADM1026

Authors:
        - Philip Pokorny <[email protected]> for Penguin Computing
        - Justin Thiessen <[email protected]>

GPIO module parameter

19-43

`gpio_input`은 길이 1~17의 integer array이며 GPIO pin 0~16 중 input으로 설정할 pin 목록입니다. `gpio_output`은 같은 범위에서 output으로 설정할 pin 목록입니다.

`gpio_inverted`는 GPIO pin 0~16 중 논리를 inverted로 설정할 목록이고, `gpio_normal`은 normal 또는 non-inverted로 설정할 목록입니다. 두 parameter 모두 길이 1~17의 integer array입니다.

`gpio_fan`은 길이 1~8의 integer array이며 GPIO pin 0~7 중 fan tachometer로 설정할 pin 목록입니다.

Analog Devices는 ADM1026을 'complete thermal system management controller'라고 부릅니다.

ADM1026 module parameter
Parameter배열 길이Pin 범위설정
gpio_input1 ~ 170 ~ 16Input
gpio_output1 ~ 170 ~ 16Output
gpio_inverted1 ~ 170 ~ 16Inverted
gpio_normal1 ~ 170 ~ 16Normal/non-inverted
gpio_fan1 ~ 80 ~ 7Fan tach

GPIO 방향, 극성 및 fan tach 기능을 지정합니다.

GPIO 구성
Input과 output pin 목록 결정Inverted와 normal pin 목록 결정필요한 GPIO 0~7을 fan tach로 지정Module parameter로 드라이버 loadPin configuration 확인

Module load 시 pin 역할과 극성을 적용합니다.

Module Parameters
-----------------

* gpio_input: int array (min = 1, max = 17)
    List of GPIO pins (0-16) to program as inputs

* gpio_output: int array (min = 1, max = 17)
    List of GPIO pins (0-16) to program as outputs

* gpio_inverted: int array (min = 1, max = 17)
    List of GPIO pins (0-16) to program as inverted

* gpio_normal: int array (min = 1, max = 17)
    List of GPIO pins (0-16) to program as normal/non-inverted

* gpio_fan: int array (min = 1, max = 8)
    List of GPIO pins (0-7) to program as fan tachs


Description
-----------

This driver implements support for the Analog Devices ADM1026. Analog
Devices calls it a "complete thermal system management controller."

센서 자원과 경보 동작

44-80

ADM1026은 온도 센서 3개, 전압 센서 17개, 범용 digital I/O 16개, 8-bit fan speed sensor 8개, analog output 1개와 PWM output 1개를 구현합니다. 이 모든 자원에는 limit, alarm, mask bit가 있으며 chip 내부에 8k byte EEPROM도 있습니다.

온도는 섭씨로 측정합니다. 외부 센서 입력 2개와 내부 센서 1개가 있고 각 센서에는 high 및 low limit가 있습니다. 한계 초과 시 `#SMBALERT` interrupt를 발생시킬 수 있고 interrupt는 mask할 수 있습니다. 센서별 over-temperature limit를 넘으면 `#THERM` output이 assert됩니다. 현재 온도와 한계값의 해상도는 1도입니다.

Fan 회전 속도는 RPM으로 보고하지만 22.5kHz 내부 clock의 count로 측정합니다. 각 fan의 high limit는 최소 fan speed에 대응하며 이를 넘으면 interrupt를 발생시킬 수 있습니다. Reference clock divisor는 1, 2, 4, 8 중 하나입니다. 모든 RPM을 정확히 표현할 수 없어 반올림하며, divisor 8에서 회전당 pulse가 2개인 fan의 최저 측정 속도는 661 RPM입니다.

전압 센서는 17개입니다. 프로그램 가능한 min 또는 max를 넘으면 경보가 발생하며 min은 음전압에서도 0에 가장 가까운 값을 뜻합니다. 일부 입력은 높은 전압을 직접 측정하도록 attenuator가 통합되어 있습니다. 3.3V, 5V, 12V, -12V와 battery voltage는 전용 입력을 사용합니다. SCSI terminator power용 입력은 0~3V full-scale이고 나머지 비확장 입력은 0~2.5V full-scale입니다. 음전압 측정용으로 2.5V 또는 1.82V reference voltage를 제공합니다.

경보는 하드웨어 register를 한 번 이상 읽을 때까지 유지되므로 읽는 시점에는 원인이 사라졌을 수 있습니다. 현재 구현은 마지막 update 후 2.0초가 지나지 않은 경우를 제외하고 어떤 data를 읽어도 모든 hardware register를 읽습니다. 이 때문에 한 번만 발생한 경보를 쉽게 놓칠 수 있습니다.

ADM1026 자원
자원수량/범위특성
온도외부 2 + 내부 11도 해상도, #SMBALERT, #THERM
전압17전용 rail 및 0~3V/0~2.5V 입력
Fan speed822.5kHz count, divisor 1/2/4/8
GPIO16범용 digital I/O
출력Analog 1 + PWM 1Fan 제어 가능
EEPROM8k byteOn-chip memory

센서 수, 측정 방식과 경보 출력을 정리합니다.

경보 register 읽기
센서가 limit 초과#SMBALERT 또는 #THERM 상태 설정Data 요청 시 모든 register 읽기하드웨어 latch 해제 가능일회성 경보가 관찰 전에 사라질 수 있음

Register 읽기가 latch 상태에 미치는 영향입니다.

The ADM1026 implements three (3) temperature sensors, 17 voltage sensors,
16 general purpose digital I/O lines, eight (8) fan speed sensors (8-bit),
an analog output and a PWM output along with limit, alarm and mask bits for
all of the above. There is even 8k bytes of EEPROM memory on chip.

Temperatures are measured in degrees Celsius. There are two external
sensor inputs and one internal sensor. Each sensor has a high and low
limit. If the limit is exceeded, an interrupt (#SMBALERT) can be
generated. The interrupts can be masked. In addition, there are over-temp
limits for each sensor. If this limit is exceeded, the #THERM output will
be asserted. The current temperature and limits have a resolution of 1
degree.

Fan rotation speeds are reported in RPM (rotations per minute) but measured
in counts of a 22.5kHz internal clock. Each fan has a high limit which
corresponds to a minimum fan speed. If the limit is exceeded, an interrupt
can be generated. Each fan can be programmed to divide the reference clock
by 1, 2, 4 or 8. Not all RPM values can accurately be represented, so some
rounding is done. With a divider of 8, the slowest measurable speed of a
two pulse per revolution fan is 661 RPM.

There are 17 voltage sensors. An alarm is triggered if the voltage has
crossed a programmable minimum or maximum limit. Note that minimum in this
case always means 'closest to zero'; this is important for negative voltage
measurements. Several inputs have integrated attenuators so they can measure
higher voltages directly. 3.3V, 5V, 12V, -12V and battery voltage all have
dedicated inputs. There are several inputs scaled to 0-3V full-scale range
for SCSI terminator power. The remaining inputs are not scaled and have
a 0-2.5V full-scale range. A 2.5V or 1.82V reference voltage is provided
for negative voltage measurements.

If an alarm triggers, it will remain triggered until the hardware register
is read at least once. This means that the cause for the alarm may already
have disappeared! Note that in the current implementation, all hardware
registers are read whenever any data is read (unless it is less than 2.0
seconds since the last update). This means that you can easily miss
once-only alarms.

연속 측정, 자동 fan 제어와 VID

81-101

ADM1026은 연속 측정하며 analog input은 초당 약 4회 측정합니다. Fan speed 측정 시간은 실제 fan speed와 divisor에 따라 달라지고 모든 fan 속도를 측정하는 데 최대 1.5초가 걸릴 수 있습니다.

온도 센서 입력을 기준으로 fan speed를 자동 제어할 수 있습니다. PWM output과 DAC output 모두 fan 제어에 사용할 수 있지만 일반적으로 둘 중 하나만 사용합니다. 해당 control register에 최소 PWM 또는 DAC 값을 기록한 다음 각 온도 센서의 `tmin`에 low temperature limit를 설정합니다.

제어 범위는 20도씨로 고정되어 있으며 각 센서의 현재 온도와 `tmin` 차이 중 가장 큰 값이 control output을 결정합니다. PWM 및 DAC output으로 fan speed를 제어하는 회로 예시는 데이터시트에 있습니다. Fan speed sensor에는 PWM compensation이 없으므로 ground lead보다 power lead에서 fan voltage를 제어하는 편이 좋습니다.

데이터시트에는 VID signal을 GPIO line에 연결한 예제가 있지만 실제 chip이 그 방식으로 배선되지 않았을 수도 있습니다. 드라이버는 VID voltage를 얻기 위해 chip이 예제와 같은 방식으로 연결되었다고 가정합니다.

자동 fan 제어
항목동작
Analog input초당 약 4회 측정
Fan 전체 측정최대 1.5초
출력 선택PWM 또는 DAC 중 보통 하나
기준값각 센서의 tmin
제어 범위고정 20도씨
출력 결정current - tmin 중 가장 큰 차이

측정 주기와 온도 기반 출력 계산입니다.

온도 기반 fan 제어
PWM 또는 DAC output 선택Control register에 최소 출력 기록센서별 tmin 설정가장 큰 current - tmin 계산20도씨 범위에서 control output 결정Power lead 쪽 fan voltage 제어

최소 출력과 tmin을 이용해 자동 제어합니다.


The ADM1026 measures continuously. Analog inputs are measured about 4
times a second. Fan speed measurement time depends on fan speed and
divisor. It can take as long as 1.5 seconds to measure all fan speeds.

The ADM1026 has the ability to automatically control fan speed based on the
temperature sensor inputs. Both the PWM output and the DAC output can be
used to control fan speed. Usually only one of these two outputs will be
used. Write the minimum PWM or DAC value to the appropriate control
register. Then set the low temperature limit in the tmin values for each
temperature sensor. The range of control is fixed at 20 °C, and the
largest difference between current and tmin of the temperature sensors sets
the control output. See the datasheet for several example circuits for
controlling fan speed with the PWM and DAC outputs. The fan speed sensors
do not have PWM compensation, so it is probably best to control the fan
voltage from the power lead rather than on the ground lead.

The datasheet shows an example application with VID signals attached to
GPIO lines. Unfortunately, the chip may not be connected to the VID lines
in this way. The driver assumes that the chips *is* connected this way to
get a VID voltage.