요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Kernel driver pc87360
=====================
Supported chips:
* National Semiconductor PC87360, PC87363, PC87364, PC87365 and PC87366
Prefixes: 'pc87360', 'pc87363', 'pc87364', 'pc87365', 'pc87366'
Addresses scanned: none, address read from Super I/O config space
Datasheets: No longer available
Authors: Jean Delvare <[email protected]>
Thanks to Sandeep Mehta, Tonko de Rooy and Daniel Ceregatti for testing.
Thanks to Rudolf Marek for helping me investigate conversion issues.
Module Parameters
-----------------
* init int
Chip initialization level:
- 0: None
- **1**: Forcibly enable internal voltage and temperature channels,
except in9
- 2: Forcibly enable all voltage and temperature channels, except in9
- 3: Forcibly enable all voltage and temperature channels, including in9
Note that this parameter has no effect for the PC87360, PC87363 and PC87364
chips.
Also note that for the PC87366, initialization levels 2 and 3 don't enable
all temperature channels, because some of them share pins with each other,
so they can't be used at the same time.
Description
-----------
The National Semiconductor PC87360 Super I/O chip contains monitoring and
PWM control circuitry for two fans. The PC87363 chip is similar, and the
PC87364 chip has monitoring and PWM control for a third fan.
The National Semiconductor PC87365 and PC87366 Super I/O chips are complete
hardware monitoring chipsets, not only controlling and monitoring three fans,
but also monitoring eleven voltage inputs and two (PC87365) or up to four
(PC87366) temperatures.
=========== ======= ======= ======= ======= =====
Chip #vin #fan #pwm #temp devid
=========== ======= ======= ======= ======= =====
PC87360 - 2 2 - 0xE1
PC87363 - 2 2 - 0xE8
PC87364 - 3 3 - 0xE4
PC87365 11 3 3 2 0xE5
PC87366 11 3 3 3-4 0xE9
=========== ======= ======= ======= ======= =====
The driver assumes that no more than one chip is present, and one of the
standard Super I/O addresses is used (0x2E/0x2F or 0x4E/0x4F)
Fan Monitoring
--------------
Fan rotation speeds are reported in RPM (revolutions per minute). An alarm
is triggered if the rotation speed has dropped below a programmable limit.
A different alarm is triggered if the fan speed is too low to be measured.
Fan readings are affected by a programmable clock divider, giving the
readings more range or accuracy. Usually, users have to learn how it works,
but this driver implements dynamic clock divider selection, so you don't
have to care no more.
For reference, here are a few values about clock dividers:
=========== =============== =============== ===========
slowest accuracy highest
measurable around 3000 accurate
divider speed (RPM) RPM (RPM) speed (RPM)
=========== =============== =============== ===========
1 1882 18 6928
2 941 37 4898
4 470 74 3464
8 235 150 2449
=========== =============== =============== ===========
For the curious, here is how the values above were computed:
* slowest measurable speed: clock/(255*divider)
* accuracy around 3000 RPM: 3000^2/clock
* highest accurate speed: sqrt(clock*100)
The clock speed for the PC87360 family is 480 kHz. I arbitrarily chose 100
RPM as the lowest acceptable accuracy.
As mentioned above, you don't have to care about this no more.
Note that not all RPM values can be represented, even when the best clock
divider is selected. This is not only true for the measured speeds, but
also for the programmable low limits, so don't be surprised if you try to
set, say, fan1_min to 2900 and it finally reads 2909.
Fan Control
-----------
PWM (pulse width modulation) values range from 0 to 255, with 0 meaning
that the fan is stopped, and 255 meaning that the fan goes at full speed.
Be extremely careful when changing PWM values. Low PWM values, even
non-zero, can stop the fan, which may cause irreversible damage to your
hardware if temperature increases too much. When changing PWM values, go
step by step and keep an eye on temperatures.
One user reported problems with PWM. Changing PWM values would break fan
speed readings. No explanation nor fix could be found.
Temperature Monitoring
----------------------
Temperatures are reported in degrees Celsius. Each temperature measured has
associated low, high and overtemperature limits, each of which triggers an
alarm when crossed.
The first two temperature channels are external. The third one (PC87366
only) is internal.
The PC87366 has three additional temperature channels, based on
thermistors (as opposed to thermal diodes for the first three temperature
channels). For technical reasons, these channels are held by the VLM
(voltage level monitor) logical device, not the TMS (temperature
measurement) one. As a consequence, these temperatures are exported as
voltages, and converted into temperatures in user-space.
Note that these three additional channels share their pins with the
external thermal diode channels, so you (physically) can't use them all at
the same time. Although it should be possible to mix the two sensor types,
the documents from National Semiconductor suggest that motherboard
manufacturers should choose one type and stick to it. So you will more
likely have either channels 1 to 3 (thermal diodes) or 3 to 6 (internal
thermal diode, and thermistors).
Voltage Monitoring
------------------
Voltages are reported relatively to a reference voltage, either internal or
external. Some of them (in7:Vsb, in8:Vdd and in10:AVdd) are divided by two
internally, you will have to compensate in sensors.conf. Others (in0 to in6)
are likely to be divided externally. The meaning of each of these inputs as
well as the values of the resistors used for division is left to the
motherboard manufacturers, so you will have to document yourself and edit
sensors.conf accordingly. National Semiconductor has a document with
recommended resistor values for some voltages, but this still leaves much
room for per motherboard specificities, unfortunately. Even worse,
motherboard manufacturers don't seem to care about National Semiconductor's
recommendations.
Each voltage measured has associated low and high limits, each of which
triggers an alarm when crossed.
When available, VID inputs are used to provide the nominal CPU Core voltage.
The driver will default to VRM 9.0, but this can be changed from user-space.
The chipsets can handle two sets of VID inputs (on dual-CPU systems), but
the driver will only export one for now. This may change later if there is
a need.
General Remarks
---------------
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 all hardware registers are read whenever any
data is read (unless it is less than 2 seconds since the last update, in
which case cached values are returned instead). As a consequence, when
a once-only alarm triggers, it may take 2 seconds for it to show, and 2
more seconds for it to disappear.
Monitoring of in9 isn't enabled at lower init levels (<3) because that
channel measures the battery voltage (Vbat). It is a known fact that
repeatedly sampling the battery voltage reduces its lifetime. National
Semiconductor smartly designed their chipset so that in9 is sampled only
once every 1024 sampling cycles (that is every 34 minutes at the default
sampling rate), so the effect is attenuated, but still present.
Limitations
-----------
The datasheets suggests that some values (fan mins, fan dividers)
shouldn't be changed once the monitoring has started, but we ignore that
recommendation. We'll reconsider if it actually causes trouble.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
지원 칩과 init 초기화 수준
1-40Jean Delvare가 작성한 `pc87360` 드라이버는 National Semiconductor PC87360, PC87363, PC87364, PC87365, PC87366을 지원합니다. 각각 같은 이름의 접두사를 사용합니다. 주소를 검색하지 않고 Super I/O 구성 공간에서 읽으며, 데이터시트는 더 이상 제공되지 않습니다.
시험에 도움을 준 Sandeep Mehta, Tonko de Rooy, Daniel Ceregatti와 변환 문제 조사에 도움을 준 Rudolf Marek에게 감사를 표합니다.
정수형 모듈 매개변수 `init`은 칩 초기화 수준을 정합니다. 0은 초기화하지 않고, 기본값 1은 `in9`를 제외한 내부 전압 및 온도 채널을 강제로 활성화합니다. 2는 `in9`를 제외한 모든 전압·온도 채널, 3은 `in9`를 포함한 모든 채널을 강제로 활성화합니다.
이 매개변수는 PC87360, PC87363, PC87364에는 영향을 주지 않습니다. PC87366에서는 일부 온도 채널이 핀을 공유하므로 수준 2나 3도 모든 온도 채널을 동시에 활성화할 수 없습니다.
강제 활성화 범위와 예외를 정리합니다.
모델과 init 값에 따라 강제 활성화 범위를 선택합니다.
Kernel driver pc87360
=====================
Supported chips:
* National Semiconductor PC87360, PC87363, PC87364, PC87365 and PC87366
Prefixes: 'pc87360', 'pc87363', 'pc87364', 'pc87365', 'pc87366'
Addresses scanned: none, address read from Super I/O config space
Datasheets: No longer available
Authors: Jean Delvare <[email protected]>
Thanks to Sandeep Mehta, Tonko de Rooy and Daniel Ceregatti for testing.
Thanks to Rudolf Marek for helping me investigate conversion issues.
Module Parameters
-----------------
* init int
Chip initialization level:
- 0: None
- **1**: Forcibly enable internal voltage and temperature channels,
except in9
- 2: Forcibly enable all voltage and temperature channels, except in9
- 3: Forcibly enable all voltage and temperature channels, including in9
Note that this parameter has no effect for the PC87360, PC87363 and PC87364
chips.
Also note that for the PC87366, initialization levels 2 and 3 don't enable
all temperature channels, because some of them share pins with each other,
so they can't be used at the same time.
모델별 센서·PWM 구성
41-65PC87360은 두 팬의 모니터링과 PWM 제어 회로를 포함합니다. PC87363도 비슷하며 PC87364는 세 번째 팬의 모니터링과 PWM 제어를 추가합니다.
PC87365와 PC87366은 완전한 하드웨어 모니터링 칩셋입니다. 세 팬을 제어·감시할 뿐 아니라 전압 입력 11개와 PC87365는 온도 2개, PC87366은 온도 3~4개를 감시합니다.
드라이버는 칩이 하나만 존재하고 표준 Super I/O 주소 `0x2E/0x2F` 또는 `0x4E/0x4F` 중 하나를 사용한다고 가정합니다.
원문의 채널 수와 장치 ID를 그대로 옮겼습니다.
장치 ID에 맞춰 존재하는 센서만 공개합니다.
Description
-----------
The National Semiconductor PC87360 Super I/O chip contains monitoring and
PWM control circuitry for two fans. The PC87363 chip is similar, and the
PC87364 chip has monitoring and PWM control for a third fan.
The National Semiconductor PC87365 and PC87366 Super I/O chips are complete
hardware monitoring chipsets, not only controlling and monitoring three fans,
but also monitoring eleven voltage inputs and two (PC87365) or up to four
(PC87366) temperatures.
=========== ======= ======= ======= ======= =====
Chip #vin #fan #pwm #temp devid
=========== ======= ======= ======= ======= =====
PC87360 - 2 2 - 0xE1
PC87363 - 2 2 - 0xE8
PC87364 - 3 3 - 0xE4
PC87365 11 3 3 2 0xE5
PC87366 11 3 3 3-4 0xE9
=========== ======= ======= ======= ======= =====
The driver assumes that no more than one chip is present, and one of the
standard Super I/O addresses is used (0x2E/0x2F or 0x4E/0x4F)
팬 측정과 동적 클록 분주기
66-107팬 회전 속도는 RPM으로 보고됩니다. 속도가 프로그래밍한 하한보다 낮아지면 경보가 발생하고, 너무 느려 측정할 수 없을 때는 별도의 경보가 발생합니다.
팬 판독 범위와 정밀도는 프로그래밍 가능한 클록 분주기의 영향을 받습니다. 드라이버가 동적으로 가장 적절한 분주기를 선택하므로 사용자가 직접 관리할 필요는 없습니다.
480 kHz 클록에서 분주기 1, 2, 4, 8은 각각 측정 가능한 최저 속도 1882, 941, 470, 235 RPM을 제공합니다. 약 3000 RPM 부근의 정밀도는 각각 18, 37, 74, 150 RPM이고, 정확하게 측정 가능한 최고 속도는 6928, 4898, 3464, 2449 RPM입니다.
최저 측정 속도는 `clock/(255*divider)`, 3000 RPM 부근 정밀도는 `3000^2/clock`, 정확한 최고 속도는 `sqrt(clock*100)`으로 계산했습니다. 여기서 100 RPM은 작성자가 정한 최저 허용 정밀도입니다.
최적 분주기를 사용해도 모든 RPM 정수를 표현할 수 있는 것은 아닙니다. 측정값뿐 아니라 프로그래밍하는 하한도 양자화되므로 `fan1_min`에 2900을 써도 다시 읽으면 2909가 될 수 있습니다.
원문에 제시된 측정 범위와 정밀도입니다.
측정 가능한 범위와 정밀도를 자동으로 맞춥니다.
Fan Monitoring
--------------
Fan rotation speeds are reported in RPM (revolutions per minute). An alarm
is triggered if the rotation speed has dropped below a programmable limit.
A different alarm is triggered if the fan speed is too low to be measured.
Fan readings are affected by a programmable clock divider, giving the
readings more range or accuracy. Usually, users have to learn how it works,
but this driver implements dynamic clock divider selection, so you don't
have to care no more.
For reference, here are a few values about clock dividers:
=========== =============== =============== ===========
slowest accuracy highest
measurable around 3000 accurate
divider speed (RPM) RPM (RPM) speed (RPM)
=========== =============== =============== ===========
1 1882 18 6928
2 941 37 4898
4 470 74 3464
8 235 150 2449
=========== =============== =============== ===========
For the curious, here is how the values above were computed:
* slowest measurable speed: clock/(255*divider)
* accuracy around 3000 RPM: 3000^2/clock
* highest accurate speed: sqrt(clock*100)
The clock speed for the PC87360 family is 480 kHz. I arbitrarily chose 100
RPM as the lowest acceptable accuracy.
As mentioned above, you don't have to care about this no more.
Note that not all RPM values can be represented, even when the best clock
divider is selected. This is not only true for the measured speeds, but
also for the programmable low limits, so don't be surprised if you try to
set, say, fan1_min to 2900 and it finally reads 2909.
PWM 안전 수칙과 온도 채널
108-148PWM 값은 0~255이며 0은 팬 정지, 255는 최고 속도를 뜻합니다. 0이 아닌 낮은 값에서도 팬이 멈출 수 있고 과열로 하드웨어가 영구 손상될 수 있으므로 값을 단계적으로 바꾸면서 온도를 지켜봐야 합니다.
한 사용자는 PWM 값을 바꾸면 팬 속도 판독이 깨지는 문제를 보고했지만 원인이나 해결책은 찾지 못했습니다.
온도는 섭씨로 보고되며 각 채널에는 하한, 상한, 과열 한계가 있고 각각을 넘으면 경보가 발생합니다. 처음 두 온도 채널은 외부 센서이고 PC87366에만 있는 세 번째 채널은 내부 센서입니다.
PC87366에는 열 다이오드 기반의 처음 세 채널 외에 서미스터 기반 온도 채널 세 개가 더 있습니다. 기술적 이유로 이 채널들은 TMS가 아니라 VLM 논리 장치에 속하므로 전압으로 공개되며 사용자 공간에서 온도로 변환해야 합니다.
세 서미스터 채널은 외부 열 다이오드 채널과 핀을 공유하므로 모두 동시에 사용할 수 없습니다. 두 센서 종류를 섞는 것이 기술적으로 가능해도 제조사 문서는 메인보드가 한 종류만 선택하도록 권고합니다. 일반적으로 열 다이오드 채널 1~3 또는 내부 다이오드와 서미스터인 채널 3~6 중 한 구성을 보게 됩니다.
열 다이오드와 서미스터 채널의 배치와 제약입니다.
PWM 변경과 온도 감시를 함께 수행합니다.
Fan Control
-----------
PWM (pulse width modulation) values range from 0 to 255, with 0 meaning
that the fan is stopped, and 255 meaning that the fan goes at full speed.
Be extremely careful when changing PWM values. Low PWM values, even
non-zero, can stop the fan, which may cause irreversible damage to your
hardware if temperature increases too much. When changing PWM values, go
step by step and keep an eye on temperatures.
One user reported problems with PWM. Changing PWM values would break fan
speed readings. No explanation nor fix could be found.
Temperature Monitoring
----------------------
Temperatures are reported in degrees Celsius. Each temperature measured has
associated low, high and overtemperature limits, each of which triggers an
alarm when crossed.
The first two temperature channels are external. The third one (PC87366
only) is internal.
The PC87366 has three additional temperature channels, based on
thermistors (as opposed to thermal diodes for the first three temperature
channels). For technical reasons, these channels are held by the VLM
(voltage level monitor) logical device, not the TMS (temperature
measurement) one. As a consequence, these temperatures are exported as
voltages, and converted into temperatures in user-space.
Note that these three additional channels share their pins with the
external thermal diode channels, so you (physically) can't use them all at
the same time. Although it should be possible to mix the two sensor types,
the documents from National Semiconductor suggest that motherboard
manufacturers should choose one type and stick to it. So you will more
likely have either channels 1 to 3 (thermal diodes) or 3 to 6 (internal
thermal diode, and thermistors).
전압 배율과 VID
149-173전압은 내부 또는 외부 기준 전압에 대한 상대값으로 보고됩니다. `in7:Vsb`, `in8:Vdd`, `in10:AVdd`는 칩 내부에서 2로 나뉘므로 `sensors.conf`에서 보정해야 합니다.
`in0`부터 `in6`도 외부 저항 분배기를 사용할 가능성이 큽니다. 각 입력의 의미와 저항값은 메인보드 제조사가 정하므로 보드 자료를 확인해 `sensors.conf`를 맞춰야 합니다. National Semiconductor의 권장 저항값 문서가 있어도 보드별 차이가 크고 제조사가 권고를 따르지 않는 경우도 있습니다.
각 전압에는 하한과 상한이 있으며 이를 넘으면 경보가 발생합니다.
VID 입력이 있으면 명목 CPU 코어 전압을 제공합니다. 드라이버의 기본 VRM 규격은 9.0이지만 사용자 공간에서 바꿀 수 있습니다. 칩셋은 듀얼 CPU용 VID 입력 두 세트를 처리할 수 있지만 현재 드라이버는 한 세트만 공개합니다.
칩 내부 분주와 보드 외부 분주를 구분합니다.
원시 상대 전압을 실제 레일 전압으로 환산합니다.
Voltage Monitoring
------------------
Voltages are reported relatively to a reference voltage, either internal or
external. Some of them (in7:Vsb, in8:Vdd and in10:AVdd) are divided by two
internally, you will have to compensate in sensors.conf. Others (in0 to in6)
are likely to be divided externally. The meaning of each of these inputs as
well as the values of the resistors used for division is left to the
motherboard manufacturers, so you will have to document yourself and edit
sensors.conf accordingly. National Semiconductor has a document with
recommended resistor values for some voltages, but this still leaves much
room for per motherboard specificities, unfortunately. Even worse,
motherboard manufacturers don't seem to care about National Semiconductor's
recommendations.
Each voltage measured has associated low and high limits, each of which
triggers an alarm when crossed.
When available, VID inputs are used to provide the nominal CPU Core voltage.
The driver will default to VRM 9.0, but this can be changed from user-space.
The chipsets can handle two sets of VID inputs (on dual-CPU systems), but
the driver will only export one for now. This may change later if there is
a need.
경보 지연·Vbat 수명·제한사항
174-198경보는 하드웨어 레지스터를 최소 한 번 읽을 때까지 유지되므로 원인이 이미 사라진 뒤에도 표시될 수 있습니다. 어떤 데이터든 읽으면 모든 레지스터를 읽지만 마지막 갱신 후 2초가 지나지 않았다면 캐시를 반환합니다.
그 결과 한 번만 발생한 경보는 표시되기까지 최대 2초, 사라지기까지 다시 최대 2초가 걸릴 수 있습니다.
낮은 init 수준 0~2에서 `in9`를 활성화하지 않는 이유는 이 채널이 배터리 전압 Vbat를 측정하기 때문입니다. 배터리를 반복 샘플링하면 수명이 줄어듭니다.
칩은 영향을 줄이기 위해 `in9`를 1024번의 샘플링 주기마다 한 번만, 기본 속도에서는 약 34분마다 측정하지만 수명 영향이 완전히 없어지는 것은 아닙니다.
데이터시트는 모니터링 시작 뒤 팬 하한과 팬 분주기 같은 값을 바꾸지 말라고 권고하지만 드라이버는 현재 이 권고를 무시합니다. 실제 문제가 확인되면 재검토할 예정입니다.
캐시·경보·배터리 샘플링의 시간 특성입니다.
캐시 주기를 고려해 실제 상태와 래치된 경보를 구분합니다.
General Remarks
---------------
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 all hardware registers are read whenever any
data is read (unless it is less than 2 seconds since the last update, in
which case cached values are returned instead). As a consequence, when
a once-only alarm triggers, it may take 2 seconds for it to show, and 2
more seconds for it to disappear.
Monitoring of in9 isn't enabled at lower init levels (<3) because that
channel measures the battery voltage (Vbat). It is a known fact that
repeatedly sampling the battery voltage reduces its lifetime. National
Semiconductor smartly designed their chipset so that in9 is sampled only
once every 1024 sampling cycles (that is every 34 minutes at the default
sampling rate), so the effect is attenuated, but still present.
Limitations
-----------
The datasheets suggests that some values (fan mins, fan dividers)
shouldn't be changed once the monitoring has started, but we ignore that
recommendation. We'll reconsider if it actually causes trouble.
요약·해설
pc87360.rst:1-198모델별 최대 11개 전압·3개 팬·4개 온도를 제공하고 480 kHz 팬 분주기를 자동 선택하며 Vbat 샘플링과 PWM 과열 위험을 다룹니다.
원문 분량과 핵심 장치 구성을 정리합니다.
장치 인식부터 측정·제어까지의 핵심 순서입니다.