Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause |
| 2 | %YAML 1.2 |
| 3 | --- |
| 4 | $id: http://devicetree.org/schemas/phy/brcm,brcmstb-usb-phy.yaml# |
| 5 | $schema: http://devicetree.org/meta-schemas/core.yaml# |
| 6 | |
| 7 | title: Broadcom STB USB PHY |
| 8 | |
| 9 | description: Broadcom's PHY that handles EHCI/OHCI and/or XHCI |
| 10 | |
| 11 | maintainers: |
| 12 | - Al Cooper <alcooperx@gmail.com> |
| 13 | - Rafał Miłecki <rafal@milecki.pl> |
| 14 | |
| 15 | properties: |
| 16 | compatible: |
| 17 | enum: |
| 18 | - brcm,bcm4908-usb-phy |
| 19 | - brcm,bcm7211-usb-phy |
| 20 | - brcm,bcm7216-usb-phy |
| 21 | - brcm,brcmstb-usb-phy |
| 22 | |
| 23 | reg: |
| 24 | minItems: 1 |
| 25 | items: |
| 26 | - description: the base CTRL register |
| 27 | - description: XHCI EC register |
| 28 | - description: XHCI GBL register |
| 29 | - description: USB PHY register |
| 30 | - description: USB MDIO register |
| 31 | - description: BDC register |
| 32 | |
| 33 | reg-names: |
| 34 | minItems: 1 |
| 35 | items: |
| 36 | - const: ctrl |
| 37 | - const: xhci_ec |
| 38 | - const: xhci_gbl |
| 39 | - const: usb_phy |
| 40 | - const: usb_mdio |
| 41 | - const: bdc_ec |
| 42 | |
| 43 | power-domains: |
| 44 | maxItems: 1 |
| 45 | |
| 46 | clocks: |
| 47 | minItems: 1 |
| 48 | maxItems: 2 |
| 49 | |
| 50 | clock-names: |
| 51 | minItems: 1 |
| 52 | items: |
| 53 | - const: sw_usb |
| 54 | - const: sw_usb3 |
| 55 | |
| 56 | interrupts: |
| 57 | description: wakeup interrupt |
| 58 | |
| 59 | interrupt-names: |
| 60 | const: wake |
| 61 | |
| 62 | brcm,ipp: |
| 63 | $ref: /schemas/types.yaml#/definitions/uint32 |
| 64 | description: Invert Port Power |
| 65 | minimum: 0 |
| 66 | maximum: 1 |
| 67 | |
| 68 | brcm,ioc: |
| 69 | $ref: /schemas/types.yaml#/definitions/uint32 |
| 70 | description: Invert Over Current detection |
| 71 | minimum: 0 |
| 72 | maximum: 1 |
| 73 | |
| 74 | dr_mode: |
| 75 | description: PHY Device mode. If this property is not defined, the PHY will |
| 76 | default to "host" mode. |
| 77 | enum: |
| 78 | - host |
| 79 | - peripheral |
| 80 | - drd |
| 81 | - typec-pd |
| 82 | |
| 83 | brcm,syscon-piarbctl: |
| 84 | description: phandle to syscon for handling config registers |
| 85 | $ref: /schemas/types.yaml#/definitions/phandle |
| 86 | |
| 87 | brcm,has-xhci: |
| 88 | description: Indicates the PHY has an XHCI PHY. |
| 89 | type: boolean |
| 90 | |
| 91 | brcm,has-eohci: |
| 92 | description: Indicates the PHY has an EHCI/OHCI PHY. |
| 93 | type: boolean |
| 94 | |
| 95 | "#phy-cells": |
| 96 | description: | |
| 97 | Cell allows setting the type of the PHY. Possible values are: |
| 98 | - PHY_TYPE_USB2 for USB1.1/2.0 PHY |
| 99 | - PHY_TYPE_USB3 for USB3.x PHY |
| 100 | const: 1 |
| 101 | |
| 102 | required: |
| 103 | - reg |
| 104 | - "#phy-cells" |
| 105 | |
| 106 | anyOf: |
| 107 | - required: |
| 108 | - brcm,has-xhci |
| 109 | - required: |
| 110 | - brcm,has-eohci |
| 111 | |
| 112 | allOf: |
| 113 | - if: |
| 114 | properties: |
| 115 | compatible: |
| 116 | contains: |
| 117 | enum: |
| 118 | - brcm,bcm4908-usb-phy |
| 119 | - brcm,brcmstb-usb-phy |
| 120 | then: |
| 121 | properties: |
| 122 | reg: |
| 123 | minItems: 1 |
| 124 | maxItems: 2 |
| 125 | - if: |
| 126 | properties: |
| 127 | compatible: |
| 128 | contains: |
| 129 | const: brcm,bcm7211-usb-phy |
| 130 | then: |
| 131 | properties: |
| 132 | reg: |
| 133 | minItems: 5 |
| 134 | maxItems: 6 |
| 135 | reg-names: |
| 136 | minItems: 5 |
| 137 | maxItems: 6 |
| 138 | - if: |
| 139 | properties: |
| 140 | compatible: |
| 141 | contains: |
| 142 | const: brcm,bcm7216-usb-phy |
| 143 | then: |
| 144 | properties: |
| 145 | reg: |
| 146 | minItems: 3 |
| 147 | maxItems: 3 |
| 148 | reg-names: |
| 149 | minItems: 3 |
| 150 | maxItems: 3 |
| 151 | |
| 152 | additionalProperties: false |
| 153 | |
| 154 | examples: |
| 155 | - | |
| 156 | #include <dt-bindings/phy/phy.h> |
| 157 | |
| 158 | usb-phy@f0470200 { |
| 159 | compatible = "brcm,brcmstb-usb-phy"; |
| 160 | reg = <0xf0470200 0xb8>, |
| 161 | <0xf0471940 0x6c0>; |
| 162 | #phy-cells = <1>; |
| 163 | dr_mode = "host"; |
| 164 | brcm,ioc = <1>; |
| 165 | brcm,ipp = <1>; |
| 166 | brcm,has-xhci; |
| 167 | brcm,has-eohci; |
| 168 | clocks = <&usb20>, <&usb30>; |
| 169 | clock-names = "sw_usb", "sw_usb3"; |
| 170 | }; |
| 171 | - | |
| 172 | #include <dt-bindings/phy/phy.h> |
| 173 | |
| 174 | usb-phy@29f0200 { |
| 175 | compatible = "brcm,bcm7211-usb-phy"; |
| 176 | reg = <0x29f0200 0x200>, |
| 177 | <0x29c0880 0x30>, |
| 178 | <0x29cc100 0x534>, |
| 179 | <0x2808000 0x24>, |
| 180 | <0x2980080 0x8>; |
| 181 | reg-names = "ctrl", |
| 182 | "xhci_ec", |
| 183 | "xhci_gbl", |
| 184 | "usb_phy", |
| 185 | "usb_mdio"; |
| 186 | brcm,ioc = <0x0>; |
| 187 | brcm,ipp = <0x0>; |
| 188 | interrupts = <0x30>; |
| 189 | interrupt-parent = <&vpu_intr1_nosec_intc>; |
| 190 | interrupt-names = "wake"; |
| 191 | #phy-cells = <0x1>; |
| 192 | brcm,has-xhci; |
| 193 | brcm,syscon-piarbctl = <&syscon_piarbctl>; |
| 194 | clocks = <&scmi_clk 256>; |
| 195 | clock-names = "sw_usb"; |
| 196 | }; |