162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci# Copyright (c) 2020 MediaTek
362306a36Sopenharmony_ci%YAML 1.2
462306a36Sopenharmony_ci---
562306a36Sopenharmony_ci$id: http://devicetree.org/schemas/usb/mediatek,musb.yaml#
662306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
762306a36Sopenharmony_ci
862306a36Sopenharmony_cititle: MediaTek MUSB DRD/OTG Controller
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cimaintainers:
1162306a36Sopenharmony_ci  - Min Guo <min.guo@mediatek.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciproperties:
1462306a36Sopenharmony_ci  $nodename:
1562306a36Sopenharmony_ci    pattern: '^usb@[0-9a-f]+$'
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci  compatible:
1862306a36Sopenharmony_ci    items:
1962306a36Sopenharmony_ci      - enum:
2062306a36Sopenharmony_ci          - mediatek,mt8516-musb
2162306a36Sopenharmony_ci          - mediatek,mt2701-musb
2262306a36Sopenharmony_ci          - mediatek,mt7623-musb
2362306a36Sopenharmony_ci      - const: mediatek,mtk-musb
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  reg:
2662306a36Sopenharmony_ci    maxItems: 1
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  interrupts:
2962306a36Sopenharmony_ci    maxItems: 1
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  interrupt-names:
3262306a36Sopenharmony_ci    items:
3362306a36Sopenharmony_ci      - const: mc
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  clocks:
3662306a36Sopenharmony_ci    items:
3762306a36Sopenharmony_ci      - description: The main/core clock
3862306a36Sopenharmony_ci      - description: The system bus clock
3962306a36Sopenharmony_ci      - description: The 48Mhz clock
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci  clock-names:
4262306a36Sopenharmony_ci    items:
4362306a36Sopenharmony_ci      - const: main
4462306a36Sopenharmony_ci      - const: mcu
4562306a36Sopenharmony_ci      - const: univpll
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  phys:
4862306a36Sopenharmony_ci    maxItems: 1
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci  usb-role-switch:
5162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
5262306a36Sopenharmony_ci    description: Support role switch. See usb/generic.txt
5362306a36Sopenharmony_ci    type: boolean
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  dr_mode:
5662306a36Sopenharmony_ci    enum:
5762306a36Sopenharmony_ci      - host
5862306a36Sopenharmony_ci      - otg
5962306a36Sopenharmony_ci      - peripheral
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci  power-domains:
6262306a36Sopenharmony_ci    description: A phandle to USB power domain node to control USB's MTCMOS
6362306a36Sopenharmony_ci    maxItems: 1
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci  connector:
6662306a36Sopenharmony_ci    $ref: /schemas/connector/usb-connector.yaml#
6762306a36Sopenharmony_ci    description: Connector for dual role switch
6862306a36Sopenharmony_ci    type: object
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_cidependencies:
7162306a36Sopenharmony_ci  usb-role-switch: [ connector ]
7262306a36Sopenharmony_ci  connector: [ usb-role-switch ]
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_cirequired:
7562306a36Sopenharmony_ci  - compatible
7662306a36Sopenharmony_ci  - reg
7762306a36Sopenharmony_ci  - interrupts
7862306a36Sopenharmony_ci  - interrupt-names
7962306a36Sopenharmony_ci  - phys
8062306a36Sopenharmony_ci  - clocks
8162306a36Sopenharmony_ci  - clock-names
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ciadditionalProperties: false
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciexamples:
8662306a36Sopenharmony_ci  - |
8762306a36Sopenharmony_ci    #include <dt-bindings/clock/mt2701-clk.h>
8862306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
8962306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
9062306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
9162306a36Sopenharmony_ci    #include <dt-bindings/phy/phy.h>
9262306a36Sopenharmony_ci    #include <dt-bindings/power/mt2701-power.h>
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci    usb@11200000 {
9562306a36Sopenharmony_ci        compatible = "mediatek,mt2701-musb", "mediatek,mtk-musb";
9662306a36Sopenharmony_ci        reg = <0x11200000 0x1000>;
9762306a36Sopenharmony_ci        interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
9862306a36Sopenharmony_ci        interrupt-names = "mc";
9962306a36Sopenharmony_ci        phys = <&u2port2 PHY_TYPE_USB2>;
10062306a36Sopenharmony_ci        dr_mode = "otg";
10162306a36Sopenharmony_ci        clocks = <&pericfg CLK_PERI_USB0>,
10262306a36Sopenharmony_ci                 <&pericfg CLK_PERI_USB0_MCU>,
10362306a36Sopenharmony_ci                 <&pericfg CLK_PERI_USB_SLV>;
10462306a36Sopenharmony_ci        clock-names = "main","mcu","univpll";
10562306a36Sopenharmony_ci        power-domains = <&scpsys MT2701_POWER_DOMAIN_IFR_MSC>;
10662306a36Sopenharmony_ci        usb-role-switch;
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci        connector {
10962306a36Sopenharmony_ci            compatible = "gpio-usb-b-connector", "usb-b-connector";
11062306a36Sopenharmony_ci            type = "micro";
11162306a36Sopenharmony_ci            id-gpios = <&pio 44 GPIO_ACTIVE_HIGH>;
11262306a36Sopenharmony_ci            vbus-supply = <&usb_vbus>;
11362306a36Sopenharmony_ci        };
11462306a36Sopenharmony_ci    };
11562306a36Sopenharmony_ci...
116