요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
* STMicroelectronics sdhci-st MMC/SD controller
This file documents the differences between the core properties in
Documentation/devicetree/bindings/mmc/mmc.txt and the properties
used by the sdhci-st driver.
Required properties:
- compatible: Must be "st,sdhci" and it can be compatible to "st,sdhci-stih407"
to set the internal glue logic used for configuring the MMC
subsystem (mmcss) inside the FlashSS (available in STiH407 SoC
family).
- clock-names: Should be "mmc" and "icn". (NB: The latter is not compulsory)
See: Documentation/devicetree/bindings/resource-names.txt
- clocks: Phandle to the clock.
See: Documentation/devicetree/bindings/clock/clock-bindings.txt
- interrupts: One mmc interrupt should be described here.
- interrupt-names: Should be "mmcirq".
- pinctrl-names: A pinctrl state names "default" must be defined.
- pinctrl-0: Phandle referencing pin configuration of the sd/emmc controller.
See: Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
- reg: This must provide the host controller base address and it can also
contain the FlashSS Top register for TX/RX delay used by the driver
to configure DLL inside the flashSS, if so reg-names must also be
specified.
Optional properties:
- reg-names: Should be "mmc" and "top-mmc-delay". "top-mmc-delay" is optional
for eMMC on stih407 family silicon to configure DLL inside FlashSS.
- non-removable: Non-removable slot. Also used for configuring mmcss in STiH407 SoC
family.
See: Documentation/devicetree/bindings/mmc/mmc.txt.
- bus-width: Number of data lines.
See: Documentation/devicetree/bindings/mmc/mmc.txt.
- max-frequency: Can be 200MHz, 100MHz or 50MHz (default) and used for
configuring the CCONFIG3 in the mmcss.
See: Documentation/devicetree/bindings/mmc/mmc.txt.
- resets: Phandle and reset specifier pair to softreset line of HC IP.
See: Documentation/devicetree/bindings/reset/reset.txt
- vqmmc-supply: Phandle to the regulator dt node, mentioned as the vcc/vdd
supply in eMMC/SD specs.
- sd-uhs-sdr50: To enable the SDR50 in the mmcss.
See: Documentation/devicetree/bindings/mmc/mmc.txt.
- sd-uhs-sdr104: To enable the SDR104 in the mmcss.
See: Documentation/devicetree/bindings/mmc/mmc.txt.
- sd-uhs-ddr50: To enable the DDR50 in the mmcss.
See: Documentation/devicetree/bindings/mmc/mmc.txt.
Example:
/* Example stih416e eMMC configuration */
mmc0: sdhci@fe81e000 {
compatible = "st,sdhci";
reg = <0xfe81e000 0x1000>;
interrupts = <GIC_SPI 127 IRQ_TYPE_NONE>;
interrupt-names = "mmcirq";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mmc0>;
clock-names = "mmc";
clocks = <&clk_s_a1_ls 1>;
bus-width = <8>
/* Example SD stih407 family configuration */
mmc1: sdhci@9080000 {
compatible = "st,sdhci-stih407", "st,sdhci";
reg = <0x09080000 0x7ff>;
reg-names = "mmc";
interrupts = <GIC_SPI 90 IRQ_TYPE_NONE>;
interrupt-names = "mmcirq";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sd1>;
clock-names = "mmc";
clocks = <&clk_s_c0_flexgen CLK_MMC_1>;
resets = <&softreset STIH407_MMC1_SOFTRESET>;
bus-width = <4>;
};
/* Example eMMC stih407 family configuration */
mmc0: sdhci@9060000 {
compatible = "st,sdhci-stih407", "st,sdhci";
reg = <0x09060000 0x7ff>, <0x9061008 0x20>;
reg-names = "mmc", "top-mmc-delay";
interrupts = <GIC_SPI 92 IRQ_TYPE_NONE>;
interrupt-names = "mmcirq";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mmc0>;
clock-names = "mmc";
clocks = <&clk_s_c0_flexgen CLK_MMC_0>;
vqmmc-supply = <&vmmc_reg>;
max-frequency = <200000000>;
bus-width = <8>;
non-removable;
sd-uhs-sdr50;
sd-uhs-sdr104;
sd-uhs-ddr50;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
STMicroelectronics sdhci-st
1-6이 문서는 `Documentation/devicetree/bindings/mmc/mmc.txt`의 core 속성과 `sdhci-st` driver가 사용하는 속성 사이의 차이를 설명합니다.
Clock·interrupt·pinctrl·register
7-29필수 `compatible`은 `st,sdhci`이며, STiH407 SoC 계열의 FlashSS 내부 MMC subsystem인 `mmcss`를 구성하는 glue logic을 선택하려면 `st,sdhci-stih407`과도 호환되게 지정할 수 있습니다.
`clock-names`는 `mmc`와 선택적인 `icn`이고 `clocks`는 해당 clock의 phandle입니다. `interrupts`에는 MMC interrupt 하나를 기술하고 `interrupt-names`는 `mmcirq`로 지정합니다.
`pinctrl-names`에는 `default` state가 있어야 하고 `pinctrl-0`은 SD/eMMC controller pin 설정을 참조합니다. `reg`는 host controller base address를 제공하며, driver가 FlashSS 내부 DLL의 TX/RX delay를 구성하도록 FlashSS Top register도 포함할 수 있습니다. 두 범위를 제공하면 `reg-names`도 지정해야 합니다.
Host controller와 STiH407 glue logic이 clock, interrupt, pinctrl, 선택 delay register를 함께 사용합니다.
Slot·속도·reset·I/O 전압
30-59`reg-names`는 `mmc`와 선택적인 `top-mmc-delay`입니다. 후자는 STiH407 계열 eMMC에서 FlashSS 내부 DLL을 구성할 때 사용합니다. `non-removable`은 고정 slot을 나타내며 STiH407 `mmcss` 구성에도 쓰이고, `bus-width`는 data line 수입니다.
`max-frequency`는 200MHz, 100MHz 또는 기본값 50MHz이며 `mmcss`의 `CCONFIG3` 구성에 사용됩니다. `resets`는 host controller IP의 soft-reset line을 가리키는 phandle과 reset specifier 쌍입니다. `vqmmc-supply`는 eMMC·SD 규격에서 Vcc/Vdd supply로 언급되는 regulator node의 phandle입니다.
Boolean `sd-uhs-sdr50`, `sd-uhs-sdr104`, `sd-uhs-ddr50`은 각각 `mmcss`에서 SDR50, SDR104, DDR50 mode를 활성화합니다. 공통 의미는 `mmc.txt`를 따릅니다.
최대 clock과 UHS capability가 mmcss 구성을 결정합니다.
STiH416e eMMC 예제
60-74첫 예제는 STiH416e eMMC controller에 `st,sdhci`, register `0xfe81e000`, GIC SPI 127, default pinctrl, MMC clock과 8-bit bus를 지정합니다. 원문의 `bus-width = <8>` 뒤 semicolon이 없는 상태도 그대로 보존합니다.
/* Example stih416e eMMC configuration */
mmc0: sdhci@fe81e000 {
compatible = "st,sdhci";
reg = <0xfe81e000 0x1000>;
interrupts = <GIC_SPI 127 IRQ_TYPE_NONE>;
interrupt-names = "mmcirq";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mmc0>;
clock-names = "mmc";
clocks = <&clk_s_a1_ls 1>;
bus-width = <8>
STiH407 SD 예제
75-90두 번째 예제는 `st,sdhci-stih407`에서 `st,sdhci`로 fallback하고, SD1 controller register와 reset, 4-bit bus를 연결합니다.
/* Example SD stih407 family configuration */
mmc1: sdhci@9080000 {
compatible = "st,sdhci-stih407", "st,sdhci";
reg = <0x09080000 0x7ff>;
reg-names = "mmc";
interrupts = <GIC_SPI 90 IRQ_TYPE_NONE>;
interrupt-names = "mmcirq";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sd1>;
clock-names = "mmc";
clocks = <&clk_s_c0_flexgen CLK_MMC_1>;
resets = <&softreset STIH407_MMC1_SOFTRESET>;
bus-width = <4>;
};
STiH407 eMMC와 delay register
91-110세 번째 예제는 host register와 `top-mmc-delay` 범위를 모두 제공하고 VQMMC regulator, 200MHz, 8-bit non-removable eMMC, SDR50·SDR104·DDR50 capability를 설정합니다.
/* Example eMMC stih407 family configuration */
mmc0: sdhci@9060000 {
compatible = "st,sdhci-stih407", "st,sdhci";
reg = <0x09060000 0x7ff>, <0x9061008 0x20>;
reg-names = "mmc", "top-mmc-delay";
interrupts = <GIC_SPI 92 IRQ_TYPE_NONE>;
interrupt-names = "mmcirq";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mmc0>;
clock-names = "mmc";
clocks = <&clk_s_c0_flexgen CLK_MMC_0>;
vqmmc-supply = <&vmmc_reg>;
max-frequency = <200000000>;
bus-width = <8>;
non-removable;
sd-uhs-sdr50;
sd-uhs-sdr104;
sd-uhs-ddr50;
};
요약과 해설
sdhci-st.txt:1-110STiH416e와 STiH407의 SD·eMMC 세 구성을 비교해 설명합니다.