← Documents Documentation/devicetree/bindings/usb/ci-hdrc-usb2.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / USB

USB2 ChipIdea USB Controller

일반 ChipIdea USB2 controller의 platform별 compatible, clock·OPP·PHY select, 폐기 속성과 tuning 예제를 설명합니다.

Source pathDocumentation/devicetree/bindings/usb/ci-hdrc-usb2.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

ci-hdrc-usb2.yaml:1-121

일반 ChipIdea USB2 controller의 platform별 compatible, clock·OPP·PHY select, 폐기 속성과 tuning 예제를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, clock, interrupt, connector, PHY, DMA, 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/usb/ci-hdrc-usb2.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: USB2 ChipIdea USB controller
8
9 maintainers:
10 - Xu Yang <[email protected]>
11 - Peng Fan <[email protected]>
12
13 properties:
14 compatible:
15 oneOf:
16 - enum:
17 - chipidea,usb2
18 - lsi,zevio-usb
19 - nuvoton,npcm750-udc
20 - nvidia,tegra20-ehci
21 - nvidia,tegra20-udc
22 - nvidia,tegra30-ehci
23 - nvidia,tegra30-udc
24 - nvidia,tegra114-udc
25 - nvidia,tegra124-udc
26 - nxp,s32g2-usb
27 - qcom,ci-hdrc
28 - items:
29 - enum:
30 - nvidia,tegra114-ehci
31 - nvidia,tegra124-ehci
32 - nvidia,tegra210-ehci
33 - const: nvidia,tegra30-ehci
34 - items:
35 - const: xlnx,zynq-usb-2.20a
36 - const: chipidea,usb2
37 - items:
38 - enum:
39 - nuvoton,npcm845-udc
40 - const: nuvoton,npcm750-udc
41 - items:
42 - enum:
43 - nxp,s32g3-usb
44 - const: nxp,s32g2-usb
45
46 clocks:
47 minItems: 1
48 maxItems: 2
49
50 clock-names:
51 minItems: 1
52 maxItems: 2
53
54 operating-points-v2:
55 description: A phandle to the OPP table containing the performance states.
56 $ref: /schemas/types.yaml#/definitions/phandle
57
58 phy-select:
59 description:
60 Phandler of TCSR node with two argument that indicate register
61 offset, and phy index
62 $ref: /schemas/types.yaml#/definitions/phandle-array
63 items:
64 - description: phandle to TCSR node
65 - description: register offset
66 - description: phy index
67
68 nvidia,phy:
69 description: phandle of usb phy that connects to the port. Use "phys" instead.
70 $ref: /schemas/types.yaml#/definitions/phandle
71 deprecated: true
72
73 nvidia,needs-double-reset:
74 description: Indicates double reset or not.
75 type: boolean
76 deprecated: true
77
78 ulpi:
79 type: object
80 additionalProperties: false
81 patternProperties:
82 "^phy(-[0-9])?$":
83 description: The phy child node for Qcom chips.
84 type: object
85 $ref: /schemas/phy/qcom,usb-hs-phy.yaml
86
87 required:
88 - compatible
89
90 allOf:
91 - $ref: chipidea,usb2-common.yaml#
92 - $ref: usb-hcd.yaml#
93 - $ref: usb-drd.yaml#
94
95 unevaluatedProperties: false
96
97 examples:
98 - |
99 #include <dt-bindings/interrupt-controller/arm-gic.h>
100 #include <dt-bindings/clock/berlin2.h>
101
102 usb@f7ed0000 {
103 compatible = "chipidea,usb2";
104 reg = <0xf7ed0000 0x10000>;
105 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
106 clocks = <&chip CLKID_USB0>;
107 phys = <&usb_phy0>;
108 phy-names = "usb-phy";
109 vbus-supply = <&reg_usb0_vbus>;
110 itc-setting = <0x4>; /* 4 micro-frames */
111 /* Incremental burst of unspecified length */
112 ahb-burst-config = <0x0>;
113 tx-burst-size-dword = <0x10>; /* 64 bytes */
114 rx-burst-size-dword = <0x10>;
115 extcon = <0>, <&usb_id>;
116 phy-clkgate-delay-us = <400>;
117 mux-controls = <&usb_switch>;
118 mux-control-names = "usb_switch";
119 };
120
121 ...
122

3. 한국어 전문 번역

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

USB2 ChipIdea controller

1-12

GPL-2.0-only 또는 BSD-2-Clause 라이선스의 이 schema는 일반 USB2 ChipIdea controller를 정의합니다. 관리자는 Xu Yang과 Peng Fan입니다.

Platform별 compatible과 fallback

13-45

단독 compatible은 `chipidea,usb2`, `lsi,zevio-usb`, `nuvoton,npcm750-udc`, Tegra20·30 EHCI/UDC, Tegra114·124 UDC, `nxp,s32g2-usb`, `qcom,ci-hdrc`입니다.

