← Documents Documentation/devicetree/bindings/ufs/samsung,exynos-ufs.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / UFS

Samsung SoC Series UFS Host Controller

Samsung·Google·Tesla UFS controller의 register, clock, PHY, sysreg coherency와 GS101 조건을 설명합니다.

Source pathDocumentation/devicetree/bindings/ufs/samsung,exynos-ufs.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

samsung,exynos-ufs.yaml:1-130

Samsung·Google·Tesla UFS controller의 register, clock, PHY, sysreg coherency와 GS101 조건을 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며 compatible, clock, register, phandle, voltage, interrupt, source path 및 원문 줄 좌표를 원형대로 보존합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/ufs/samsung,exynos-ufs.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Samsung SoC series UFS host controller
8
9 maintainers:
10 - Alim Akhtar <alim.akhtar@samsung.com>
11
12 description: |
13 Each Samsung UFS host controller instance should have its own node.
14
15 properties:
16 compatible:
17 enum:
18 - google,gs101-ufs
19 - samsung,exynos7-ufs
20 - samsung,exynosautov9-ufs
21 - samsung,exynosautov9-ufs-vh
22 - tesla,fsd-ufs
23
24 reg:
25 items:
26 - description: HCI register
27 - description: vendor specific register
28 - description: unipro register
29 - description: UFS protector register
30
31 reg-names:
32 items:
33 - const: hci
34 - const: vs_hci
35 - const: unipro
36 - const: ufsp
37
38 clocks:
39 minItems: 2
40 items:
41 - description: ufs link core clock
42 - description: unipro main clock
43 - description: fmp clock
44 - description: ufs aclk clock
45 - description: ufs pclk clock
46 - description: sysreg clock
47
48 clock-names:
49 minItems: 2
50 items:
51 - const: core_clk
52 - const: sclk_unipro_main
53 - const: fmp
54 - const: aclk
55 - const: pclk
56 - const: sysreg
57
58 phys:
59 maxItems: 1
60
61 phy-names:
62 const: ufs-phy
63
64 samsung,sysreg:
65 $ref: /schemas/types.yaml#/definitions/phandle-array
66 items:
67 - items:
68 - description: phandle to FSYSx sysreg node
69 - description: offset of the control register for UFS io coherency setting
70 description:
71 Phandle and offset to the FSYSx sysreg for UFS io coherency setting.
72
73 dma-coherent: true
74
75 required:
76 - compatible
77 - reg
78 - phys
79 - phy-names
80 - clocks
81 - clock-names
82
83 allOf:
84 - $ref: ufs-common.yaml
85 - if:
86 properties:
87 compatible:
88 contains:
89 const: google,gs101-ufs
90
91 then:
92 properties:
93 clocks:
94 minItems: 6
95
96 clock-names:
97 minItems: 6
98
99 else:
100 properties:
101 clocks:
102 maxItems: 2
103
104 clock-names:
105 maxItems: 2
106
107 unevaluatedProperties: false
108
109 examples:
110 - |
111 #include <dt-bindings/interrupt-controller/arm-gic.h>
112 #include <dt-bindings/clock/exynos7-clk.h>
113
114 ufs: ufs@15570000 {
115 compatible = "samsung,exynos7-ufs";
116 reg = <0x15570000 0x100>,
117 <0x15570100 0x100>,
118 <0x15571000 0x200>,
119 <0x15572000 0x300>;
120 reg-names = "hci", "vs_hci", "unipro", "ufsp";
121 interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>;
122 clocks = <&clock_fsys1 ACLK_UFS20_LINK>,
123 <&clock_fsys1 SCLK_UFSUNIPRO20_USER>;
124 clock-names = "core_clk", "sclk_unipro_main";
125 pinctrl-names = "default";
126 pinctrl-0 = <&ufs_rst_n &ufs_refclk_out>;
127 phys = <&ufs_phy>;
128 phy-names = "ufs-phy";
129 };
130 ...
131

3. 한국어 전문 번역

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

Samsung SoC UFS host controller

1-14

GPL-2.0-only 또는 BSD-2-Clause 이중 라이선스의 이 스키마는 Samsung SoC 계열 UFS host controller를 정의합니다. 관리자는 Alim Akhtar입니다. 각 Samsung UFS host controller instance는 자체 node를 가져야 합니다.

Compatible, 4개 register 및 최대 6개 clock

15-74

