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

Linux 6.18.37 · Hardware Monitoring

Kernel driver pmbus

일반 PMBus 장치의 명시적 생성, 장치별 확장, 전압·전류·전력·온도 sysfs 매핑입니다.

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

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

1. 요약·해설

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

요약·해설

pmbus.rst:1-277

여러 제조사 전력 장치를 명시적으로 생성하고 지원 레지스터를 감지해 페이지·위상별 센서와 한계·경보를 공개합니다.

문서 개요
항목
SourceDocumentation/hwmon/pmbus.rst
분량277 source lines
센서전압·전류·전력·온도
limitsRW

원문 분량과 핵심 장치 구성을 정리합니다.

운영 흐름
모델·주소 확인장치 생성레지스터 감지페이지·위상 라벨 생성센서·한계·경보 공개

장치 인식부터 측정·제어까지의 핵심 순서입니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Kernel driver pmbus
2 ===================
3
4 Supported chips:
5
6 * Flex BMR310, BMR453, BMR454, BMR456, BMR457, BMR458, BMR480,
7 BMR490, BMR491, BMR492
8
9 Prefixes: 'bmr310', 'bmr453', 'bmr454', 'bmr456', 'bmr457', 'bmr458', 'bmr480',
10 'bmr490', 'bmr491', 'bmr492'
11
12 Addresses scanned: -
13
14 Datasheets:
15
16 https://flexpowermodules.com/products
17
18
19 * ON Semiconductor ADP4000, NCP4200, NCP4208
20
21 Prefixes: 'adp4000', 'ncp4200', 'ncp4208'
22
23 Addresses scanned: -
24
25 Datasheets:
26
27 https://www.onsemi.com/pub_link/Collateral/ADP4000-D.PDF
28
29 https://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDF
30
31 https://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDF
32
33 * Lineage Power
34
35 Prefixes: 'mdt040', 'pdt003', 'pdt006', 'pdt012', 'udt020'
36
37 Addresses scanned: -
38
39 Datasheets:
40
41 http://www.lineagepower.com/oem/pdf/PDT003A0X.pdf
42
43 http://www.lineagepower.com/oem/pdf/PDT006A0X.pdf
44
45 http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf
46
47 http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf
48
49 http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf
50
51 * Texas Instruments TPS40400, TPS544B20, TPS544B25, TPS544C20, TPS544C25
52
53 Prefixes: 'tps40400', 'tps544b20', 'tps544b25', 'tps544c20', 'tps544c25'
54
55 Addresses scanned: -
56
57 Datasheets:
58
59 https://www.ti.com/lit/gpn/tps40400
60
61 https://www.ti.com/lit/gpn/tps544b20
62
63 https://www.ti.com/lit/gpn/tps544b25
64
65 https://www.ti.com/lit/gpn/tps544c20
66
67 https://www.ti.com/lit/gpn/tps544c25
68
69 * Maxim MAX20796
70
71 Prefix: 'max20796'
72
73 Addresses scanned: -
74
75 Datasheet:
76
77 Not published
78
79 * Generic PMBus devices
80
81 Prefix: 'pmbus'
82
83 Addresses scanned: -
84
85 Datasheet: n.a.
86
87
88 Author: Guenter Roeck <[email protected]>
89
90
91 Description
92 -----------
93
94 This driver supports hardware monitoring for various PMBus compliant devices.
95 It supports voltage, current, power, and temperature sensors as supported
96 by the device.
97
98 Each monitored channel has its own high and low limits, plus a critical
99 limit.
100
101 Fan support will be added in a later version of this driver.
102
103
104 Usage Notes
105 -----------
106
107 This driver does not probe for PMBus devices, since there is no register
108 which can be safely used to identify the chip (The MFG_ID register is not
109 supported by all chips), and since there is no well defined address range for
110 PMBus devices. You will have to instantiate the devices explicitly.
111
112 Example: the following will load the driver for an LTC2978 at address 0x60
113 on I2C bus #1::
114
115 $ modprobe pmbus
116 $ echo ltc2978 0x60 > /sys/bus/i2c/devices/i2c-1/new_device
117
118
119 Platform data support
120 ---------------------
121
122 Support for additional PMBus chips can be added by defining chip parameters in
123 a new chip specific driver file. For example, (untested) code to add support for
124 Emerson DS1200 power modules might look as follows::
125
126 static struct pmbus_driver_info ds1200_info = {
127 .pages = 1,
128 /* Note: All other sensors are in linear mode */
129 .direct[PSC_VOLTAGE_OUT] = true,
130 .direct[PSC_TEMPERATURE] = true,
131 .direct[PSC_CURRENT_OUT] = true,
132 .m[PSC_VOLTAGE_IN] = 1,
133 .b[PSC_VOLTAGE_IN] = 0,
134 .R[PSC_VOLTAGE_IN] = 3,
135 .m[PSC_VOLTAGE_OUT] = 1,
136 .b[PSC_VOLTAGE_OUT] = 0,
137 .R[PSC_VOLTAGE_OUT] = 3,
138 .m[PSC_TEMPERATURE] = 1,
139 .b[PSC_TEMPERATURE] = 0,
140 .R[PSC_TEMPERATURE] = 3,
141 .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT
142 | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
143 | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT
144 | PMBUS_HAVE_PIN | PMBUS_HAVE_POUT
145 | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP
146 | PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12,
147 };
148
149 static int ds1200_probe(struct i2c_client *client)
150 {
151 return pmbus_do_probe(client, &ds1200_info);
152 }
153
154 static const struct i2c_device_id ds1200_id[] = {
155 {"ds1200"},
156 {}
157 };
158
159 MODULE_DEVICE_TABLE(i2c, ds1200_id);
160
161 /* This is the driver that will be inserted */
162 static struct i2c_driver ds1200_driver = {
163 .driver = {
164 .name = "ds1200",
165 },
166 .probe = ds1200_probe,
167 .id_table = ds1200_id,
168 };
169
170 static int __init ds1200_init(void)
171 {
172 return i2c_add_driver(&ds1200_driver);
173 }
174
175 static void __exit ds1200_exit(void)
176 {
177 i2c_del_driver(&ds1200_driver);
178 }
179
180
181 Sysfs entries
182 -------------
183
184 When probing the chip, the driver identifies which PMBus registers are
185 supported, and determines available sensors from this information.
186 Attribute files only exist if respective sensors are supported by the chip.
187 Labels are provided to inform the user about the sensor associated with
188 a given sysfs entry.
189
190 The following attributes are supported. Limits are read-write; all other
191 attributes are read-only.
192
193 ======================= ========================================================
194 inX_input Measured voltage. From READ_VIN or READ_VOUT register.
195 inX_min Minimum Voltage.
196 From VIN_UV_WARN_LIMIT or VOUT_UV_WARN_LIMIT register.
197 inX_max Maximum voltage.
198 From VIN_OV_WARN_LIMIT or VOUT_OV_WARN_LIMIT register.
199 inX_lcrit Critical minimum Voltage.
200 From VIN_UV_FAULT_LIMIT or VOUT_UV_FAULT_LIMIT register.
201 inX_crit Critical maximum voltage.
202 From VIN_OV_FAULT_LIMIT or VOUT_OV_FAULT_LIMIT register.
203 inX_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status.
204 inX_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status.
205 inX_lcrit_alarm Voltage critical low alarm.
206 From VOLTAGE_UV_FAULT status.
207 inX_crit_alarm Voltage critical high alarm.
208 From VOLTAGE_OV_FAULT status.
209 inX_label "vin", "vcap", or "voutY"
210 inX_rated_min Minimum rated voltage.
211 From MFR_VIN_MIN or MFR_VOUT_MIN register.
212 inX_rated_max Maximum rated voltage.
213 From MFR_VIN_MAX or MFR_VOUT_MAX register.
214
215 currX_input Measured current. From READ_IIN or READ_IOUT register.
216 currX_max Maximum current.
217 From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT register.
218 currX_lcrit Critical minimum output current.
219 From IOUT_UC_FAULT_LIMIT register.
220 currX_crit Critical maximum current.
221 From IIN_OC_FAULT_LIMIT or IOUT_OC_FAULT_LIMIT register.
222 currX_alarm Current high alarm.
223 From IIN_OC_WARNING or IOUT_OC_WARNING status.
224 currX_max_alarm Current high alarm.
225 From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT status.
226 currX_lcrit_alarm Output current critical low alarm.
227 From IOUT_UC_FAULT status.
228 currX_crit_alarm Current critical high alarm.
229 From IIN_OC_FAULT or IOUT_OC_FAULT status.
230 currX_label "iin", "iinY", "iinY.Z", "ioutY", or "ioutY.Z",
231 where Y reflects the page number and Z reflects the
232 phase.
233 currX_rated_max Maximum rated current.
234 From MFR_IIN_MAX or MFR_IOUT_MAX register.
235
236 powerX_input Measured power. From READ_PIN or READ_POUT register.
237 powerX_cap Output power cap. From POUT_MAX register.
238 powerX_max Power limit. From PIN_OP_WARN_LIMIT or
239 POUT_OP_WARN_LIMIT register.
240 powerX_crit Critical output power limit.
241 From POUT_OP_FAULT_LIMIT register.
242 powerX_alarm Power high alarm.
243 From PIN_OP_WARNING or POUT_OP_WARNING status.
244 powerX_crit_alarm Output power critical high alarm.
245 From POUT_OP_FAULT status.
246 powerX_label "pin", "pinY", "pinY.Z", "poutY", or "poutY.Z",
247 where Y reflects the page number and Z reflects the
248 phase.
249 powerX_rated_max Maximum rated power.
250 From MFR_PIN_MAX or MFR_POUT_MAX register.
251
252 tempX_input Measured temperature.
253 From READ_TEMPERATURE_X register.
254 tempX_min Minimum temperature. From UT_WARN_LIMIT register.
255 tempX_max Maximum temperature. From OT_WARN_LIMIT register.
256 tempX_lcrit Critical low temperature.
257 From UT_FAULT_LIMIT register.
258 tempX_crit Critical high temperature.
259 From OT_FAULT_LIMIT register.
260 tempX_min_alarm Chip temperature low alarm. Set by comparing
261 READ_TEMPERATURE_X with UT_WARN_LIMIT if
262 TEMP_UT_WARNING status is set.
263 tempX_max_alarm Chip temperature high alarm. Set by comparing
264 READ_TEMPERATURE_X with OT_WARN_LIMIT if
265 TEMP_OT_WARNING status is set.
266 tempX_lcrit_alarm Chip temperature critical low alarm. Set by comparing
267 READ_TEMPERATURE_X with UT_FAULT_LIMIT if
268 TEMP_UT_FAULT status is set.
269 tempX_crit_alarm Chip temperature critical high alarm. Set by comparing
270 READ_TEMPERATURE_X with OT_FAULT_LIMIT if
271 TEMP_OT_FAULT status is set.
272 tempX_rated_min Minimum rated temperature.
273 From MFR_TAMBIENT_MIN register.
274 tempX_rated_max Maximum rated temperature.
275 From MFR_TAMBIENT_MAX, MFR_MAX_TEMP_1, MFR_MAX_TEMP_2 or
276 MFR_MAX_TEMP_3 register.
277 ======================= ========================================================
278

