← Documents Documentation/devicetree/bindings/ufs/cdns,ufshc.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / UFS

Cadence UFS Controller

Cadence UFS host controller의 compatible, clock, power-domain 및 register 제약을 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

cdns,ufshc.yaml:1-73

Cadence UFS host controller의 compatible, clock, power-domain 및 register 제약을 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며 compatible, clock name, phandle, register, 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/cdns,ufshc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Cadence Universal Flash Storage (UFS) Controller
8
9 maintainers:
10 - Jan Kotas <[email protected]>
11
12 # Select only our matches, not all jedec,ufs-2.0
13 select:
14 properties:
15 compatible:
16 contains:
17 enum:
18 - cdns,ufshc
19 - cdns,ufshc-m31-16nm
20 required:
21 - compatible
22
23 allOf:
24 - $ref: ufs-common.yaml
25
26 properties:
27 compatible:
28 items:
29 - enum:
30 - cdns,ufshc
31 # CDNS UFS HC + M31 16nm PHY
32 - cdns,ufshc-m31-16nm
33 - const: jedec,ufs-2.0
34
35 clocks:
36 minItems: 1
37 maxItems: 3
38
39 clock-names:
40 minItems: 1
41 items:
42 - const: core_clk
43 - const: phy_clk
44 - const: ref_clk
45
46 power-domains:
47 maxItems: 1
48
49 reg:
50 maxItems: 1
51
52 dma-coherent: true
53
54 required:
55 - compatible
56 - clocks
57 - clock-names
58 - reg
59
60 unevaluatedProperties: false
61
62 examples:
63 - |
64 #include <dt-bindings/interrupt-controller/arm-gic.h>
65
66 ufs@fd030000 {
67 compatible = "cdns,ufshc", "jedec,ufs-2.0";
68 reg = <0xfd030000 0x10000>;
69 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
70 freq-table-hz = <0 0>, <0 0>;
71 clocks = <&ufs_core_clk>, <&ufs_phy_clk>;
72 clock-names = "core_clk", "phy_clk";
73 };
74

3. 한국어 전문 번역

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

Cadence UFS controller

1-11

GPL-2.0-only 또는 BSD-2-Clause 이중 라이선스의 이 스키마는 Cadence Universal Flash Storage(UFS) controller를 정의합니다. 관리자는 Jan Kotas입니다.

Cadence compatible 선택과 공통 스키마

12-25

이 스키마는 모든 `jedec,ufs-2.0` 장치가 아니라 `compatible` 목록에 `cdns,ufshc` 또는 `cdns,ufshc-m31-16nm`이 포함된 node만 선택합니다. `compatible`은 필수이며, 공통 UFS 속성은 `ufs-common.yaml`을 참조합니다.

# Select only our matches, not all jedec,ufs-2.0
select:
  properties:
    compatible:
      contains:
        enum:
          - cdns,ufshc
          - cdns,ufshc-m31-16nm
  required:
    - compatible

allOf:
  - $ref: ufs-common.yaml

Compatible, clock 및 resource 제약

26-60

`compatible`은 Cadence 기본 host controller인 `cdns,ufshc` 또는 CDNS UFS host controller와 M31 16 nm PHY를 결합한 `cdns,ufshc-m31-16nm` 뒤에 `jedec,ufs-2.0` fallback을 둡니다.

`clocks`는 1~3개이며 `clock-names` 순서는 `core_clk`, `phy_clk`, `ref_clk`입니다. `power-domains`와 `reg`는 각각 최대 한 항목이고 `dma-coherent`를 사용할 수 있습니다. 필수 속성은 `compatible`, `clocks`, `clock-names`, `reg`이며, 평가되지 않은 추가 속성은 허용하지 않습니다.

properties:
  compatible:
    items:
      - enum:
          - cdns,ufshc
            # CDNS UFS HC + M31 16nm PHY
          - cdns,ufshc-m31-16nm
      - const: jedec,ufs-2.0

  clocks:
    minItems: 1
    maxItems: 3

  clock-names:
    minItems: 1
    items:
      - const: core_clk
      - const: phy_clk
      - const: ref_clk

  power-domains:
    maxItems: 1

  reg:
    maxItems: 1

  dma-coherent: true

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

unevaluatedProperties: false

Cadence UFS node 예제

61-73

예제 `ufs@fd030000`은 `cdns,ufshc`와 `jedec,ufs-2.0`을 함께 선언하고, 주소 `0xfd030000`의 0x10000-byte register 영역과 level-high GIC SPI interrupt 1을 사용합니다. 두 항목의 `freq-table-hz`, `ufs_core_clk`와 `ufs_phy_clk`, 그리고 `core_clk`와 `phy_clk` 이름을 같은 순서로 지정합니다.


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

    ufs@fd030000 {
        compatible = "cdns,ufshc", "jedec,ufs-2.0";
        reg = <0xfd030000 0x10000>;
        interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
        freq-table-hz = <0 0>, <0 0>;
        clocks = <&ufs_core_clk>, <&ufs_phy_clk>;
        clock-names = "core_clk", "phy_clk";
    };