Tegra114·124·210 EHCI는 `nvidia,tegra30-ehci` fallback을 둡니다. `xlnx,zynq-usb-2.20a`는 `chipidea,usb2`를 뒤따릅니다. NPCM845 UDC는 NPCM750 UDC를, S32G3 USB는 S32G2 USB를 fallback으로 둡니다.

properties:
  compatible:
    oneOf:
      - enum:
          - chipidea,usb2
          - lsi,zevio-usb
          - nuvoton,npcm750-udc
          - nvidia,tegra20-ehci
          - nvidia,tegra20-udc
          - nvidia,tegra30-ehci
          - nvidia,tegra30-udc
          - nvidia,tegra114-udc
          - nvidia,tegra124-udc
          - nxp,s32g2-usb
          - qcom,ci-hdrc
      - items:
          - enum:
              - nvidia,tegra114-ehci
              - nvidia,tegra124-ehci
              - nvidia,tegra210-ehci
          - const: nvidia,tegra30-ehci
      - items:
          - const: xlnx,zynq-usb-2.20a
          - const: chipidea,usb2
      - items:
          - enum:
              - nuvoton,npcm845-udc
          - const: nuvoton,npcm750-udc
      - items:
          - enum:
              - nxp,s32g3-usb
          - const: nxp,s32g2-usb

Clock, OPP와 TCSR PHY 선택

46-67

`clocks`와 `clock-names`는 각각 1~2개입니다. `operating-points-v2`는 performance state를 담은 OPP table phandle입니다.

`phy-select`는 TCSR node phandle, register offset, PHY index의 세 값을 순서대로 담는 phandle array입니다.

clocks:
  minItems: 1
  maxItems: 2

clock-names:
  minItems: 1
  maxItems: 2

operating-points-v2:
  description: A phandle to the OPP table containing the performance states.
  $ref: /schemas/types.yaml#/definitions/phandle

phy-select:
  description:
    Phandler of TCSR node with two argument that indicate register
    offset, and phy index
  $ref: /schemas/types.yaml#/definitions/phandle-array
  items:
    - description: phandle to TCSR node
    - description: register offset
    - description: phy index

폐기된 NVIDIA 속성과 Qualcomm ULPI PHY

68-86

NVIDIA port PHY phandle `nvidia,phy`는 폐기되었으므로 `phys`를 사용해야 합니다. Double reset 필요 여부를 나타내는 boolean `nvidia,needs-double-reset`도 폐기되었습니다.

선택적인 `ulpi` object는 추가 속성을 허용하지 않습니다. `phy` 또는 `phy-N` pattern의 child는 Qualcomm chip용 PHY이며 `qcom,usb-hs-phy.yaml`을 따릅니다.

nvidia,phy:
  description: phandle of usb phy that connects to the port. Use "phys" instead.
  $ref: /schemas/types.yaml#/definitions/phandle
  deprecated: true

nvidia,needs-double-reset:
  description: Indicates double reset or not.
  type: boolean
  deprecated: true

ulpi:
  type: object
  additionalProperties: false
  patternProperties:
    "^phy(-[0-9])?$":
      description: The phy child node for Qcom chips.
      type: object
      $ref: /schemas/phy/qcom,usb-hs-phy.yaml

공통 ChipIdea·HCD·DRD schema

87-96

필수 속성은 `compatible`입니다. 이 binding은 `chipidea,usb2-common.yaml`, `usb-hcd.yaml`, `usb-drd.yaml`을 모두 참조하며 평가되지 않은 추가 속성은 허용하지 않습니다.

required:
  - compatible

allOf:
  - $ref: chipidea,usb2-common.yaml#
  - $ref: usb-hcd.yaml#
  - $ref: usb-drd.yaml#

unevaluatedProperties: false

ChipIdea controller 예제

97-121

예제 `usb@f7ed0000`은 일반 ChipIdea USB2 compatible, 0x10000-byte register 영역, level-high GIC SPI 11, USB0 clock, `usb_phy0`, VBUS regulator를 사용합니다.

ITC 값 4는 micro-frame 4개를 뜻합니다. AHB burst config는 0이고 TX·RX burst는 0x10 dword, 즉 TX 주석 기준 64 byte입니다. VBUS extcon 자리는 빈 `<0>`, ID extcon은 `usb_id`입니다. PHY clock gate 지연은 400 us이고 host/device mux 이름은 `usb_switch`입니다.

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

    usb@f7ed0000 {
        compatible = "chipidea,usb2";
        reg = <0xf7ed0000 0x10000>;
        interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&chip CLKID_USB0>;
        phys = <&usb_phy0>;
        phy-names = "usb-phy";
        vbus-supply = <&reg_usb0_vbus>;
        itc-setting = <0x4>; /* 4 micro-frames */
         /* Incremental burst of unspecified length */
        ahb-burst-config = <0x0>;
        tx-burst-size-dword = <0x10>; /* 64 bytes */
        rx-burst-size-dword = <0x10>;
        extcon = <0>, <&usb_id>;
        phy-clkgate-delay-us = <400>;
        mux-controls = <&usb_switch>;
        mux-control-names = "usb_switch";
    };

...