3. 한국어 전문 번역

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

일반 PMBus 드라이버 지원 장치

1-90

Guenter Roeck가 작성한 `pmbus` 드라이버는 여러 제조사의 PMBus 호환 전력 장치와 접두사 `pmbus`를 사용하는 일반 장치를 지원합니다. 모든 항목은 주소 자동 검색을 하지 않습니다.

Flex 계열은 BMR310, BMR453, BMR454, BMR456, BMR457, BMR458, BMR480, BMR490, BMR491, BMR492이며 각 모델명을 소문자로 쓴 접두사를 사용합니다.

ON Semiconductor 계열은 ADP4000, NCP4200, NCP4208이고 접두사는 `adp4000`, `ncp4200`, `ncp4208`입니다.

Lineage Power 계열은 접두사 `mdt040`, `pdt003`, `pdt006`, `pdt012`, `udt020`을 사용합니다.

Texas Instruments 계열은 TPS40400, TPS544B20, TPS544B25, TPS544C20, TPS544C25이고 각각 대응 접두사를 사용합니다. Maxim MAX20796은 `max20796`을 사용하지만 데이터시트는 공개되지 않았습니다.

일반 PMBus 장치는 접두사 `pmbus`를 사용합니다. 원문에는 각 제조사의 제품·데이터시트 링크가 보존되어 있습니다.

