요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
PPC4xx Clock Power Management (CPM) node
Required properties:
- compatible : compatible list, currently only "ibm,cpm"
- dcr-access-method : "native"
- dcr-reg : < DCR register range >
Optional properties:
- er-offset : All 4xx SoCs with a CPM controller have
one of two different order for the CPM
registers. Some have the CPM registers
in the following order (ER,FR,SR). The
others have them in the following order
(SR,ER,FR). For the second case set
er-offset = <1>.
- unused-units : specifier consist of one cell. For each
bit in the cell, the corresponding bit
in CPM will be set to turn off unused
devices.
- idle-doze : specifier consist of one cell. For each
bit in the cell, the corresponding bit
in CPM will be set to turn off unused
devices. This is usually just CPM[CPU].
- standby : specifier consist of one cell. For each
bit in the cell, the corresponding bit
in CPM will be set on standby and
restored on resume.
- suspend : specifier consist of one cell. For each
bit in the cell, the corresponding bit
in CPM will be set on suspend (mem) and
restored on resume. Note, for standby
and suspend the corresponding bits can
be different or the same. Usually for
standby only class 2 and 3 units are set.
However, the interface does not care.
If they are the same, the additional
power saving will be seeing if support
is available to put the DDR in self
refresh mode and any additional power
saving techniques for the specific SoC.
Example:
CPM0: cpm {
compatible = "ibm,cpm";
dcr-access-method = "native";
dcr-reg = <0x160 0x003>;
er-offset = <0>;
unused-units = <0x00000100>;
idle-doze = <0x02000000>;
standby = <0xfeff0000>;
suspend = <0xfeff791d>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
PPC4xx CPM 필수 속성
1-7PPC4xx Clock Power Management(CPM) node의 필수 `compatible` 목록은 현재 `ibm,cpm`뿐입니다. `dcr-access-method`는 `native`이고 `dcr-reg`는 DCR register range입니다.
Register 순서와 unused unit
8-19CPM controller가 있는 4xx SoC에는 CPM register 순서가 두 종류 있습니다. 하나는 `(ER,FR,SR)`, 다른 하나는 `(SR,ER,FR)`입니다. 두 번째 순서이면 `er-offset = <1>`을 지정합니다.
`unused-units`는 1cell specifier입니다. Cell의 각 bit를 설정하면 CPM의 대응 bit가 설정되어 사용하지 않는 device를 끕니다.
Idle·standby·suspend bitmask
20-41`idle-doze`도 1cell specifier이며 각 bit에 대응하는 사용하지 않는 device를 CPM에서 끕니다. 보통 `CPM[CPU]`만 지정합니다.
`standby`의 각 bit는 standby 때 CPM에 설정되고 resume 때 복원됩니다. `suspend`도 같은 방식으로 suspend(mem) 때 설정되고 resume 때 복원됩니다.
Standby와 suspend의 대응 bit는 같아도 다를 수 있습니다. 보통 standby에는 class 2와 3 unit만 설정하지만 interface는 이를 강제하지 않습니다. Bit가 같다면 DDR self-refresh 지원 여부와 SoC별 추가 절전 기법에 따라 추가 절전 효과가 나타납니다.
CPM DCR과 state mask 예제
42-52DCR range, ER offset, unused·idle·standby·suspend mask를 모두 지정하는 예제입니다.
CPM0: cpm {
compatible = "ibm,cpm";
dcr-access-method = "native";
dcr-reg = <0x160 0x003>;
er-offset = <0>;
unused-units = <0x00000100>;
idle-doze = <0x02000000>;
standby = <0xfeff0000>;
suspend = <0xfeff791d>;
};
요약과 해설
cpm.txt:1-52ER offset과 state별 unit bitmask의 적용·복원 시점을 설명합니다.