← Documents Documentation/devicetree/bindings/memory-controllers/ti/emif.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

TI SDRAM EMIF

TI EMIF의 DDR2·DDR3·LPDDR2 PHY, ECC, CS와 PM SRAM 바인딩입니다.

Source pathDocumentation/devicetree/bindings/memory-controllers/ti/emif.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

emif.txt:1-84

Attila/Intelli PHY와 최신 SoC별 호환성 및 하드웨어 기능을 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 * EMIF family of TI SDRAM controllers
2
3 EMIF - External Memory Interface - is an SDRAM controller used in
4 TI SoCs. EMIF supports, based on the IP revision, one or more of
5 DDR2/DDR3/LPDDR2 protocols. This binding describes a given instance
6 of the EMIF IP and memory parts attached to it. Certain revisions
7 of the EMIF controller also contain optional ECC support, which
8 corrects one bit errors and detects two bit errors.
9
10 Required properties:
11 - compatible : Should be of the form "ti,emif-<ip-rev>" where <ip-rev>
12 is the IP revision of the specific EMIF instance. For newer controllers,
13 compatible should be one of the following:
14 "ti,emif-am3352"
15 "ti,emif-am4372"
16 "ti,emif-dra7xx"
17 "ti,emif-keystone"
18
19 - phy-type : <u32> indicating the DDR phy type. Following are the
20 allowed values
21 <1> : Attila PHY
22 <2> : Intelli PHY
23
24 - device-handle : phandle to a "lpddr2" node representing the memory part
25
26 - ti,hwmods : For TI hwmods processing and omap device creation
27 the value shall be "emif<n>" where <n> is the number of the EMIF
28 instance with base 1.
29 - interrupts : interrupt used by the controller
30
31 Required only for "ti,emif-am3352" and "ti,emif-am4372":
32 - sram : Phandles for generic sram driver nodes,
33 first should be type 'protect-exec' for the driver to use to copy
34 and run PM functions, second should be regular pool to be used for
35 data region for code. See Documentation/devicetree/bindings/sram/sram.yaml
36 for more details.
37
38 Optional properties:
39 - cs1-used : Have this property if CS1 of this EMIF
40 instance has a memory part attached to it. If there is a memory
41 part attached to CS1, it should be the same type as the one on CS0,
42 so there is no need to give the details of this memory part.
43
44 - cal-resistor-per-cs : Have this property if the board has one
45 calibration resistor per chip-select.
46
47 - hw-caps-read-idle-ctrl: Have this property if the controller
48 supports read idle window programming
49
50 - hw-caps-dll-calib-ctrl: Have this property if the controller
51 supports dll calibration control
52
53 - hw-caps-ll-interface : Have this property if the controller
54 has a low latency interface and corresponding interrupt events
55
56 - hw-caps-temp-alert : Have this property if the controller
57 has capability for generating SDRAM temperature alerts
58
59 -Examples:
60
61 emif1: emif@4c000000 {
62 compatible = "ti,emif-4d";
63 ti,hwmods = "emif2";
64 phy-type = <1>;
65 device-handle = <&elpida_ECB240ABACN>;
66 cs1-used;
67 hw-caps-read-idle-ctrl;
68 hw-caps-ll-interface;
69 hw-caps-temp-alert;
70 };
71
72 /* From am33xx.dtsi */
73 emif: emif@4c000000 {
74 compatible = "ti,emif-am3352";
75 reg = <0x4C000000 0x1000>;
76 sram = <&pm_sram_code
77 &pm_sram_data>;
78 };
79
80 emif1: emif@4c000000 {
81 compatible = "ti,emif-dra7xx";
82 reg = <0x4c000000 0x200>;
83 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
84 };
85

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

TI SDRAM EMIF 계열

1-9

External Memory Interface(EMIF)는 TI SoC에 쓰이는 SDRAM 컨트롤러입니다. IP revision에 따라 DDR2, DDR3, LPDDR2 프로토콜 중 하나 이상을 지원합니다. 이 바인딩은 특정 EMIF 인스턴스와 연결된 메모리 부품을 설명합니다.

일부 EMIF revision은 선택적인 ECC를 제공해 1비트 오류를 수정하고 2비트 오류를 검출합니다.