pmbus 지원 제품군
제조사모델·접두사
Flexbmr310, bmr453, bmr454, bmr456, bmr457, bmr458, bmr480, bmr490, bmr491, bmr492
ON Semiconductoradp4000, ncp4200, ncp4208
Lineage Powermdt040, pdt003, pdt006, pdt012, udt020
Texas Instrumentstps40400, tps544b20, tps544b25, tps544c20, tps544c25
Maximmax20796
Genericpmbus

제조사별 모델과 접두사를 묶었습니다.

일반 PMBus 바인딩
제조사와 모델 확인대응 접두사 선택I2C 버스·주소 확인장치 인스턴스 생성지원 PMBus 레지스터 감지

정확한 모델 접두사로 장치를 명시적으로 연결합니다.

Kernel driver pmbus
===================

Supported chips:

  * Flex BMR310, BMR453, BMR454, BMR456, BMR457, BMR458, BMR480,
    BMR490, BMR491, BMR492

    Prefixes: 'bmr310', 'bmr453', 'bmr454', 'bmr456', 'bmr457', 'bmr458', 'bmr480',
    'bmr490', 'bmr491', 'bmr492'

    Addresses scanned: -

    Datasheets:

        https://flexpowermodules.com/products


  * ON Semiconductor ADP4000, NCP4200, NCP4208

    Prefixes: 'adp4000', 'ncp4200', 'ncp4208'

    Addresses scanned: -

    Datasheets:

        https://www.onsemi.com/pub_link/Collateral/ADP4000-D.PDF

        https://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDF

        https://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDF

  * Lineage Power

    Prefixes: 'mdt040', 'pdt003', 'pdt006', 'pdt012', 'udt020'

    Addresses scanned: -

    Datasheets:

        http://www.lineagepower.com/oem/pdf/PDT003A0X.pdf

        http://www.lineagepower.com/oem/pdf/PDT006A0X.pdf

        http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf

        http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf

        http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf

  * Texas Instruments TPS40400, TPS544B20, TPS544B25, TPS544C20, TPS544C25

    Prefixes: 'tps40400', 'tps544b20', 'tps544b25', 'tps544c20', 'tps544c25'

    Addresses scanned: -

    Datasheets:

        https://www.ti.com/lit/gpn/tps40400

        https://www.ti.com/lit/gpn/tps544b20

        https://www.ti.com/lit/gpn/tps544b25

        https://www.ti.com/lit/gpn/tps544c20

        https://www.ti.com/lit/gpn/tps544c25

  * Maxim MAX20796

    Prefix: 'max20796'

    Addresses scanned: -

    Datasheet:

        Not published

  * Generic PMBus devices

    Prefix: 'pmbus'

    Addresses scanned: -

    Datasheet: n.a.