지원하는 `compatible`은 `google,gs101-ufs`, `samsung,exynos7-ufs`, `samsung,exynosautov9-ufs`, `samsung,exynosautov9-ufs-vh`, `tesla,fsd-ufs`입니다. Register는 HCI, vendor-specific HCI, UniPro, UFS protector 영역 4개이며 이름은 `hci`, `vs_hci`, `unipro`, `ufsp`입니다.

Clock은 최소 2개이며 UFS link core, UniPro main, FMP, UFS ACLK, UFS PCLK, SYSREG clock 순서입니다. 이름은 `core_clk`, `sclk_unipro_main`, `fmp`, `aclk`, `pclk`, `sysreg`입니다. PHY는 최대 한 개이고 이름은 `ufs-phy`입니다.

`samsung,sysreg`는 UFS I/O coherency를 설정하기 위한 FSYSx sysreg node phandle과 control-register offset의 쌍입니다. `dma-coherent`도 사용할 수 있습니다.

properties:
  compatible:
    enum:
      - google,gs101-ufs
      - samsung,exynos7-ufs
      - samsung,exynosautov9-ufs
      - samsung,exynosautov9-ufs-vh
      - tesla,fsd-ufs

  reg:
    items:
      - description: HCI register
      - description: vendor specific register
      - description: unipro register
      - description: UFS protector register

  reg-names:
    items:
      - const: hci
      - const: vs_hci
      - const: unipro
      - const: ufsp

  clocks:
    minItems: 2
    items:
      - description: ufs link core clock
      - description: unipro main clock
      - description: fmp clock
      - description: ufs aclk clock
      - description: ufs pclk clock
      - description: sysreg clock

  clock-names:
    minItems: 2
    items:
      - const: core_clk
      - const: sclk_unipro_main
      - const: fmp
      - const: aclk
      - const: pclk
      - const: sysreg

  phys:
    maxItems: 1

  phy-names:
    const: ufs-phy

  samsung,sysreg:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      - items:
          - description: phandle to FSYSx sysreg node
          - description: offset of the control register for UFS io coherency setting
    description:
      Phandle and offset to the FSYSx sysreg for UFS io coherency setting.

  dma-coherent: true

필수 속성과 GS101 6-clock 조건

75-108

필수 속성은 `compatible`, `reg`, `phys`, `phy-names`, `clocks`, `clock-names`입니다. 공통 속성은 `ufs-common.yaml`을 참조합니다. `google,gs101-ufs`이면 clock과 clock-name을 최소 6개 제공해야 하고, 그 밖의 compatible에서는 각각 최대 2개입니다. 평가되지 않은 추가 속성은 허용하지 않습니다.

required:
  - compatible
  - reg
  - phys
  - phy-names
  - clocks
  - clock-names

allOf:
  - $ref: ufs-common.yaml
  - if:
      properties:
        compatible:
          contains:
            const: google,gs101-ufs

    then:
      properties:
        clocks:
          minItems: 6

        clock-names:
          minItems: 6

    else:
      properties:
        clocks:
          maxItems: 2

        clock-names:
          maxItems: 2

unevaluatedProperties: false

Exynos7 UFS node 예제

109-130

예제 `ufs@15570000`은 `samsung,exynos7-ufs`와 HCI, vendor HCI, UniPro, protector의 4개 register 영역을 선언합니다. Level-high GIC SPI interrupt 200과 `ACLK_UFS20_LINK`, `SCLK_UFSUNIPRO20_USER` clock을 각각 `core_clk`, `sclk_unipro_main`으로 연결합니다. 기본 pinctrl에는 `ufs_rst_n`과 `ufs_refclk_out`을 사용하고 PHY는 `ufs_phy`를 `ufs-phy` 이름으로 지정합니다.

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/exynos7-clk.h>

    ufs: ufs@15570000 {
        compatible = "samsung,exynos7-ufs";
        reg = <0x15570000 0x100>,
              <0x15570100 0x100>,
              <0x15571000 0x200>,
              <0x15572000 0x300>;
        reg-names = "hci", "vs_hci", "unipro", "ufsp";
        interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&clock_fsys1 ACLK_UFS20_LINK>,
                 <&clock_fsys1 SCLK_UFSUNIPRO20_USER>;
        clock-names = "core_clk", "sclk_unipro_main";
        pinctrl-names = "default";
        pinctrl-0 = <&ufs_rst_n &ufs_refclk_out>;
        phys = <&ufs_phy>;
        phy-names = "ufs-phy";
    };
...