hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
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
133
134
135
# 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 Device Tree Bindings
 
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:
      - 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:
    anyOf:
      - description: Normal USB PHY reset
 
      - items:
          - description: Normal USB PHY reset
          - description: HSIC Reset
 
  reset-names:
    oneOf:
      - const: phy
 
      - 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>;
    };