요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/spi/mediatek,spi-mtk-snfi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: SPI-NAND flash controller for MediaTek ARM SoCs
maintainers:
- Chuanhong Guo <gch981213@gmail.com>
description: |
The Mediatek SPI-NAND flash controller is an extended version of
the Mediatek NAND flash controller. It can perform standard SPI
instructions with one continuous write and one read for up-to 0xa0
bytes. It also supports typical SPI-NAND page cache operations
in single, dual or quad IO mode with pipelined ECC encoding/decoding
using the accompanying ECC engine. There should be only one spi
slave device following generic spi bindings.
properties:
compatible:
enum:
- mediatek,mt7622-snand
- mediatek,mt7629-snand
- mediatek,mt7986-snand
reg:
items:
- description: core registers
interrupts:
items:
- description: NFI interrupt
clocks:
minItems: 2
maxItems: 3
clock-names:
minItems: 2
maxItems: 3
nand-ecc-engine:
description: device-tree node of the accompanying ECC engine.
$ref: /schemas/types.yaml#/definitions/phandle
mediatek,rx-latch-latency-ns:
description: Data read latch latency, unit is nanoseconds.
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
- nand-ecc-engine
allOf:
- $ref: /schemas/spi/spi-controller.yaml#
- if:
properties:
compatible:
enum:
- mediatek,mt7622-snand
- mediatek,mt7629-snand
then:
properties:
clocks:
items:
- description: clock used for the controller
- description: clock used for the SPI bus
clock-names:
items:
- const: nfi_clk
- const: pad_clk
- if:
properties:
compatible:
enum:
- mediatek,mt7986-snand
then:
properties:
clocks:
items:
- description: clock used for the controller
- description: clock used for the SPI bus
- description: clock used for the AHB bus
clock-names:
items:
- const: nfi_clk
- const: pad_clk
- const: nfi_hclk
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/mt7622-clk.h>
soc {
#address-cells = <2>;
#size-cells = <2>;
snfi: spi@1100d000 {
compatible = "mediatek,mt7622-snand";
reg = <0 0x1100d000 0 0x1000>;
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
clocks = <&pericfg CLK_PERI_NFI_PD>, <&pericfg CLK_PERI_SNFI_PD>;
clock-names = "nfi_clk", "pad_clk";
nand-ecc-engine = <&bch>;
#address-cells = <1>;
#size-cells = <0>;
flash@0 {
compatible = "spi-nand";
reg = <0>;
spi-tx-bus-width = <4>;
spi-rx-bus-width = <4>;
nand-ecc-engine = <&snfi>;
};
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
MediaTek SPI-NAND controller
1-20이 GPL-2.0-only 또는 BSD-2-Clause YAML schema는 MediaTek ARM SoC의 SPI-NAND flash controller를 정의합니다. Maintainer는 Chuanhong Guo이고 schema ID는 `http://devicetree.org/schemas/spi/mediatek,spi-mtk-snfi.yaml#`입니다.
이 controller는 MediaTek NAND flash controller의 확장형입니다. 최대 `0xa0` byte를 대상으로 한 번의 연속 write와 한 번의 read로 표준 SPI instruction을 수행할 수 있습니다.
함께 제공되는 ECC engine의 pipelined encoding/decoding을 사용해 single, dual, quad I/O mode의 일반적인 SPI-NAND page-cache operation도 지원합니다. Generic SPI binding을 따르는 slave는 하나만 있어야 합니다.
Compatible, resource와 ECC
21-50허용 compatible은 `mediatek,mt7622-snand`, `mediatek,mt7629-snand`, `mediatek,mt7986-snand`입니다. `reg`의 단일 항목은 core register이고 `interrupts`의 단일 항목은 NFI interrupt입니다.
`clocks`와 `clock-names`는 각각 2~3개입니다. `nand-ecc-engine`은 함께 사용하는 ECC engine node의 phandle이고 필수 속성입니다. `mediatek,rx-latch-latency-ns`는 data read latch latency를 nanosecond 단위로 지정합니다.
필수 속성
51-58필수 속성은 `compatible`, `reg`, `interrupts`, `clocks`, `clock-names`, `nand-ecc-engine`입니다.
MT7622와 MT7629 clock 조건
59-77Schema는 `/schemas/spi/spi-controller.yaml#`을 상속합니다. MT7622와 MT7629는 controller clock과 SPI bus clock 두 개를 사용하며 이름은 순서대로 `nfi_clk`, `pad_clk`여야 합니다.
MT7986 clock 조건과 schema 제한
78-96MT7986은 controller, SPI bus, AHB bus clock 세 개를 사용하며 이름은 순서대로 `nfi_clk`, `pad_clk`, `nfi_hclk`입니다. `unevaluatedProperties: false`로 평가되지 않은 추가 속성을 금지합니다.
MT7622 SPI-NAND 예제
97-124예제는 MT7622 SNFI에 NFI interrupt, `nfi_clk`와 `pad_clk`, BCH ECC engine을 연결합니다. Chip-select 0의 `spi-nand` flash는 TX/RX bus width를 4로 설정하고 controller 자체를 NAND ECC engine으로 참조합니다.
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/mt7622-clk.h>
soc {
#address-cells = <2>;
#size-cells = <2>;
snfi: spi@1100d000 {
compatible = "mediatek,mt7622-snand";
reg = <0 0x1100d000 0 0x1000>;
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
clocks = <&pericfg CLK_PERI_NFI_PD>, <&pericfg CLK_PERI_SNFI_PD>;
clock-names = "nfi_clk", "pad_clk";
nand-ecc-engine = <&bch>;
#address-cells = <1>;
#size-cells = <0>;
flash@0 {
compatible = "spi-nand";
reg = <0>;
spi-tx-bus-width = <4>;
spi-rx-bus-width = <4>;
nand-ecc-engine = <&snfi>;
};
};
};
요약과 해설
mediatek,spi-mtk-snfi.yaml:1-124MediaTek SPI-NAND controller의 ECC engine과 SoC별 clock 조건을 설명합니다. 접을 수 있는 영어 원문 전체와 줄 좌표를 보존하고, 한국어 전문 번역에서는 compatible·property·phandle·clock 순서·수치·예제 코드를 원형대로 유지합니다.