Author: Guenter Roeck <[email protected]>

모니터링 범위와 명시적 장치 생성

91-118

이 드라이버는 장치가 지원하는 전압, 전류, 전력, 온도 센서를 hwmon으로 제공합니다. 각 감시 채널에는 자체 상한·하한과 임계 한계가 있습니다. 원문 작성 시점에는 팬 지원을 이후 버전에 추가할 예정이라고 명시합니다.

안전하게 칩을 식별할 공통 레지스터가 없고 `MFG_ID`도 모든 칩이 지원하지 않으며 PMBus 주소 범위도 잘 정의되어 있지 않으므로 드라이버는 장치를 검색하지 않습니다.

따라서 장치를 명시적으로 생성해야 합니다. 예시는 I2C 버스 1의 주소 `0x60`에 LTC2978을 만들기 위해 `modprobe pmbus` 후 `/sys/bus/i2c/devices/i2c-1/new_device`에 `ltc2978 0x60`을 쓰는 절차입니다.

PMBus 사용 조건
항목내용
센서전압, 전류, 전력, 온도
채널 한계high, low, critical
자동 검색지원하지 않음
이유안전한 공통 ID 없음, MFG_ID 선택 사항, 주소 범위 불명
예시I2C bus 1, LTC2978, 0x60

자동 검색이 불가능한 이유와 생성 예시입니다.

PMBus 장치 생성
pmbus 모듈 적재I2C 버스 번호 확인모델명·주소 확인new_device에 모델과 주소 기록생성된 hwmon 센서 확인

