Documentation / devicetree / bindings / phy / allwinner,sun9i-a80-usb-phy.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/allwinner,sun9i-a80-usb-phy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Allwinner A80 USB PHY

maintainers:
  - Chen-Yu Tsai <wens@csie.org>
  - Maxime Ripard <mripard@kernel.org>

properties:
  "#phy-cells":
    const: 0

  compatible:
    const: allwinner,sun9i-a80-usb-phy

  reg:
    maxItems: 1

  clocks:
    anyOf:
      - maxItems: 1
        description: Main PHY Clock

      - items:
          - description: Main PHY clock
          - description: HSIC 12MHz clock
          - description: HSIC 480MHz clock

  clock-names:
    oneOf:
      - const: phy

      - items:
          - const: phy
          - const: hsic_12M
          - const: hsic_480M

  resets:
    minItems: 1
    items:
      - description: Normal USB PHY reset
      - description: HSIC Reset

  reset-names:
    minItems: 1
    items:
      - const: phy
      - const: hsic

  phy_type:
    const: hsic
    description:
      When absent, the PHY type will be assumed to be normal USB.

  phy-supply:
    description:
      Regulator that powers VBUS

required:
  - "#phy-cells"
  - compatible
  - reg
  - clocks
  - clock-names
  - resets
  - reset-names

additionalProperties: false

if:
  properties:
    phy_type:
      const: hsic

  required:
    - phy_type

then:
  properties:
    clocks:
      maxItems: 3

    clock-names:
      maxItems: 3

    resets:
      maxItems: 2

    reset-names:
      maxItems: 2

examples:
  - |
    #include <dt-bindings/clock/sun9i-a80-usb.h>
    #include <dt-bindings/reset/sun9i-a80-usb.h>
 
    usbphy1: phy@a00800 {
        compatible = "allwinner,sun9i-a80-usb-phy";
        reg = <0x00a00800 0x4>;
        clocks = <&usb_clocks CLK_USB0_PHY>;
        clock-names = "phy";
        resets = <&usb_clocks RST_USB0_PHY>;
        reset-names = "phy";
        phy-supply = <&reg_usb1_vbus>;
        #phy-cells = <0>;
    };

  - |
    #include <dt-bindings/clock/sun9i-a80-usb.h>
    #include <dt-bindings/reset/sun9i-a80-usb.h>
 
    usbphy3: phy@a02800 {
        compatible = "allwinner,sun9i-a80-usb-phy";
        reg = <0x00a02800 0x4>;
        clocks = <&usb_clocks CLK_USB2_PHY>,
                 <&usb_clocks CLK_USB_HSIC>,
                 <&usb_clocks CLK_USB2_HSIC>;
        clock-names = "phy",
                      "hsic_12M",
                      "hsic_480M";
        resets = <&usb_clocks RST_USB2_PHY>,
                 <&usb_clocks RST_USB2_HSIC>;
        reset-names = "phy",
                      "hsic";
        phy_type = "hsic";
        phy-supply = <&reg_usb3_vbus>;
        #phy-cells = <0>;
    };