요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/spi/spi-pl022.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ARM PL022 SPI controller
maintainers:
- Linus Walleij <linus.walleij@linaro.org>
allOf:
- $ref: spi-controller.yaml#
- $ref: /schemas/arm/primecell.yaml#
# We need a select here so we don't match all nodes with 'arm,primecell'
select:
properties:
compatible:
contains:
const: arm,pl022
required:
- compatible
properties:
compatible:
items:
- const: arm,pl022
- const: arm,primecell
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
maxItems: 2
clock-names:
items:
- const: sspclk
- const: apb_pclk
pl022,autosuspend-delay:
description: delay in ms following transfer completion before the
runtime power management system suspends the device. A setting of 0
indicates no delay and the device will be suspended immediately.
$ref: /schemas/types.yaml#/definitions/uint32
pl022,rt:
description: indicates the controller should run the message pump with realtime
priority to minimise the transfer latency on the bus (boolean)
type: boolean
dmas:
description:
Two or more DMA channel specifiers following the convention outlined
in bindings/dma/dma.txt
minItems: 2
maxItems: 32
dma-names:
description:
There must be at least one channel named "tx" for transmit and named "rx"
for receive.
minItems: 2
maxItems: 32
additionalItems: true
items:
- const: rx
- const: tx
resets:
maxItems: 1
required:
- compatible
- reg
- interrupts
unevaluatedProperties: false
examples:
- |
spi@e0100000 {
compatible = "arm,pl022", "arm,primecell";
reg = <0xe0100000 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
interrupts = <0 31 0x4>;
dmas = <&dma_controller 23 1>,
<&dma_controller 24 0>;
dma-names = "rx", "tx";
flash@1 {
compatible = "st,m25p80";
reg = <1>;
spi-max-frequency = <12000000>;
spi-cpol;
spi-cpha;
pl022,interface = <0>;
pl022,com-mode = <0x2>;
pl022,rx-level-trig = <0>;
pl022,tx-level-trig = <0>;
pl022,ctrl-len = <0x11>;
pl022,wait-state = <0>;
pl022,duplex = <0>;
};
};
...
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
ARM PL022와 schema 선택 조건
1-24이 GPL-2.0 YAML schema는 ARM PL022 SPI controller를 정의하며 maintainer는 Linus Walleij입니다. 공통 `spi-controller.yaml#`과 `/schemas/arm/primecell.yaml#`을 상속합니다.
모든 `arm,primecell` node와 잘못 일치하지 않도록 `select`가 `compatible` 목록에 `arm,pl022`가 포함된 node만 선택하며, 선택 과정에서도 `compatible`을 필수로 요구합니다.
Compatible, register, interrupt와 clock
25-44`compatible`은 `arm,pl022`, `arm,primecell` 순서의 두 항목입니다. `reg`와 `interrupts`는 각각 최대 한 항목이고 `clocks`는 최대 두 항목입니다. `clock-names`는 SSP clock `sspclk`, APB peripheral clock `apb_pclk` 순서입니다.
Runtime PM과 realtime message pump
45-55`pl022,autosuspend-delay`는 transfer 완료 뒤 runtime power management가 device를 suspend하기 전까지의 millisecond 지연입니다. 0이면 지연 없이 즉시 suspend합니다.
Boolean `pl022,rt`는 bus transfer latency를 최소화하도록 controller의 message pump를 realtime priority로 실행하게 합니다.
DMA channel 이름과 reset
56-76`dmas`는 `bindings/dma/dma.txt` 규약을 따르는 2~32개 DMA channel specifier입니다. `dma-names`도 2~32개이며 최소한 receive용 `rx`와 transmit용 `tx` channel이 그 순서로 있어야 하고 추가 이름도 허용합니다. `resets`는 최대 한 항목입니다.
필수 속성과 추가 속성 제한
77-83필수 속성은 `compatible`, `reg`, `interrupts`입니다. `unevaluatedProperties: false`로 상속 schema에서 평가되지 않은 추가 속성을 금지합니다.
PrimeCell PL022와 SPI NOR 예제
84-111예제의 `spi@e0100000`은 `arm,pl022`, `arm,primecell`, interrupt 31을 사용하며 DMA channel 23은 RX, 24는 TX입니다. Chip select 1의 `st,m25p80` flash는 최대 12 MHz, `spi-cpol`, `spi-cpha` mode로 동작합니다.
Peripheral-specific PL022 설정은 `pl022,interface = <0>`, communication mode `<0x2>`, RX/TX trigger level `<0>`, control length `<0x11>`, wait state와 duplex `<0>`입니다.
spi@e0100000 {
compatible = "arm,pl022", "arm,primecell";
reg = <0xe0100000 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
interrupts = <0 31 0x4>;
dmas = <&dma_controller 23 1>,
<&dma_controller 24 0>;
dma-names = "rx", "tx";
flash@1 {
compatible = "st,m25p80";
reg = <1>;
spi-max-frequency = <12000000>;
spi-cpol;
spi-cpha;
pl022,interface = <0>;
pl022,com-mode = <0x2>;
pl022,rx-level-trig = <0>;
pl022,tx-level-trig = <0>;
pl022,ctrl-len = <0x11>;
pl022,wait-state = <0>;
pl022,duplex = <0>;
};
};
...
요약과 해설
spi-pl022.yaml:1-111ARM PL022의 PrimeCell 선택 조건, runtime PM, DMA와 peripheral 설정을 설명합니다. 접을 수 있는 영어 원문 전체와 줄 좌표를 보존하고, 한국어 전문 번역에서는 compatible·property·symbol·source path·수치·예제 코드를 원형대로 유지합니다.