알려진 모델과 주소를 sysfs로 등록합니다.

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

This driver supports hardware monitoring for various PMBus compliant devices.
It supports voltage, current, power, and temperature sensors as supported
by the device.

Each monitored channel has its own high and low limits, plus a critical
limit.

Fan support will be added in a later version of this driver.


Usage Notes
-----------

This driver does not probe for PMBus devices, since there is no register
which can be safely used to identify the chip (The MFG_ID register is not
supported by all chips), and since there is no well defined address range for
PMBus devices. You will have to instantiate the devices explicitly.

Example: the following will load the driver for an LTC2978 at address 0x60
on I2C bus #1::

        $ modprobe pmbus
        $ echo ltc2978 0x60 > /sys/bus/i2c/devices/i2c-1/new_device

장치별 DS1200 확장 예제

119-180

추가 PMBus 칩 지원은 새 장치별 드라이버 파일에 칩 매개변수를 정의해 구현할 수 있습니다. 원문은 시험되지 않은 Emerson DS1200 전력 모듈 예제를 제공합니다.

`struct pmbus_driver_info ds1200_info`는 페이지 수를 1로 설정합니다. 출력 전압, 온도, 출력 전류는 Direct 형식을 사용하고 입력·출력 전압과 온도에 변환 계수 `m=1`, `b=0`, `R=3`을 지정합니다. 주석에 따르면 나머지 센서는 Linear 형식입니다.

첫 페이지의 기능 비트는 VIN·IIN·입력 상태, VOUT·출력 전압 상태, IOUT·출력 전류 상태, PIN·POUT, 온도·온도 상태, FAN1/2·팬 상태를 선언합니다.

`ds1200_probe()`는 `pmbus_do_probe(client, &ds1200_info)`를 호출합니다. I2C ID 표에는 `ds1200`을 넣고 `MODULE_DEVICE_TABLE`로 공개합니다.

`struct i2c_driver ds1200_driver`는 이름, probe, ID 표를 연결합니다. 모듈 초기화 함수는 `i2c_add_driver()`, 종료 함수는 `i2c_del_driver()`를 호출합니다.

DS1200 예제 구성
영역설정
페이지1
Direct 형식VOUT, temperature, IOUT
계수m=1, b=0, R=3
입력 기능VIN, IIN, STATUS_INPUT
출력 기능VOUT, IOUT, PIN, POUT 및 상태
기타TEMP, FAN12 및 상태
probepmbus_do_probe(client, &ds1200_info)
등록·해제i2c_add_driver / i2c_del_driver

코드가 선언하는 데이터 형식과 기능을 구조화합니다.

새 PMBus 칩 드라이버
pmbus_driver_info에 페이지·형식·계수 정의func 비트로 센서와 상태 선언probe에서 pmbus_do_probe 호출I2C ID와 driver 구조체 연결init·exit에서 드라이버 추가·삭제

장치 정보에서 I2C 모듈 등록까지의 골격입니다.

Platform data support
---------------------

Support for additional PMBus chips can be added by defining chip parameters in
a new chip specific driver file. For example, (untested) code to add support for
Emerson DS1200 power modules might look as follows::

  static struct pmbus_driver_info ds1200_info = {
        .pages = 1,
        /* Note: All other sensors are in linear mode */
        .direct[PSC_VOLTAGE_OUT] = true,
        .direct[PSC_TEMPERATURE] = true,
        .direct[PSC_CURRENT_OUT] = true,
        .m[PSC_VOLTAGE_IN] = 1,
        .b[PSC_VOLTAGE_IN] = 0,
        .R[PSC_VOLTAGE_IN] = 3,
        .m[PSC_VOLTAGE_OUT] = 1,
        .b[PSC_VOLTAGE_OUT] = 0,
        .R[PSC_VOLTAGE_OUT] = 3,
        .m[PSC_TEMPERATURE] = 1,
        .b[PSC_TEMPERATURE] = 0,
        .R[PSC_TEMPERATURE] = 3,
        .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT
                   | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
                   | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT
                   | PMBUS_HAVE_PIN | PMBUS_HAVE_POUT
                   | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP
                   | PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12,
  };

  static int ds1200_probe(struct i2c_client *client)
  {
        return pmbus_do_probe(client, &ds1200_info);
  }

  static const struct i2c_device_id ds1200_id[] = {
        {"ds1200"},
        {}
  };

  MODULE_DEVICE_TABLE(i2c, ds1200_id);

  /* This is the driver that will be inserted */
  static struct i2c_driver ds1200_driver = {
        .driver = {
                   .name = "ds1200",
                   },
        .probe = ds1200_probe,
        .id_table = ds1200_id,
  };

  static int __init ds1200_init(void)
  {
        return i2c_add_driver(&ds1200_driver);
  }

  static void __exit ds1200_exit(void)
  {
        i2c_del_driver(&ds1200_driver);
  }

