요약·해설과 원문, 전문 번역을 서로 분리했습니다. 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/spi/snps,dw-apb-ssi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Synopsys DesignWare AMBA 2.0 Synchronous Serial Interface
maintainers:
- Mark Brown <broonie@kernel.org>
allOf:
- $ref: spi-controller.yaml#
- if:
properties:
compatible:
contains:
enum:
- mscc,ocelot-spi
- mscc,jaguar2-spi
then:
properties:
reg:
minItems: 2
- if:
properties:
compatible:
contains:
enum:
- baikal,bt1-sys-ssi
then:
properties:
mux-controls:
maxItems: 1
required:
- mux-controls
else:
required:
- interrupts
- if:
properties:
compatible:
contains:
const: amd,pensando-elba-spi
then:
required:
- amd,pensando-elba-syscon
else:
properties:
amd,pensando-elba-syscon: false
properties:
compatible:
oneOf:
- description: Generic DW SPI Controller
enum:
- snps,dw-apb-ssi
- snps,dwc-ssi-1.01a
- description: Microchip Sparx5 SoC SPI Controller
const: microchip,sparx5-spi
- description: Amazon Alpine SPI Controller
const: amazon,alpine-dw-apb-ssi
- description: Vendor controllers which use snps,dw-apb-ssi as fallback
items:
- enum:
- mscc,ocelot-spi
- mscc,jaguar2-spi
- renesas,rzn1-spi
- sophgo,sg2042-spi
- thead,th1520-spi
- const: snps,dw-apb-ssi
- description: Intel Keem Bay SPI Controller
const: intel,keembay-ssi
- description: Intel Mount Evans Integrated Management Complex SPI Controller
const: intel,mountevans-imc-ssi
- description: AMD Pensando Elba SoC SPI Controller
const: amd,pensando-elba-spi
- description: Baikal-T1 SPI Controller
const: baikal,bt1-ssi
- description: Baikal-T1 System Boot SPI Controller
const: baikal,bt1-sys-ssi
- description: Canaan Kendryte K210 SoS SPI Controller
const: canaan,k210-spi
- description: Renesas RZ/N1 SPI Controller
items:
- const: renesas,r9a06g032-spi # RZ/N1D
- const: renesas,rzn1-spi # RZ/N1
reg:
minItems: 1
items:
- description: DW APB SSI controller memory mapped registers
- description: SPI MST region map or directly mapped SPI ROM
interrupts:
maxItems: 1
clocks:
minItems: 1
items:
- description: SPI Controller reference clock source
- description: APB interface clock source
clock-names:
minItems: 1
items:
- const: ssi_clk
- const: pclk
resets:
maxItems: 1
reset-names:
const: spi
reg-io-width:
description: I/O register width (in bytes) implemented by this device
default: 4
enum: [ 2, 4 ]
num-cs:
default: 4
minimum: 1
maximum: 4
dmas:
items:
- description: TX DMA Channel
- description: RX DMA Channel
dma-names:
items:
- const: tx
- const: rx
rx-sample-delay-ns:
default: 0
description: |
Default value of the rx-sample-delay-ns property.
This value will be used if the property is not explicitly defined
for a SPI slave device.
SPI Rx sample delay offset, unit is nanoseconds.
The delay from the default sample time before the actual sample of the
rxd input signal occurs. The "rx_sample_delay" is an optional feature
of the designware controller, and the upper limit is also subject to
controller configuration.
amd,pensando-elba-syscon:
$ref: /schemas/types.yaml#/definitions/phandle-array
description:
Block address to control SPI chip-selects. The Elba SoC system controller
provides an interface to override the native DWC SSI CS control.
patternProperties:
"^.*@[0-9a-f]+$":
type: object
additionalProperties: true
properties:
reg:
minimum: 0
maximum: 3
unevaluatedProperties: false
required:
- compatible
- reg
- "#address-cells"
- "#size-cells"
- clocks
examples:
- |
spi@fff00000 {
compatible = "snps,dw-apb-ssi";
reg = <0xfff00000 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
interrupts = <0 154 4>;
clocks = <&spi_m_clk>;
num-cs = <2>;
cs-gpios = <&gpio0 13 0>,
<&gpio0 14 0>;
rx-sample-delay-ns = <3>;
flash@1 {
compatible = "spi-nand";
reg = <1>;
rx-sample-delay-ns = <7>;
};
};
- |
spi@1f040100 {
compatible = "baikal,bt1-sys-ssi";
reg = <0x1f040100 0x900>,
<0x1c000000 0x1000000>;
#address-cells = <1>;
#size-cells = <0>;
mux-controls = <&boot_mux>;
clocks = <&ccu_sys>;
clock-names = "ssi_clk";
};
...
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
DesignWare APB SSI schema
1-13이 GPL-2.0-only YAML schema는 Synopsys DesignWare AMBA 2.0 Synchronous Serial Interface를 정의합니다. Schema ID는 `http://devicetree.org/schemas/spi/snps,dw-apb-ssi.yaml#`, maintainer는 Mark Brown입니다.
공통 `spi-controller.yaml#`의 SPI controller 속성을 상속합니다.
Ocelot·Jaguar2 register 조건
14-24Compatible에 `mscc,ocelot-spi` 또는 `mscc,jaguar2-spi`가 포함되면 `reg`는 최소 두 항목이어야 합니다. 둘째 영역은 뒤에서 정의하는 SPI MST region map 또는 direct-mapped SPI ROM입니다.
Baikal mux와 Pensando syscon 조건
25-50Compatible에 `baikal,bt1-sys-ssi`가 포함되면 `mux-controls`는 최대 한 항목이며 필수입니다. 이 system-boot controller가 아니면 `interrupts`가 필수입니다.
Compatible에 `amd,pensando-elba-spi`가 포함되면 `amd,pensando-elba-syscon`이 필수입니다. 그 밖의 compatible에서는 이 속성을 사용할 수 없습니다.
Generic과 vendor compatible
51-88Generic controller compatible은 `snps,dw-apb-ssi`, `snps,dwc-ssi-1.01a`입니다. 단독 vendor compatible은 `microchip,sparx5-spi`, `amazon,alpine-dw-apb-ssi`, `intel,keembay-ssi`, `intel,mountevans-imc-ssi`, `amd,pensando-elba-spi`, `baikal,bt1-ssi`, `baikal,bt1-sys-ssi`, `canaan,k210-spi`입니다.
`snps,dw-apb-ssi`를 fallback으로 쓰는 vendor controller는 첫 항목 `mscc,ocelot-spi`, `mscc,jaguar2-spi`, `renesas,rzn1-spi`, `sophgo,sg2042-spi`, `thead,th1520-spi` 중 하나와 둘째 항목 `snps,dw-apb-ssi`를 사용합니다. RZ/N1D는 `renesas,r9a06g032-spi` 뒤에 RZ/N1 fallback `renesas,rzn1-spi`를 둡니다.
Register, clock, reset과 chip-select
89-125`reg`는 최소 한 항목입니다. 첫 영역은 DW APB SSI memory-mapped register이고, 둘째 선택 영역은 SPI MST region map 또는 direct-mapped SPI ROM입니다. `interrupts`는 최대 한 항목입니다.
`clocks`는 최소 한 항목이며 첫째가 SPI controller reference clock, 둘째 선택 항목이 APB interface clock입니다. `clock-names`는 같은 순서로 `ssi_clk`, `pclk`입니다. `resets`는 최대 한 항목이고 `reset-names`는 `spi`입니다.
`reg-io-width`는 byte 단위 I/O register width이며 2 또는 4, 기본값은 4입니다. `num-cs` 범위는 1~4이고 기본값은 4입니다.
DMA, RX sample delay와 Elba syscon
126-154`dmas`는 TX와 RX channel 두 항목이고 `dma-names`는 `tx`, `rx` 순서입니다.
`rx-sample-delay-ns` 기본값은 0이며 SPI slave가 값을 명시하지 않았을 때 controller 기본값으로 사용됩니다. 이 값은 기본 sample time 이후 실제 `rxd` input을 sampling할 때까지의 offset을 nanosecond 단위로 지정합니다. `rx_sample_delay`는 DesignWare controller의 선택 feature이고 상한은 controller configuration에도 좌우됩니다.
`amd,pensando-elba-syscon`은 chip-select를 제어하는 block address를 담는 phandle array입니다. Elba system controller는 native DWC SSI CS control을 override하는 interface를 제공합니다.
Slave 주소 범위와 공통 필수 속성
155-173정규식 `^.*@[0-9a-f]+$`에 맞는 child는 object이며 추가 속성을 허용합니다. Child `reg` chip-select 번호 범위는 0~3입니다.
필수 속성은 `compatible`, `reg`, `#address-cells`, `#size-cells`, `clocks`입니다. `unevaluatedProperties: false`로 평가되지 않은 controller 속성을 금지합니다.
Generic SSI와 SPI-NAND 예제
174-192첫 예제는 `spi@fff00000`에 `snps,dw-apb-ssi`, interrupt 154, master clock과 두 GPIO chip-select를 지정합니다. Controller의 RX sample delay 기본값은 3ns이고 chip select 1의 SPI-NAND child는 이를 7ns로 override합니다.
spi@fff00000 {
compatible = "snps,dw-apb-ssi";
reg = <0xfff00000 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
interrupts = <0 154 4>;
clocks = <&spi_m_clk>;
num-cs = <2>;
cs-gpios = <&gpio0 13 0>,
<&gpio0 14 0>;
rx-sample-delay-ns = <3>;
flash@1 {
compatible = "spi-nand";
reg = <1>;
rx-sample-delay-ns = <7>;
};
};
Baikal-T1 system-boot SSI 예제
193-204둘째 예제는 `baikal,bt1-sys-ssi` controller에 controller register와 direct-mapped SPI ROM 두 영역, `boot_mux`, system clock `ssi_clk`을 연결합니다. 이 compatible은 조건에 따라 interrupt 대신 `mux-controls`를 필수로 사용합니다. 마지막 `...`는 YAML document 종료 표기입니다.
spi@1f040100 {
compatible = "baikal,bt1-sys-ssi";
reg = <0x1f040100 0x900>,
<0x1c000000 0x1000000>;
#address-cells = <1>;
#size-cells = <0>;
mux-controls = <&boot_mux>;
clocks = <&ccu_sys>;
clock-names = "ssi_clk";
};
요약과 해설
snps,dw-apb-ssi.yaml:1-204DesignWare APB SSI의 vendor compatible, 조건부 register·mux·syscon, DMA와 RX sample delay를 설명합니다. 접을 수 있는 영어 원문 전체와 줄 좌표를 보존하고, 한국어 전문 번역에서는 compatible·property·phandle·interrupt·clock/DMA/reset 순서·수치·조건부 제약·예제 코드를 원형대로 유지합니다.