← Documents Documentation/devicetree/bindings/mmc/sdhci-st.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

STMicroelectronics SDHCI

ST SDHCI의 mmcss glue, FlashSS delay register와 UHS mode 바인딩입니다.

Source pathDocumentation/devicetree/bindings/mmc/sdhci-st.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

sdhci-st.txt:1-110

STiH416e와 STiH407의 SD·eMMC 세 구성을 비교해 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 * STMicroelectronics sdhci-st MMC/SD controller
2
3 This file documents the differences between the core properties in
4 Documentation/devicetree/bindings/mmc/mmc.txt and the properties
5 used by the sdhci-st driver.
6
7 Required properties:
8 - compatible: Must be "st,sdhci" and it can be compatible to "st,sdhci-stih407"
9 to set the internal glue logic used for configuring the MMC
10 subsystem (mmcss) inside the FlashSS (available in STiH407 SoC
11 family).
12
13 - clock-names: Should be "mmc" and "icn". (NB: The latter is not compulsory)
14 See: Documentation/devicetree/bindings/resource-names.txt
15 - clocks: Phandle to the clock.
16 See: Documentation/devicetree/bindings/clock/clock-bindings.txt
17
18 - interrupts: One mmc interrupt should be described here.
19 - interrupt-names: Should be "mmcirq".
20
21 - pinctrl-names: A pinctrl state names "default" must be defined.
22 - pinctrl-0: Phandle referencing pin configuration of the sd/emmc controller.
23 See: Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
24
25 - reg: This must provide the host controller base address and it can also
26 contain the FlashSS Top register for TX/RX delay used by the driver
27 to configure DLL inside the flashSS, if so reg-names must also be
28 specified.
29
30 Optional properties:
31 - reg-names: Should be "mmc" and "top-mmc-delay". "top-mmc-delay" is optional
32 for eMMC on stih407 family silicon to configure DLL inside FlashSS.
33
34 - non-removable: Non-removable slot. Also used for configuring mmcss in STiH407 SoC
35 family.
36 See: Documentation/devicetree/bindings/mmc/mmc.txt.
37
38 - bus-width: Number of data lines.
39 See: Documentation/devicetree/bindings/mmc/mmc.txt.
40
41 - max-frequency: Can be 200MHz, 100MHz or 50MHz (default) and used for
42 configuring the CCONFIG3 in the mmcss.
43 See: Documentation/devicetree/bindings/mmc/mmc.txt.
44
45 - resets: Phandle and reset specifier pair to softreset line of HC IP.
46 See: Documentation/devicetree/bindings/reset/reset.txt
47
48 - vqmmc-supply: Phandle to the regulator dt node, mentioned as the vcc/vdd
49 supply in eMMC/SD specs.
50
51 - sd-uhs-sdr50: To enable the SDR50 in the mmcss.
52 See: Documentation/devicetree/bindings/mmc/mmc.txt.
53
54 - sd-uhs-sdr104: To enable the SDR104 in the mmcss.
55 See: Documentation/devicetree/bindings/mmc/mmc.txt.
56
57 - sd-uhs-ddr50: To enable the DDR50 in the mmcss.
58 See: Documentation/devicetree/bindings/mmc/mmc.txt.
59
60 Example:
61
62 /* Example stih416e eMMC configuration */
63
64 mmc0: sdhci@fe81e000 {
65 compatible = "st,sdhci";
66 reg = <0xfe81e000 0x1000>;
67 interrupts = <GIC_SPI 127 IRQ_TYPE_NONE>;
68 interrupt-names = "mmcirq";
69 pinctrl-names = "default";
70 pinctrl-0 = <&pinctrl_mmc0>;
71 clock-names = "mmc";
72 clocks = <&clk_s_a1_ls 1>;
73 bus-width = <8>
74
75 /* Example SD stih407 family configuration */
76
77 mmc1: sdhci@9080000 {
78 compatible = "st,sdhci-stih407", "st,sdhci";
79 reg = <0x09080000 0x7ff>;
80 reg-names = "mmc";
81 interrupts = <GIC_SPI 90 IRQ_TYPE_NONE>;
82 interrupt-names = "mmcirq";
83 pinctrl-names = "default";
84 pinctrl-0 = <&pinctrl_sd1>;
85 clock-names = "mmc";
86 clocks = <&clk_s_c0_flexgen CLK_MMC_1>;
87 resets = <&softreset STIH407_MMC1_SOFTRESET>;
88 bus-width = <4>;
89 };
90
91 /* Example eMMC stih407 family configuration */
92
93 mmc0: sdhci@9060000 {
94 compatible = "st,sdhci-stih407", "st,sdhci";
95 reg = <0x09060000 0x7ff>, <0x9061008 0x20>;
96 reg-names = "mmc", "top-mmc-delay";
97 interrupts = <GIC_SPI 92 IRQ_TYPE_NONE>;
98 interrupt-names = "mmcirq";
99 pinctrl-names = "default";
100 pinctrl-0 = <&pinctrl_mmc0>;
101 clock-names = "mmc";
102 clocks = <&clk_s_c0_flexgen CLK_MMC_0>;
103 vqmmc-supply = <&vmmc_reg>;
104 max-frequency = <200000000>;
105 bus-width = <8>;
106 non-removable;
107 sd-uhs-sdr50;
108 sd-uhs-sdr104;
109 sd-uhs-ddr50;
110 };
111

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`도 지정해야 합니다.

ST SDHCI 필수 연결
mmc / icn clockssdhci-st host
Default pinctrlsdhci-st host
MMC interruptmmcirq
FlashSS top delay registerTX/RX DLL delay
TX/RX DLL delaySTiH407 mmcss

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`를 따릅니다.

ST SDHCI 속도 선택
속성효과
max-frequency200MHz, 100MHz 또는 기본 50MHz
sd-uhs-sdr50SDR50 활성화
sd-uhs-sdr104SDR104 활성화
sd-uhs-ddr50DDR50 활성화

최대 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;
};