전압 속성과 PMBus 레지스터 매핑

181-214

probe 중 드라이버는 지원 PMBus 레지스터를 식별하고 그 정보로 사용 가능한 센서를 결정합니다. 해당 센서가 지원될 때만 속성 파일이 생기며 라벨은 sysfs 항목이 어떤 센서인지 알려줍니다.

limit 속성은 읽기·쓰기가 가능하고 나머지는 읽기 전용입니다.

`inX_input`은 `READ_VIN` 또는 `READ_VOUT`의 측정 전압입니다. `inX_min`과 `inX_max`는 저전압·과전압 경고 한계, `inX_lcrit`과 `inX_crit`은 저전압·과전압 fault 한계입니다.

`inX_min_alarm`, `max_alarm`, `lcrit_alarm`, `crit_alarm`은 각각 `VOLTAGE_UV_WARNING`, `VOLTAGE_OV_WARNING`, `VOLTAGE_UV_FAULT`, `VOLTAGE_OV_FAULT` 상태에 대응합니다.

`inX_label`은 `vin`, `vcap`, `voutY` 중 하나입니다. `inX_rated_min`과 `rated_max`는 제조사 `MFR_VIN_MIN/MAX` 또는 `MFR_VOUT_MIN/MAX` 레지스터의 정격 전압입니다.

PMBus 전압 속성
속성의미PMBus 원천
inX_input측정 전압READ_VIN / READ_VOUT
inX_min/max경고 하한/상한VIN/VOUT_UV/OV_WARN_LIMIT
inX_lcrit/crit임계 하한/상한VIN/VOUT_UV/OV_FAULT_LIMIT
inX_*_alarm경고·fault 상태VOLTAGE_UV/OV_WARNING/FAULT
inX_labelvin, vcap, voutY채널 의미
inX_rated_min/max정격 최소/최대MFR_VIN/VOUT_MIN/MAX

hwmon 속성을 명령·상태 레지스터와 대응시킵니다.

전압 채널 생성
READ_VIN·READ_VOUT 존재 확인경고·fault limit 감지관련 status 비트 감지라벨과 정격 레지스터 확인지원되는 inX 속성만 공개

지원 레지스터를 확인한 뒤 관련 속성만 만듭니다.

Sysfs entries
-------------

When probing the chip, the driver identifies which PMBus registers are
supported, and determines available sensors from this information.
Attribute files only exist if respective sensors are supported by the chip.
Labels are provided to inform the user about the sensor associated with
a given sysfs entry.

The following attributes are supported. Limits are read-write; all other
attributes are read-only.

======================= ========================================================
inX_input                Measured voltage. From READ_VIN or READ_VOUT register.
inX_min                        Minimum Voltage.
                        From VIN_UV_WARN_LIMIT or VOUT_UV_WARN_LIMIT register.
inX_max                        Maximum voltage.
                        From VIN_OV_WARN_LIMIT or VOUT_OV_WARN_LIMIT register.
inX_lcrit                Critical minimum Voltage.
                        From VIN_UV_FAULT_LIMIT or VOUT_UV_FAULT_LIMIT register.
inX_crit                Critical maximum voltage.
                        From VIN_OV_FAULT_LIMIT or VOUT_OV_FAULT_LIMIT register.
inX_min_alarm                Voltage low alarm. From VOLTAGE_UV_WARNING status.
inX_max_alarm                Voltage high alarm. From VOLTAGE_OV_WARNING status.
inX_lcrit_alarm                Voltage critical low alarm.
                        From VOLTAGE_UV_FAULT status.