TI EMIF 메모리 경로
TI SoC EMIFAttila 또는 Intelli PHY
CS0DDR2 / DDR3 / LPDDR2
Optional CS1Same memory type as CS0
Optional ECCCorrect 1-bit / detect 2-bit

EMIF 인스턴스가 DDR PHY를 통해 CS0과 선택적인 CS1의 같은 종류 메모리를 제어합니다.

필수 호환성·PHY·메모리 속성

10-30

`compatible`은 일반적으로 `ti,emif-<ip-rev>` 형식이며 `<ip-rev>`는 해당 EMIF 인스턴스의 IP revision입니다. 최신 컨트롤러는 `ti,emif-am3352`, `ti,emif-am4372`, `ti,emif-dra7xx`, `ti,emif-keystone` 중 하나를 사용합니다.

`phy-type`은 DDR PHY 종류를 나타내는 `u32`입니다. 값 1은 Attila PHY, 값 2는 Intelli PHY입니다. `device-handle`은 메모리 부품을 나타내는 `lpddr2` 노드의 phandle입니다.

`ti,hwmods`는 TI hwmods 처리와 OMAP 장치 생성에 사용하며 값은 1부터 세는 EMIF 인스턴스 번호를 붙인 `emif<n>`입니다. `interrupts`는 컨트롤러가 사용하는 인터럽트입니다.

AM3352/AM4372의 필수 SRAM

31-37

`ti,emif-am3352`와 `ti,emif-am4372`에서만 `sram`이 필수입니다. 첫 phandle은 드라이버가 PM 함수를 복사해 실행할 `protect-exec` 형식의 generic SRAM 노드이고, 둘째는 코드의 데이터 영역에 사용할 일반 pool입니다. 자세한 내용은 `Documentation/devicetree/bindings/sram/sram.yaml`을 봅니다.

선택 CS·보정·하드웨어 기능

38-58

`cs1-used`는 이 EMIF의 CS1에도 메모리 부품이 연결되었을 때 둡니다. CS1 부품은 CS0과 같은 종류여야 하므로 별도 상세 정보는 필요하지 않습니다. `cal-resistor-per-cs`는 보드에 chip-select마다 calibration resistor가 하나씩 있을 때 사용합니다.

`hw-caps-read-idle-ctrl`은 read idle window programming, `hw-caps-dll-calib-ctrl`은 DLL calibration control, `hw-caps-ll-interface`는 low-latency interface 및 대응 인터럽트 이벤트, `hw-caps-temp-alert`는 SDRAM temperature alert 생성 기능을 컨트롤러가 지원함을 나타냅니다.

EMIF 선택 기능 플래그
속성의미
cs1-usedCS1에 CS0과 같은 종류 메모리 연결
cal-resistor-per-cschip-select별 calibration resistor
hw-caps-read-idle-ctrlread idle window programming
hw-caps-dll-calib-ctrlDLL calibration control
hw-caps-ll-interfacelow-latency interface와 IRQ event
hw-caps-temp-alertSDRAM temperature alert

불리언 속성이 표시하는 보드 구성과 컨트롤러 하드웨어 기능입니다.

세 EMIF 인스턴스 예제

59-84

첫 예제는 `ti,emif-4d`, hwmod `emif2`, Attila PHY와 Elpida LPDDR2 부품을 사용하고 CS1 및 read-idle·low-latency·temperature-alert 기능을 표시합니다.

AM3352 예제는 4KiB 레지스터 영역과 PM 코드·데이터 SRAM phandle을 지정합니다. DRA7xx 예제는 512바이트 레지스터 영역과 level-high GIC SPI 105를 사용합니다.

emif1: emif@4c000000 {
        compatible        = "ti,emif-4d";
        ti,hwmods        = "emif2";
        phy-type        = <1>;
        device-handle        = <&elpida_ECB240ABACN>;
        cs1-used;
        hw-caps-read-idle-ctrl;
        hw-caps-ll-interface;
        hw-caps-temp-alert;
};

/* From am33xx.dtsi */
emif: emif@4c000000 {
        compatible = "ti,emif-am3352";
        reg =   <0x4C000000 0x1000>;
        sram = <&pm_sram_code
                &pm_sram_data>;
};

emif1: emif@4c000000 {
        compatible = "ti,emif-dra7xx";
        reg = <0x4c000000 0x200>;
        interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
};