요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
* EMIF family of TI SDRAM controllers
EMIF - External Memory Interface - is an SDRAM controller used in
TI SoCs. EMIF supports, based on the IP revision, one or more of
DDR2/DDR3/LPDDR2 protocols. This binding describes a given instance
of the EMIF IP and memory parts attached to it. Certain revisions
of the EMIF controller also contain optional ECC support, which
corrects one bit errors and detects two bit errors.
Required properties:
- compatible : Should be of the form "ti,emif-<ip-rev>" where <ip-rev>
is the IP revision of the specific EMIF instance. For newer controllers,
compatible should be one of the following:
"ti,emif-am3352"
"ti,emif-am4372"
"ti,emif-dra7xx"
"ti,emif-keystone"
- phy-type : <u32> indicating the DDR phy type. Following are the
allowed values
<1> : Attila PHY
<2> : Intelli PHY
- device-handle : phandle to a "lpddr2" node representing the memory part
- ti,hwmods : For TI hwmods processing and omap device creation
the value shall be "emif<n>" where <n> is the number of the EMIF
instance with base 1.
- interrupts : interrupt used by the controller
Required only for "ti,emif-am3352" and "ti,emif-am4372":
- sram : Phandles for generic sram driver nodes,
first should be type 'protect-exec' for the driver to use to copy
and run PM functions, second should be regular pool to be used for
data region for code. See Documentation/devicetree/bindings/sram/sram.yaml
for more details.
Optional properties:
- cs1-used : Have this property if CS1 of this EMIF
instance has a memory part attached to it. If there is a memory
part attached to CS1, it should be the same type as the one on CS0,
so there is no need to give the details of this memory part.
- cal-resistor-per-cs : Have this property if the board has one
calibration resistor per chip-select.
- hw-caps-read-idle-ctrl: Have this property if the controller
supports read idle window programming
- hw-caps-dll-calib-ctrl: Have this property if the controller
supports dll calibration control
- hw-caps-ll-interface : Have this property if the controller
has a low latency interface and corresponding interrupt events
- hw-caps-temp-alert : Have this property if the controller
has capability for generating SDRAM temperature alerts
-Examples:
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>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
TI SDRAM EMIF 계열
1-9External Memory Interface(EMIF)는 TI SoC에 쓰이는 SDRAM 컨트롤러입니다. IP revision에 따라 DDR2, DDR3, LPDDR2 프로토콜 중 하나 이상을 지원합니다. 이 바인딩은 특정 EMIF 인스턴스와 연결된 메모리 부품을 설명합니다.
일부 EMIF revision은 선택적인 ECC를 제공해 1비트 오류를 수정하고 2비트 오류를 검출합니다.
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 인스턴스 예제
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>;
};
요약과 해설
emif.txt:1-84Attila/Intelli PHY와 최신 SoC별 호환성 및 하드웨어 기능을 설명합니다.