inX_crit_alarm                Voltage critical high alarm.
                        From VOLTAGE_OV_FAULT status.
inX_label                "vin", "vcap", or "voutY"
inX_rated_min                Minimum rated voltage.
                        From MFR_VIN_MIN or MFR_VOUT_MIN register.
inX_rated_max                Maximum rated voltage.
                        From MFR_VIN_MAX or MFR_VOUT_MAX register.

전류·전력 속성과 페이지·위상 라벨

215-251

`currX_input`은 `READ_IIN` 또는 `READ_IOUT`의 측정 전류입니다. `currX_max`는 입력·출력 과전류 경고 한계, `currX_lcrit`은 출력 저전류 fault 한계, `currX_crit`은 입력·출력 과전류 fault 한계입니다.

전류 경보는 `IIN_OC_WARNING`, `IOUT_OC_WARNING`, `IIN/IOUT_OC_WARN_LIMIT` 상태, `IOUT_UC_FAULT`, `IIN_OC_FAULT`, `IOUT_OC_FAULT`에 대응합니다. `currX_rated_max`는 제조사 정격 최대 전류입니다.

전류 라벨은 `iin`, `iinY`, `iinY.Z`, `ioutY`, `ioutY.Z`이며 Y는 페이지, Z는 위상을 나타냅니다.

`powerX_input`은 `READ_PIN` 또는 `READ_POUT`의 측정 전력입니다. `powerX_cap`은 `POUT_MAX` 출력 전력 상한, `powerX_max`는 입력·출력 경고 한계, `powerX_crit`은 출력 임계 fault 한계입니다.

`powerX_alarm`과 `crit_alarm`은 입력·출력 전력 경고 및 출력 전력 fault 상태입니다. 라벨은 `pin`, `pinY`, `pinY.Z`, `poutY`, `poutY.Z` 형식이고 Y와 Z는 페이지·위상입니다. `rated_max`는 제조사 정격 최대 전력입니다.

PMBus 전류·전력 속성
그룹주요 속성레지스터·라벨
current inputcurrX_inputREAD_IIN / READ_IOUT
current limitsmax, lcrit, critOC_WARN, UC_FAULT, OC_FAULT limits
current alarmsalarm, max_alarm, lcrit_alarm, crit_alarmIIN/IOUT status
current labeliinY.Z / ioutY.ZY=page, Z=phase
power input/cappowerX_input, capREAD_PIN/POUT, POUT_MAX
power limits/alarmsmax, crit, alarm, crit_alarmOP_WARN/FAULT
power labelpinY.Z / poutY.ZY=page, Z=phase

측정·한계·경보와 라벨 규칙을 함께 정리합니다.

다중 페이지 전류·전력 공개
페이지별 IIN·IOUT·PIN·POUT 확인다중 위상 존재 여부 확인경고·fault 한계와 상태 감지Y=page·Z=phase 라벨 생성정격 최대값과 함께 속성 공개

페이지와 위상별 채널을 고유 라벨로 만듭니다.

currX_input                Measured current. From READ_IIN or READ_IOUT register.
currX_max                Maximum current.
                        From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT register.
currX_lcrit                Critical minimum output current.
                        From IOUT_UC_FAULT_LIMIT register.
currX_crit                Critical maximum current.
                        From IIN_OC_FAULT_LIMIT or IOUT_OC_FAULT_LIMIT register.
currX_alarm                Current high alarm.
                        From IIN_OC_WARNING or IOUT_OC_WARNING status.
currX_max_alarm                Current high alarm.
                        From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT status.
currX_lcrit_alarm        Output current critical low alarm.
                        From IOUT_UC_FAULT status.
currX_crit_alarm        Current critical high alarm.
                        From IIN_OC_FAULT or IOUT_OC_FAULT status.
currX_label                "iin", "iinY", "iinY.Z", "ioutY", or "ioutY.Z",
                        where Y reflects the page number and Z reflects the
                        phase.
currX_rated_max                Maximum rated current.
                        From MFR_IIN_MAX or MFR_IOUT_MAX register.

powerX_input                Measured power. From READ_PIN or READ_POUT register.
powerX_cap                Output power cap. From POUT_MAX register.
powerX_max                Power limit. From PIN_OP_WARN_LIMIT or
                        POUT_OP_WARN_LIMIT register.
