← Documents Documentation/devicetree/bindings/usb/mediatek,musb.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / USB

MediaTek MUSB DRD/OTG Controller

MediaTek MUSB의 interrupt·clock·PHY, role-switch connector 의존성과 MT2701 OTG 예제를 설명합니다.

Source pathDocumentation/devicetree/bindings/usb/mediatek,musb.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

mediatek,musb.yaml:1-115

MediaTek MUSB의 interrupt·clock·PHY, role-switch connector 의존성과 MT2701 OTG 예제를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, interrupt, clock, PHY, role switch, source path와 원문 줄 좌표를 원형대로 보존합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 # Copyright (c) 2020 MediaTek
3 %YAML 1.2
4 ---
5 $id: http://devicetree.org/schemas/usb/mediatek,musb.yaml#
6 $schema: http://devicetree.org/meta-schemas/core.yaml#
7
8 title: MediaTek MUSB DRD/OTG Controller
9
10 maintainers:
11 - Min Guo <[email protected]>
12
13 properties:
14 $nodename:
15 pattern: '^usb@[0-9a-f]+$'
16
17 compatible:
18 items:
19 - enum:
20 - mediatek,mt8516-musb
21 - mediatek,mt2701-musb
22 - mediatek,mt7623-musb
23 - const: mediatek,mtk-musb
24
25 reg:
26 maxItems: 1
27
28 interrupts:
29 maxItems: 1
30
31 interrupt-names:
32 items:
33 - const: mc
34
35 clocks:
36 items:
37 - description: The main/core clock
38 - description: The system bus clock
39 - description: The 48Mhz clock
40
41 clock-names:
42 items:
43 - const: main
44 - const: mcu
45 - const: univpll
46
47 phys:
48 maxItems: 1
49
50 usb-role-switch:
51 $ref: /schemas/types.yaml#/definitions/flag
52 description: Support role switch. See usb/generic.txt
53 type: boolean
54
55 dr_mode:
56 enum:
57 - host
58 - otg
59 - peripheral
60
61 power-domains:
62 description: A phandle to USB power domain node to control USB's MTCMOS
63 maxItems: 1
64
65 connector:
66 $ref: /schemas/connector/usb-connector.yaml#
67 description: Connector for dual role switch
68 type: object
69
70 dependencies:
71 usb-role-switch: [ connector ]
72 connector: [ usb-role-switch ]
73
74 required:
75 - compatible
76 - reg
77 - interrupts
78 - interrupt-names
79 - phys
80 - clocks
81 - clock-names
82
83 additionalProperties: false
84
85 examples:
86 - |
87 #include <dt-bindings/clock/mt2701-clk.h>
88 #include <dt-bindings/gpio/gpio.h>
89 #include <dt-bindings/interrupt-controller/arm-gic.h>
90 #include <dt-bindings/interrupt-controller/irq.h>
91 #include <dt-bindings/phy/phy.h>
92 #include <dt-bindings/power/mt2701-power.h>
93
94 usb@11200000 {
95 compatible = "mediatek,mt2701-musb", "mediatek,mtk-musb";
96 reg = <0x11200000 0x1000>;
97 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
98 interrupt-names = "mc";
99 phys = <&u2port2 PHY_TYPE_USB2>;
100 dr_mode = "otg";
101 clocks = <&pericfg CLK_PERI_USB0>,
102 <&pericfg CLK_PERI_USB0_MCU>,
103 <&pericfg CLK_PERI_USB_SLV>;
104 clock-names = "main","mcu","univpll";
105 power-domains = <&scpsys MT2701_POWER_DOMAIN_IFR_MSC>;
106 usb-role-switch;
107
108 connector {
109 compatible = "gpio-usb-b-connector", "usb-b-connector";
110 type = "micro";
111 id-gpios = <&pio 44 GPIO_ACTIVE_HIGH>;
112 vbus-supply = <&usb_vbus>;
113 };
114 };
115 ...
116

3. 한국어 전문 번역

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

MediaTek MUSB DRD/OTG controller

1-12

