1b8900c53SKonstantin Porotchkin# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2b8900c53SKonstantin Porotchkin
3b8900c53SKonstantin Porotchkin%YAML 1.2
4b8900c53SKonstantin Porotchkin---
5*e43462c1SRob Herring$id: http://devicetree.org/schemas/phy/marvell,armada-cp110-utmi-phy.yaml#
6*e43462c1SRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml#
7b8900c53SKonstantin Porotchkin
8b8900c53SKonstantin Porotchkintitle: Marvell Armada CP110/CP115 UTMI PHY
9b8900c53SKonstantin Porotchkin
10b8900c53SKonstantin Porotchkinmaintainers:
11b8900c53SKonstantin Porotchkin  - Konstantin Porotchkin <kostap@marvell.com>
12b8900c53SKonstantin Porotchkin
13b8900c53SKonstantin Porotchkindescription:
14b8900c53SKonstantin Porotchkin  On Armada 7k/8k and CN913x, there are two host and one device USB controllers.
15b8900c53SKonstantin Porotchkin  Each of two exiting UTMI PHYs could be connected to either USB host or USB device
16b8900c53SKonstantin Porotchkin  controller.
17b8900c53SKonstantin Porotchkin  The USB device controller can only be connected to a single UTMI PHY port
18b8900c53SKonstantin Porotchkin                      0.H----- USB HOST0
19b8900c53SKonstantin Porotchkin  UTMI PHY0  --------/
20b8900c53SKonstantin Porotchkin                      0.D-----0
21b8900c53SKonstantin Porotchkin                               \------ USB DEVICE
22b8900c53SKonstantin Porotchkin                      1.D-----1
23b8900c53SKonstantin Porotchkin  UTMI PHY1  --------\
24b8900c53SKonstantin Porotchkin                      1.H----- USB HOST1
25b8900c53SKonstantin Porotchkin
26b8900c53SKonstantin Porotchkinproperties:
27b8900c53SKonstantin Porotchkin  compatible:
28b8900c53SKonstantin Porotchkin    const: marvell,cp110-utmi-phy
29b8900c53SKonstantin Porotchkin
30b8900c53SKonstantin Porotchkin  reg:
31b8900c53SKonstantin Porotchkin    maxItems: 1
32b8900c53SKonstantin Porotchkin
33b8900c53SKonstantin Porotchkin  "#address-cells":
34b8900c53SKonstantin Porotchkin    const: 1
35b8900c53SKonstantin Porotchkin
36b8900c53SKonstantin Porotchkin  "#size-cells":
37b8900c53SKonstantin Porotchkin    const: 0
38b8900c53SKonstantin Porotchkin
39b8900c53SKonstantin Porotchkin  marvell,system-controller:
40b8900c53SKonstantin Porotchkin    description:
41b8900c53SKonstantin Porotchkin      Phandle to the system controller node
42b8900c53SKonstantin Porotchkin    $ref: /schemas/types.yaml#/definitions/phandle
43b8900c53SKonstantin Porotchkin
44b8900c53SKonstantin Porotchkin# Required child nodes:
45b8900c53SKonstantin Porotchkin
46b8900c53SKonstantin PorotchkinpatternProperties:
47b8900c53SKonstantin Porotchkin  "^usb-phy@[0|1]$":
48b8900c53SKonstantin Porotchkin    type: object
49b8900c53SKonstantin Porotchkin    description:
50b8900c53SKonstantin Porotchkin      Each UTMI PHY port must be represented as a sub-node.
51b8900c53SKonstantin Porotchkin
52b8900c53SKonstantin Porotchkin    properties:
53b8900c53SKonstantin Porotchkin      reg:
54b8900c53SKonstantin Porotchkin        description: phy port index.
55b8900c53SKonstantin Porotchkin        maxItems: 1
56b8900c53SKonstantin Porotchkin
57b8900c53SKonstantin Porotchkin      "#phy-cells":
58b8900c53SKonstantin Porotchkin        const: 0
59b8900c53SKonstantin Porotchkin
60b8900c53SKonstantin Porotchkin    required:
61b8900c53SKonstantin Porotchkin      - reg
62b8900c53SKonstantin Porotchkin      - "#phy-cells"
63b8900c53SKonstantin Porotchkin
64b8900c53SKonstantin Porotchkin    additionalProperties: false
65b8900c53SKonstantin Porotchkin
66b8900c53SKonstantin Porotchkinrequired:
67b8900c53SKonstantin Porotchkin  - compatible
68b8900c53SKonstantin Porotchkin  - reg
69b8900c53SKonstantin Porotchkin  - "#address-cells"
70b8900c53SKonstantin Porotchkin  - "#size-cells"
71b8900c53SKonstantin Porotchkin  - marvell,system-controller
72b8900c53SKonstantin Porotchkin
73b8900c53SKonstantin PorotchkinadditionalProperties: false
74b8900c53SKonstantin Porotchkin
75b8900c53SKonstantin Porotchkinexamples:
76b8900c53SKonstantin Porotchkin  - |
77b8900c53SKonstantin Porotchkin    cp0_utmi: utmi@580000 {
78b8900c53SKonstantin Porotchkin      compatible = "marvell,cp110-utmi-phy";
79b8900c53SKonstantin Porotchkin      reg = <0x580000 0x2000>;
80b8900c53SKonstantin Porotchkin      marvell,system-controller = <&cp0_syscon0>;
81b8900c53SKonstantin Porotchkin      #address-cells = <1>;
82b8900c53SKonstantin Porotchkin      #size-cells = <0>;
83b8900c53SKonstantin Porotchkin
84b8900c53SKonstantin Porotchkin      cp0_utmi0: usb-phy@0 {
85b8900c53SKonstantin Porotchkin        reg = <0>;
86b8900c53SKonstantin Porotchkin        #phy-cells = <0>;
87b8900c53SKonstantin Porotchkin      };
88b8900c53SKonstantin Porotchkin
89b8900c53SKonstantin Porotchkin      cp0_utmi1: usb-phy@1 {
90b8900c53SKonstantin Porotchkin        reg = <1>;
91b8900c53SKonstantin Porotchkin        #phy-cells = <0>;
92b8900c53SKonstantin Porotchkin      };
93b8900c53SKonstantin Porotchkin    };
94b8900c53SKonstantin Porotchkin
95b8900c53SKonstantin Porotchkin    cp0_usb3_0 {
96b8900c53SKonstantin Porotchkin      usb-phy = <&cp0_usb3_0_phy0>;
97b8900c53SKonstantin Porotchkin      phys = <&cp0_utmi0>;
98b8900c53SKonstantin Porotchkin      phy-names = "utmi";
99b8900c53SKonstantin Porotchkin      /* UTMI0 is connected to USB host controller (default mode) */
100b8900c53SKonstantin Porotchkin      dr_mode = "host";
101b8900c53SKonstantin Porotchkin    };
102b8900c53SKonstantin Porotchkin
103b8900c53SKonstantin Porotchkin    cp0_usb3_1 {
104b8900c53SKonstantin Porotchkin      usb-phy = <&cp0_usb3_0_phy1>;
105b8900c53SKonstantin Porotchkin      phys = <&cp0_utmi1>;
106b8900c53SKonstantin Porotchkin      phy-names = "utmi";
107b8900c53SKonstantin Porotchkin      /* UTMI1 is connected to USB device controller */
108b8900c53SKonstantin Porotchkin      dr_mode = "peripheral";
109b8900c53SKonstantin Porotchkin    };
110