powerX_crit                Critical output power limit.
                        From POUT_OP_FAULT_LIMIT register.
powerX_alarm                Power high alarm.
                        From PIN_OP_WARNING or POUT_OP_WARNING status.
powerX_crit_alarm        Output power critical high alarm.
                        From POUT_OP_FAULT status.
powerX_label                "pin", "pinY", "pinY.Z", "poutY", or "poutY.Z",
                        where Y reflects the page number and Z reflects the
                        phase.
powerX_rated_max        Maximum rated power.
                        From MFR_PIN_MAX or MFR_POUT_MAX register.

온도 한계·경보·정격 속성

252-277

`tempX_input`은 `READ_TEMPERATURE_X`의 측정 온도입니다. `tempX_min`은 저온 경고 한계 `UT_WARN_LIMIT`, `tempX_max`는 고온 경고 한계 `OT_WARN_LIMIT`입니다.

`tempX_lcrit`은 저온 fault 한계 `UT_FAULT_LIMIT`, `tempX_crit`은 고온 fault 한계 `OT_FAULT_LIMIT`입니다.

저온·고온 경고 경보는 대응 status가 설정됐을 때 현재 온도를 WARN 한계와 비교해 정합니다. 임계 저온·고온 경보는 현재 온도를 FAULT 한계와 비교해 정합니다.

`tempX_rated_min`은 `MFR_TAMBIENT_MIN`의 정격 최소 온도입니다. `tempX_rated_max`는 `MFR_TAMBIENT_MAX` 또는 `MFR_MAX_TEMP_1/2/3`의 정격 최대 온도입니다.

PMBus 온도 속성
속성의미원천
tempX_input측정 온도READ_TEMPERATURE_X
tempX_min/max저온/고온 경고 한계UT/OT_WARN_LIMIT
tempX_lcrit/crit저온/고온 fault 한계UT/OT_FAULT_LIMIT
tempX_min/max_alarm저온/고온 경고TEMP_UT/OT_WARNING + 현재값 비교
tempX_lcrit/crit_alarm임계 저온/고온TEMP_UT/OT_FAULT + 현재값 비교
tempX_rated_min정격 최소MFR_TAMBIENT_MIN
tempX_rated_max정격 최대MFR_TAMBIENT_MAX / MFR_MAX_TEMP_1~3

현재값·경고·fault·정격 온도의 원천입니다.

온도 경보 계산
READ_TEMPERATURE_X 읽기UT·OT WARN limit 읽기UT·OT FAULT limit 읽기status 비트와 현재값 비교경고·임계 경보 및 정격값 공개

상태 비트가 있을 때 측정값과 한계를 교차 확인합니다.

tempX_input                Measured temperature.
                        From READ_TEMPERATURE_X register.
tempX_min                Minimum temperature. From UT_WARN_LIMIT register.
tempX_max                Maximum temperature. From OT_WARN_LIMIT register.
tempX_lcrit                Critical low temperature.
                        From UT_FAULT_LIMIT register.
tempX_crit                Critical high temperature.
                        From OT_FAULT_LIMIT register.
tempX_min_alarm                Chip temperature low alarm. Set by comparing
                        READ_TEMPERATURE_X with UT_WARN_LIMIT if
                        TEMP_UT_WARNING status is set.
tempX_max_alarm                Chip temperature high alarm. Set by comparing
                        READ_TEMPERATURE_X with OT_WARN_LIMIT if
                        TEMP_OT_WARNING status is set.
tempX_lcrit_alarm        Chip temperature critical low alarm. Set by comparing
                        READ_TEMPERATURE_X with UT_FAULT_LIMIT if
                        TEMP_UT_FAULT status is set.
tempX_crit_alarm        Chip temperature critical high alarm. Set by comparing
                        READ_TEMPERATURE_X with OT_FAULT_LIMIT if
                        TEMP_OT_FAULT status is set.
tempX_rated_min                Minimum rated temperature.
                        From MFR_TAMBIENT_MIN register.
tempX_rated_max                Maximum rated temperature.
                        From MFR_TAMBIENT_MAX, MFR_MAX_TEMP_1, MFR_MAX_TEMP_2 or
                        MFR_MAX_TEMP_3 register.
======================= ========================================================