GPL-2.0-only 또는 BSD-2-Clause로 배포되는 이 schema는 MediaTek MUSB Dual-Role Device/OTG controller를 정의합니다. 관리자는 Min Guo입니다.

Compatible, interrupt, 세 clock과 PHY

13-53

node 이름은 16진 주소가 붙은 `usb@...` 형식입니다. MT8516, MT2701, MT7623 MUSB compatible 중 하나 뒤에 `mediatek,mtk-musb` fallback을 둡니다.

register와 interrupt는 각각 하나이고 interrupt 이름은 `mc`입니다. clock은 main/core, system bus, 48 MHz 순서이며 이름은 `main`, `mcu`, `univpll`입니다. PHY는 하나만 허용합니다.

`usb-role-switch` boolean은 role switching 지원을 나타냅니다.

properties:
  $nodename:
    pattern: '^usb@[0-9a-f]+$'

  compatible:
    items:
      - enum:
          - mediatek,mt8516-musb
          - mediatek,mt2701-musb
          - mediatek,mt7623-musb
      - const: mediatek,mtk-musb

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  interrupt-names:
    items:
      - const: mc

  clocks:
    items:
      - description: The main/core clock
      - description: The system bus clock
      - description: The 48Mhz clock

  clock-names:
    items:
      - const: main
      - const: mcu
      - const: univpll

  phys:
    maxItems: 1

  usb-role-switch:
    $ref: /schemas/types.yaml#/definitions/flag
    description: Support role switch. See usb/generic.txt
    type: boolean

Mode, power domain과 connector 의존성

54-73

`dr_mode`는 `host`, `otg`, `peripheral` 중 하나입니다. `power-domains`는 USB MTCMOS를 제어하는 power domain 하나를 가리킵니다.

`connector` child는 `usb-connector.yaml`을 따르는 dual-role connector입니다. `usb-role-switch`와 `connector`는 서로를 요구하므로 둘을 함께 지정해야 합니다.


  dr_mode:
    enum:
      - host
      - otg
      - peripheral

  power-domains:
    description: A phandle to USB power domain node to control USB's MTCMOS
    maxItems: 1

  connector:
    $ref: /schemas/connector/usb-connector.yaml#
    description: Connector for dual role switch
    type: object

dependencies:
  usb-role-switch: [ connector ]
  connector: [ usb-role-switch ]

필수 속성

74-84

필수 속성은 `compatible`, `reg`, `interrupts`, `interrupt-names`, `phys`, `clocks`, `clock-names`입니다. 정의되지 않은 추가 속성은 허용하지 않습니다.

required:
  - compatible
  - reg
  - interrupts
  - interrupt-names
  - phys
  - clocks
  - clock-names

additionalProperties: false

MT2701 OTG와 GPIO USB-B connector

85-115

예제 `usb@11200000`은 MT2701 및 generic MediaTek MUSB compatible, 0x1000-byte register 영역, level-low GIC SPI 32, USB2 PHY와 OTG mode를 사용합니다.

세 clock, IFR MSC power domain과 role switch를 연결합니다. micro USB-B connector는 active-high GPIO 44로 ID를 감지하고 `usb_vbus` regulator를 사용합니다.

examples:
  - |
    #include <dt-bindings/clock/mt2701-clk.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/power/mt2701-power.h>

    usb@11200000 {
        compatible = "mediatek,mt2701-musb", "mediatek,mtk-musb";
        reg = <0x11200000 0x1000>;
        interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
        interrupt-names = "mc";
        phys = <&u2port2 PHY_TYPE_USB2>;
        dr_mode = "otg";
        clocks = <&pericfg CLK_PERI_USB0>,
                 <&pericfg CLK_PERI_USB0_MCU>,
                 <&pericfg CLK_PERI_USB_SLV>;
        clock-names = "main","mcu","univpll";
        power-domains = <&scpsys MT2701_POWER_DOMAIN_IFR_MSC>;
        usb-role-switch;

        connector {
            compatible = "gpio-usb-b-connector", "usb-b-connector";
            type = "micro";
            id-gpios = <&pio 44 GPIO_ACTIVE_HIGH>;
            vbus-supply = <&usb_vbus>;
        };
    };
...