요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Freescale Localbus UPM programmed to work with NAND flash
Required properties:
- compatible : "fsl,upm-nand".
- reg : should specify localbus chip select and size used for the chip.
- fsl,upm-addr-offset : UPM pattern offset for the address latch.
- fsl,upm-cmd-offset : UPM pattern offset for the command latch.
Optional properties:
- fsl,upm-addr-line-cs-offsets : address offsets for multi-chip support.
The corresponding address lines are used to select the chip.
- gpios : may specify optional GPIOs connected to the Ready-Not-Busy pins
(R/B#). For multi-chip devices, "n" GPIO definitions are required
according to the number of chips.
Deprecated properties:
- fsl,upm-wait-flags : add chip-dependent short delays after running the
UPM pattern (0x1), after writing a data byte (0x2) or after
writing out a buffer (0x4).
- chip-delay : chip dependent delay for transferring data from array to
read registers (tR). Required if property "gpios" is not used
(R/B# pins not connected).
Each flash chip described may optionally contain additional sub-nodes
describing partitions of the address space. See mtd.yaml for more
detail.
Examples:
upm@1,0 {
compatible = "fsl,upm-nand";
reg = <1 0 1>;
fsl,upm-addr-offset = <16>;
fsl,upm-cmd-offset = <8>;
gpios = <&qe_pio_e 18 0>;
flash {
#address-cells = <1>;
#size-cells = <1>;
compatible = "...";
partition@0 {
...
};
};
};
upm@3,0 {
#address-cells = <0>;
#size-cells = <0>;
compatible = "tqc,tqm8548-upm-nand", "fsl,upm-nand";
reg = <3 0x0 0x800>;
fsl,upm-addr-offset = <0x10>;
fsl,upm-cmd-offset = <0x08>;
/* Multi-chip NAND device */
fsl,upm-addr-line-cs-offsets = <0x0 0x200>;
nand@0 {
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "fs";
reg = <0x00000000 0x10000000>;
};
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Freescale Localbus UPM NAND
1-2이 바인딩은 NAND flash와 동작하도록 programming된 Freescale Localbus UPM을 설명합니다.
UPM latch offset과 multi-chip 선택
3-15필수 `compatible`은 `fsl,upm-nand`입니다. `reg`는 chip에 사용하는 localbus chip-select와 크기를 지정합니다. `fsl,upm-addr-offset`은 address latch용 UPM pattern offset이고 `fsl,upm-cmd-offset`은 command latch용 offset입니다.
선택 `fsl,upm-addr-line-cs-offsets`는 multi-chip 지원을 위한 address offset 목록이며 대응 address line이 chip을 선택합니다. `gpios`는 Ready-Not-Busy pin인 R/B#에 연결된 GPIO를 선택적으로 지정합니다. Multi-chip device에는 chip 수에 맞춰 n개의 GPIO 정의가 필요합니다.
UPM address line offset과 R/B# GPIO가 각 NAND chip을 선택하고 상태를 확인합니다.
Deprecated delay 속성과 partition
16-27Deprecated `fsl,upm-wait-flags`는 UPM pattern 실행 뒤 `0x1`, data byte write 뒤 `0x2`, buffer write 뒤 `0x4`의 chip별 짧은 delay를 추가합니다.
Deprecated `chip-delay`는 array에서 read register로 data를 옮기는 chip별 tR delay입니다. `gpios`를 사용하지 않아 R/B# pin이 연결되지 않은 경우 필수입니다.
각 flash chip에는 address space partition을 설명하는 subnode를 선택적으로 둘 수 있으며 자세한 형식은 `mtd.yaml`을 따릅니다.
Deprecated bit 값이 delay 삽입 지점을 선택합니다.
Single-chip과 multi-chip UPM 예제
28-67첫 예제는 localbus CS1에 address offset 16, command offset 8과 하나의 R/B# GPIO를 연결하고 flash 아래 partition을 둡니다.
upm@1,0 {
compatible = "fsl,upm-nand";
reg = <1 0 1>;
fsl,upm-addr-offset = <16>;
fsl,upm-cmd-offset = <8>;
gpios = <&qe_pio_e 18 0>;
flash {
#address-cells = <1>;
#size-cells = <1>;
compatible = "...";
partition@0 {
...
};
};
};
두 번째 예제는 CS3에서 board 전용 `tqc,tqm8548-upm-nand`를 먼저 적고 `fsl,upm-nand`로 fallback합니다. `fsl,upm-addr-line-cs-offsets = <0x0 0x200>`로 multi-chip을 선택하고 `nand@0` 아래에 256MB `fs` partition을 정의합니다.
upm@3,0 {
#address-cells = <0>;
#size-cells = <0>;
compatible = "tqc,tqm8548-upm-nand", "fsl,upm-nand";
reg = <3 0x0 0x800>;
fsl,upm-addr-offset = <0x10>;
fsl,upm-cmd-offset = <0x08>;
/* Multi-chip NAND device */
fsl,upm-addr-line-cs-offsets = <0x0 0x200>;
nand@0 {
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "fs";
reg = <0x00000000 0x10000000>;
};
};
};
요약과 해설
fsl-upm-nand.txt:1-67Single-chip R/B# GPIO와 address-line multi-chip 선택을 비교합니다.