요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
MAX77620 Power management IC from Maxim Semiconductor.
Required properties:
-------------------
- compatible: Must be one of
"maxim,max77620"
"maxim,max20024"
"maxim,max77663"
- reg: I2C device address.
Optional properties:
-------------------
- interrupts: The interrupt on the parent the controller is
connected to.
- interrupt-controller: Marks the device node as an interrupt controller.
- #interrupt-cells: is <2> and their usage is compliant to the 2 cells
variant of <../interrupt-controller/interrupts.txt>
IRQ numbers for different interrupt source of MAX77620
are defined at dt-bindings/mfd/max77620.h.
- system-power-controller: Indicates that this PMIC is controlling the
system power, see [1] for more details.
[1] Documentation/devicetree/bindings/power/power-controller.txt
Optional subnodes and their properties:
=======================================
Flexible power sequence configurations:
--------------------------------------
The Flexible Power Sequencer (FPS) allows each regulator to power up under
hardware or software control. Additionally, each regulator can power on
independently or among a group of other regulators with an adjustable power-up
and power-down delays (sequencing). GPIO1, GPIO2, and GPIO3 can be programmed
to be part of a sequence allowing external regulators to be sequenced along
with internal regulators. 32KHz clock can be programmed to be part of a
sequence.
The flexible sequencing structure consists of two hardware enable inputs
(EN0, EN1), and 3 master sequencing timers called FPS0, FPS1 and FPS2.
Each master sequencing timer is programmable through its configuration
register to have a hardware enable source (EN1 or EN2) or a software enable
source (SW). When enabled/disabled, the master sequencing timer generates
eight sequencing events on different time periods called slots. The time
period between each event is programmable within the configuration register.
Each regulator, GPIO1, GPIO2, GPIO3, and 32KHz clock has a flexible power
sequence slave register which allows its enable source to be specified as
a flexible power sequencer timer or a software bit. When a FPS source of
regulators, GPIOs and clocks specifies the enable source to be a flexible
power sequencer, the power up and power down delays can be specified in
the regulators, GPIOs and clocks flexible power sequencer configuration
registers.
When FPS event cleared (set to LOW), regulators, GPIOs and 32KHz
clock are set into following state at the sequencing event that
corresponds to its flexible sequencer configuration register.
Sleep state: In this state, regulators, GPIOs
and 32KHz clock get disabled at
the sequencing event.
Global Low Power Mode (GLPM): In this state, regulators are set in
low power mode at the sequencing event.
The configuration parameters of FPS is provided through sub-node "fps"
and their child for FPS specific. The child node name for FPS are "fps0",
"fps1", and "fps2" for FPS0, FPS1 and FPS2 respectively.
The FPS configurations like FPS source, power up and power down slots for
regulators, GPIOs and 32kHz clocks are provided in their respective
configuration nodes which is explained in respective sub-system DT
binding document.
There is need for different FPS configuration parameters based on system
state like when system state changed from active to suspend or active to
power off (shutdown).
Optional properties:
-------------------
-maxim,fps-event-source: u32, FPS event source like external
hardware input to PMIC i.e. EN0, EN1 or
software (SW).
The macros are defined on
dt-bindings/mfd/max77620.h
for different control source.
- MAX77620_FPS_EVENT_SRC_EN0
for hardware input pin EN0.
- MAX77620_FPS_EVENT_SRC_EN1
for hardware input pin EN1.
- MAX77620_FPS_EVENT_SRC_SW
for software control.
-maxim,shutdown-fps-time-period-us: u32, FPS time period in microseconds
when system enters in to shutdown
state.
-maxim,suspend-fps-time-period-us: u32, FPS time period in microseconds
when system enters in to suspend state.
-maxim,device-state-on-disabled-event: u32, describe the PMIC state when FPS
event cleared (set to LOW) whether it
should go to sleep state or low-power
state. Following are valid values:
- MAX77620_FPS_INACTIVE_STATE_SLEEP
to set the PMIC state to sleep.
- MAX77620_FPS_INACTIVE_STATE_LOW_POWER
to set the PMIC state to low
power.
Absence of this property or other value
will not change device state when FPS
event get cleared.
Here supported time periods by device in microseconds are as follows:
MAX77620 supports 40, 80, 160, 320, 640, 1280, 2560 and 5120 microseconds.
MAX20024 supports 20, 40, 80, 160, 320, 640, 1280 and 2540 microseconds.
MAX77663 supports 20, 40, 80, 160, 320, 640, 1280 and 2540 microseconds.
-maxim,power-ok-control: configure map power ok bit
1: Enables POK(Power OK) to control nRST_IO and GPIO1
POK function.
0: Disables POK control.
if property missing, do not configure MPOK bit.
If POK mapping is enabled for GPIO1/nRST_IO then,
GPIO1/nRST_IO pins are HIGH only if all rails
that have POK control enabled are HIGH.
If any of the rails goes down(which are enabled for POK
control) then, GPIO1/nRST_IO goes LOW.
this property is valid for max20024 only.
For DT binding details of different sub modules like GPIO, pincontrol,
regulator, power, please refer respective device-tree binding document
under their respective sub-system directories.
Example:
--------
#include <dt-bindings/mfd/max77620.h>
max77620@3c {
compatible = "maxim,max77620";
reg = <0x3c>;
interrupt-parent = <&intc>;
interrupts = <0 86 IRQ_TYPE_NONE>;
interrupt-controller;
#interrupt-cells = <2>;
fps {
fps0 {
maxim,shutdown-fps-time-period-us = <1280>;
maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN1>;
};
fps1 {
maxim,shutdown-fps-time-period-us = <1280>;
maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
};
fps2 {
maxim,shutdown-fps-time-period-us = <1280>;
maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_SW>;
};
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Maxim MAX77620 계열 PMIC
1-2이 바인딩은 Maxim Semiconductor의 MAX77620 계열 전원 관리 IC를 설명합니다.
EN 또는 software source가 master FPS timer를 구동하고 slot event가 내부·외부 rail을 순차 제어합니다.
필수 칩과 I2C 주소
3-10`compatible`은 `maxim,max77620`, `maxim,max20024`, `maxim,max77663` 중 하나이고 `reg`는 I2C 장치 주소입니다.
상위 IRQ와 system power
11-25선택적인 `interrupts`는 연결된 상위 controller의 인터럽트입니다. `interrupt-controller`는 이 노드를 컨트롤러로 표시합니다. `#interrupt-cells`는 2이며 `../interrupt-controller/interrupts.txt`의 두 cell 변형을 따릅니다. interrupt source 번호는 `dt-bindings/mfd/max77620.h`에 정의됩니다.
`system-power-controller`는 이 PMIC가 system power를 제어함을 나타냅니다. 자세한 내용은 `Documentation/devicetree/bindings/power/power-controller.txt`를 봅니다.
Flexible Power Sequencer 기능
26-38Flexible Power Sequencer(FPS)는 각 regulator를 hardware 또는 software control로 기동합니다. regulator는 독립적으로 또는 다른 regulator 그룹과 함께 조정 가능한 power-up·power-down delay로 순차 기동할 수 있습니다.
GPIO1·GPIO2·GPIO3를 sequence에 넣어 외부 regulator를 내부 regulator와 함께 제어할 수 있고 32kHz clock도 sequence에 포함할 수 있습니다.
Master timer·slot·inactive 상태
39-62sequencing 구조에는 두 hardware enable input EN0·EN1과 세 master timer FPS0·FPS1·FPS2가 있습니다. 각 timer는 configuration register로 EN1 또는 EN2 hardware source나 SW source를 선택합니다. 활성화·비활성화될 때 서로 다른 시간 구간의 slot event 여덟 개를 만들며 event 사이 시간도 설정할 수 있습니다. 원문은 앞에서 EN0·EN1이라 하고 여기서 EN1·EN2라 쓰는 불일치를 그대로 설명에 보존합니다.
각 regulator, GPIO1~3, 32kHz clock은 enable source를 FPS timer 또는 software bit로 지정하는 slave register를 가집니다. FPS를 source로 선택하면 각 구성 register에서 power-up과 power-down delay를 설정합니다.
FPS event가 LOW로 clear되면 대응 slot에서 sleep state 또는 Global Low Power Mode(GLPM)로 전환할 수 있습니다. sleep에서는 regulator·GPIO·32kHz clock을 끄고, GLPM에서는 regulator를 low-power mode로 설정합니다.
FPS 노드와 system state별 구성
63-75FPS parameter는 `fps` subnode와 `fps0`, `fps1`, `fps2` 자식으로 제공합니다. regulator, GPIO, 32kHz clock의 FPS source 및 power-up/down slot은 각 subsystem 바인딩의 해당 구성 노드에 둡니다. active에서 suspend 또는 shutdown으로 바뀌는 system state에 따라 서로 다른 FPS parameter가 필요합니다.
FPS source·주기·inactive state
76-110`maxim,fps-event-source`는 EN0, EN1 또는 SW 중 event source를 선택하는 `u32`입니다. 매크로 `MAX77620_FPS_EVENT_SRC_EN0`, `MAX77620_FPS_EVENT_SRC_EN1`, `MAX77620_FPS_EVENT_SRC_SW`는 `dt-bindings/mfd/max77620.h`에 정의됩니다.
`maxim,shutdown-fps-time-period-us`와 `maxim,suspend-fps-time-period-us`는 각각 shutdown과 suspend 상태의 FPS 주기를 마이크로초로 지정합니다.
`maxim,device-state-on-disabled-event`는 FPS event가 LOW로 clear될 때 PMIC가 sleep 또는 low-power 상태로 갈지 지정합니다. `MAX77620_FPS_INACTIVE_STATE_SLEEP`은 sleep, `MAX77620_FPS_INACTIVE_STATE_LOW_POWER`는 low power입니다. 속성이 없거나 다른 값이면 clear 시 장치 상태를 바꾸지 않습니다.
지원 FPS 주기와 MAX20024 POK
111-127칩별로 허용되는 마이크로초 단위 기간입니다.
`maxim,power-ok-control`은 MAX20024에서만 유효한 map power-ok bit 설정입니다. 값 1은 POK가 `nRST_IO`와 GPIO1 POK 기능을 제어하게 하고 0은 제어를 끕니다. 속성이 없으면 MPOK bit를 구성하지 않습니다.
GPIO1/`nRST_IO`에 POK mapping을 켜면 POK 제어가 활성화된 모든 rail이 HIGH일 때만 두 pin이 HIGH입니다. 그중 어느 rail이라도 내려가면 GPIO1/`nRST_IO`도 LOW가 됩니다.
POK rail의 결합 상태가 reset/GPIO output에 미치는 영향을 정리했습니다.
Subsystem 문서와 FPS 예제
128-162GPIO, pincontrol, regulator, power 같은 각 submodule의 세부 사항은 해당 subsystem 디렉터리의 장치 트리 바인딩을 따릅니다.
예제 MAX77620은 I2C 주소 `0x3c`, 상위 interrupt 86과 두 cell IRQ domain을 사용합니다. FPS0은 EN1, FPS1은 EN0, FPS2는 software source이며 세 timer 모두 shutdown period 1280us입니다.
#include <dt-bindings/mfd/max77620.h>
max77620@3c {
compatible = "maxim,max77620";
reg = <0x3c>;
interrupt-parent = <&intc>;
interrupts = <0 86 IRQ_TYPE_NONE>;
interrupt-controller;
#interrupt-cells = <2>;
fps {
fps0 {
maxim,shutdown-fps-time-period-us = <1280>;
maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN1>;
};
fps1 {
maxim,shutdown-fps-time-period-us = <1280>;
maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
};
fps2 {
maxim,shutdown-fps-time-period-us = <1280>;
maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_SW>;
};
};
};
요약과 해설
max77620.txt:1-162EN/SW source, FPS slot·주기·inactive state와 MAX20024 POK를 설명합니다.