← Documents Documentation/devicetree/bindings/spi/spi-pl022.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / SPI

ARM PL022 SPI controller

ARM PL022의 PrimeCell 선택 조건, runtime PM, DMA와 peripheral 설정을 설명합니다.

Source pathDocumentation/devicetree/bindings/spi/spi-pl022.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

spi-pl022.yaml:1-111

ARM PL022의 PrimeCell 선택 조건, runtime PM, DMA와 peripheral 설정을 설명합니다. 접을 수 있는 영어 원문 전체와 줄 좌표를 보존하고, 한국어 전문 번역에서는 compatible·property·symbol·source path·수치·예제 코드를 원형대로 유지합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/spi/spi-pl022.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: ARM PL022 SPI controller
8
9 maintainers:
10 - Linus Walleij <linus.walleij@linaro.org>
11
12 allOf:
13 - $ref: spi-controller.yaml#
14 - $ref: /schemas/arm/primecell.yaml#
15
16 # We need a select here so we don't match all nodes with 'arm,primecell'
17 select:
18 properties:
19 compatible:
20 contains:
21 const: arm,pl022
22 required:
23 - compatible
24
25 properties:
26 compatible:
27 items:
28 - const: arm,pl022
29 - const: arm,primecell
30
31 reg:
32 maxItems: 1
33
34 interrupts:
35 maxItems: 1
36
37 clocks:
38 maxItems: 2
39
40 clock-names:
41 items:
42 - const: sspclk
43 - const: apb_pclk
44
45 pl022,autosuspend-delay:
46 description: delay in ms following transfer completion before the
47 runtime power management system suspends the device. A setting of 0
48 indicates no delay and the device will be suspended immediately.
49 $ref: /schemas/types.yaml#/definitions/uint32
50
51 pl022,rt:
52 description: indicates the controller should run the message pump with realtime
53 priority to minimise the transfer latency on the bus (boolean)
54 type: boolean
55
56 dmas:
57 description:
58 Two or more DMA channel specifiers following the convention outlined
59 in bindings/dma/dma.txt
60 minItems: 2
61 maxItems: 32
62
63 dma-names:
64 description:
65 There must be at least one channel named "tx" for transmit and named "rx"
66 for receive.
67 minItems: 2
68 maxItems: 32
69 additionalItems: true
70 items:
71 - const: rx
72 - const: tx
73
74 resets:
75 maxItems: 1
76
77 required:
78 - compatible
79 - reg
80 - interrupts
81
82 unevaluatedProperties: false
83
84 examples:
85 - |
86 spi@e0100000 {
87 compatible = "arm,pl022", "arm,primecell";
88 reg = <0xe0100000 0x1000>;
89 #address-cells = <1>;
90 #size-cells = <0>;
91 interrupts = <0 31 0x4>;
92 dmas = <&dma_controller 23 1>,
93 <&dma_controller 24 0>;
94 dma-names = "rx", "tx";
95
96 flash@1 {
97 compatible = "st,m25p80";
98 reg = <1>;
99 spi-max-frequency = <12000000>;
100 spi-cpol;
101 spi-cpha;
102 pl022,interface = <0>;
103 pl022,com-mode = <0x2>;
104 pl022,rx-level-trig = <0>;
105 pl022,tx-level-trig = <0>;
106 pl022,ctrl-len = <0x11>;
107 pl022,wait-state = <0>;
108 pl022,duplex = <0>;
109 };
110 };
111 ...
112

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>;
      };
    };
...