요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/spmi/qcom,spmi-pmic-arb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm SPMI Controller (PMIC Arbiter)
maintainers:
- Stephen Boyd <[email protected]>
description: |
The SPMI PMIC Arbiter is found on Snapdragon chipsets. It is an SPMI
controller with wrapping arbitration logic to allow for multiple on-chip
devices to control a single SPMI master.
The PMIC Arbiter can also act as an interrupt controller, providing interrupts
to slave devices.
allOf:
- $ref: spmi.yaml
properties:
compatible:
const: qcom,spmi-pmic-arb
reg:
oneOf:
- items: # V1
- description: core registers
- description: interrupt controller registers
- description: configuration registers
- items: # V2
- description: core registers
- description: tx-channel per virtual slave regosters
- description: rx-channel (called observer) per virtual slave registers
- description: interrupt controller registers
- description: configuration registers
reg-names:
oneOf:
- items:
- const: core
- const: intr
- const: cnfg
- items:
- const: core
- const: chnls
- const: obsrvr
- const: intr
- const: cnfg
interrupts:
maxItems: 1
interrupt-names:
const: periph_irq
interrupt-controller: true
'#address-cells': true
'#interrupt-cells':
const: 4
description: |
cell 1: slave ID for the requested interrupt (0-15)
cell 2: peripheral ID for requested interrupt (0-255)
cell 3: the requested peripheral interrupt (0-7)
cell 4: interrupt flags indicating level-sense information,
as defined in dt-bindings/interrupt-controller/irq.h
'#size-cells': true
qcom,ee:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 5
description: >
indicates the active Execution Environment identifier
qcom,channel:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 5
description: >
which of the PMIC Arb provided channels to use for accesses
qcom,bus-id:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 1
description: >
SPMI bus instance. only applicable to PMIC arbiter version 7 and beyond.
Supported values, 0 = primary bus, 1 = secondary bus
deprecated: true
required:
- compatible
- reg-names
- qcom,ee
- qcom,channel
unevaluatedProperties: false
examples:
- |
spmi@fc4cf000 {
compatible = "qcom,spmi-pmic-arb";
reg-names = "core", "intr", "cnfg";
reg = <0xfc4cf000 0x1000>,
<0xfc4cb000 0x1000>,
<0xfc4ca000 0x1000>;
interrupt-names = "periph_irq";
interrupts = <0 190 0>;
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
#size-cells = <0>;
interrupt-controller;
#interrupt-cells = <4>;
qcom,bus-id = <0>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Qualcomm SPMI PMIC Arbiter
1-22이 GPL-2.0-only YAML schema는 Snapdragon chipset의 SPMI PMIC Arbiter를 정의합니다. 여러 on-chip device가 단일 SPMI master를 제어할 수 있도록 arbitration logic을 감싸며, slave device에 interrupt를 제공하는 interrupt controller로도 동작합니다. Maintainer는 Stephen Boyd이며 공통 `spmi.yaml`을 상속합니다.
PMIC Arbiter V1·V2 register 배열
23-52`compatible`은 `qcom,spmi-pmic-arb`입니다. V1의 `reg`는 core, interrupt controller, configuration register 세 영역이고 `reg-names`는 `core`, `intr`, `cnfg`입니다.
V2의 `reg`는 core, virtual slave별 TX channel, observer라고도 부르는 virtual slave별 RX channel, interrupt controller, configuration register 다섯 영역입니다. `reg-names`는 `core`, `chnls`, `obsrvr`, `intr`, `cnfg` 순서입니다. 원문의 V2 TX 설명에 있는 `regosters` 철자는 원문 영역 의미를 바꾸지 않고 보존됩니다.
Peripheral interrupt 4-cell specifier
53-73`interrupts`는 최대 한 항목이고 `interrupt-names`는 `periph_irq`입니다. `interrupt-controller`를 지원하며 `#address-cells`와 `#size-cells`도 사용합니다.
`#interrupt-cells`는 4입니다. Cell 1은 slave ID 0~15, cell 2는 peripheral ID 0~255, cell 3은 peripheral interrupt 0~7, cell 4는 `dt-bindings/interrupt-controller/irq.h`가 정의한 level-sense interrupt flag입니다.
Execution environment, channel과 bus ID
74-96`qcom,ee`는 active Execution Environment identifier로 0~5입니다. `qcom,channel`은 PMIC Arbiter가 제공하는 access channel 중 사용할 번호로 역시 0~5입니다.
Deprecated `qcom,bus-id`는 PMIC arbiter version 7 이상에만 적용되는 SPMI bus instance입니다. 값 0은 primary bus, 1은 secondary bus입니다.
필수 속성과 추가 속성 제한
97-104필수 속성은 `compatible`, `reg-names`, `qcom,ee`, `qcom,channel`입니다. `unevaluatedProperties: false`로 평가되지 않은 추가 속성을 금지합니다.
PMIC Arbiter V1 interrupt controller 예제
105-128예제의 `spmi@fc4cf000`은 V1의 `core`, `intr`, `cnfg` 세 register 영역과 `periph_irq` interrupt `<0 190 0>`을 사용합니다. Execution environment와 channel은 모두 0이며 4-cell interrupt controller로 동작하고 primary bus ID 0을 지정합니다.
spmi@fc4cf000 {
compatible = "qcom,spmi-pmic-arb";
reg-names = "core", "intr", "cnfg";
reg = <0xfc4cf000 0x1000>,
<0xfc4cb000 0x1000>,
<0xfc4ca000 0x1000>;
interrupt-names = "periph_irq";
interrupts = <0 190 0>;
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
#size-cells = <0>;
interrupt-controller;
#interrupt-cells = <4>;
qcom,bus-id = <0>;
};
요약과 해설
qcom,spmi-pmic-arb.yaml:1-128Qualcomm PMIC Arbiter V1·V2 register와 4-cell interrupt routing을 설명합니다. 접을 수 있는 영어 원문 전체와 줄 좌표를 보존하고, 한국어 전문 번역에서는 compatible·property·symbol·source path·수치·예제 코드를 원형대로 유지합니다.