요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
NVIDIA Tegra NAND Flash controller
Required properties:
- compatible: Must be one of:
- "nvidia,tegra20-nand"
- reg: MMIO address range
- interrupts: interrupt output of the NFC controller
- clocks: Must contain an entry for each entry in clock-names.
See ../clocks/clock-bindings.txt for details.
- clock-names: Must include the following entries:
- nand
- resets: Must contain an entry for each entry in reset-names.
See ../reset/reset.txt for details.
- reset-names: Must include the following entries:
- nand
Optional children nodes:
Individual NAND chips are children of the NAND controller node. Currently
only one NAND chip supported.
Required children node properties:
- reg: An integer ranging from 1 to 6 representing the CS line to use.
Optional children node properties:
- nand-ecc-mode: String, operation mode of the NAND ecc mode. Currently only
"hw" is supported.
- nand-ecc-algo: string, algorithm of NAND ECC.
Supported values with "hw" ECC mode are: "rs", "bch".
- nand-bus-width : See nand-controller.yaml
- nand-on-flash-bbt: See nand-controller.yaml
- nand-ecc-strength: integer representing the number of bits to correct
per ECC step (always 512). Supported strength using HW ECC
modes are:
- RS: 4, 6, 8
- BCH: 4, 8, 14, 16
- nand-ecc-maximize: See nand-controller.yaml
- nand-is-boot-medium: Makes sure only ECC strengths supported by the boot ROM
are chosen.
- wp-gpios: GPIO specifier for the write protect pin.
Optional child node of NAND chip nodes:
Partitions: see mtd.yaml
Example:
nand-controller@70008000 {
compatible = "nvidia,tegra20-nand";
reg = <0x70008000 0x100>;
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&tegra_car TEGRA20_CLK_NDFLASH>;
clock-names = "nand";
resets = <&tegra_car 13>;
reset-names = "nand";
nand@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
nand-bus-width = <8>;
nand-on-flash-bbt;
nand-ecc-algo = "bch";
nand-ecc-strength = <8>;
wp-gpios = <&gpio TEGRA_GPIO(S, 0) GPIO_ACTIVE_LOW>;
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
NVIDIA Tegra NAND controller
1-2이 문서는 NVIDIA Tegra NAND Flash controller 바인딩입니다.
MMIO·interrupt·clock·reset
3-16필수 `compatible`은 `nvidia,tegra20-nand`입니다. `reg`는 MMIO address 범위이고 `interrupts`는 NFC controller의 interrupt output입니다.
`clocks`에는 `clock-names`의 각 항목에 대응하는 entry가 있어야 하며 필수 이름은 `nand`입니다. `resets`도 `reset-names`의 각 항목에 대응하고 필수 이름은 `nand`입니다. Clock 형식은 `../clocks/clock-bindings.txt`, reset 형식은 `../reset/reset.txt`를 따릅니다.
NAND chip child와 CS line
17-23개별 NAND chip은 controller node의 선택 child입니다. 현재는 NAND chip 하나만 지원합니다.
Child의 필수 `reg`는 사용할 CS line을 나타내는 1~6 범위의 정수입니다.
Controller는 현재 하나의 NAND child만 지원하며 child의 reg가 CS line을 고릅니다.
Hardware RS·BCH ECC
24-43선택 `nand-ecc-mode`는 ECC 동작 mode 문자열이며 현재 `hw`만 지원합니다. `nand-ecc-algo`의 hardware ECC algorithm은 `rs` 또는 `bch`입니다.
`nand-bus-width`와 `nand-on-flash-bbt`는 `nand-controller.yaml`을 따릅니다. `nand-ecc-strength`는 ECC step마다 정정할 bit 수이며 step은 항상 512입니다. RS는 4·6·8bit, BCH는 4·8·14·16bit strength를 지원합니다.
`nand-ecc-maximize`는 `nand-controller.yaml`을 따릅니다. `nand-is-boot-medium`은 boot ROM이 지원하는 ECC strength만 선택되도록 보장합니다. `wp-gpios`는 write-protect pin의 GPIO specifier입니다.
NAND chip 아래에는 선택적으로 partition child를 둘 수 있으며 `mtd.yaml`을 참조합니다.
512-byte step에서 algorithm별 지원 correction bit 수입니다.
Tegra20 BCH 예제
44-64예제는 `0x70008000`의 controller에 GIC SPI 24, `TEGRA20_CLK_NDFLASH` clock과 NAND reset을 연결합니다. CS0의 8-bit NAND는 on-flash BBT, BCH strength 8과 active-low `TEGRA_GPIO(S, 0)` write protect를 사용합니다.
nand-controller@70008000 {
compatible = "nvidia,tegra20-nand";
reg = <0x70008000 0x100>;
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&tegra_car TEGRA20_CLK_NDFLASH>;
clock-names = "nand";
resets = <&tegra_car 13>;
reset-names = "nand";
nand@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
nand-bus-width = <8>;
nand-on-flash-bbt;
nand-ecc-algo = "bch";
nand-ecc-strength = <8>;
wp-gpios = <&gpio TEGRA_GPIO(S, 0) GPIO_ACTIVE_LOW>;
};
};
요약과 해설
nvidia-tegra20-nand.txt:1-64단일 NAND child와 boot ROM ECC 제한, write protect를 설명합니다.