xref: /freebsd/sys/contrib/device-tree/Bindings/phy/brcm,brcmstb-usb-phy.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotBroadcom STB USB PHY
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotRequired properties:
4*c66ec88fSEmmanuel Vadot- compatible: should be one of
5*c66ec88fSEmmanuel Vadot	"brcm,brcmstb-usb-phy"
6*c66ec88fSEmmanuel Vadot	"brcm,bcm7216-usb-phy"
7*c66ec88fSEmmanuel Vadot	"brcm,bcm7211-usb-phy"
8*c66ec88fSEmmanuel Vadot
9*c66ec88fSEmmanuel Vadot- reg and reg-names properties requirements are specific to the
10*c66ec88fSEmmanuel Vadot  compatible string.
11*c66ec88fSEmmanuel Vadot  "brcm,brcmstb-usb-phy":
12*c66ec88fSEmmanuel Vadot    - reg: 1 or 2 offset and length pairs. One for the base CTRL registers
13*c66ec88fSEmmanuel Vadot           and an optional pair for systems with USB 3.x support
14*c66ec88fSEmmanuel Vadot    - reg-names: not specified
15*c66ec88fSEmmanuel Vadot  "brcm,bcm7216-usb-phy":
16*c66ec88fSEmmanuel Vadot    - reg: 3 offset and length pairs for CTRL, XHCI_EC and XHCI_GBL
17*c66ec88fSEmmanuel Vadot           registers
18*c66ec88fSEmmanuel Vadot    - reg-names: "ctrl", "xhci_ec", "xhci_gbl"
19*c66ec88fSEmmanuel Vadot  "brcm,bcm7211-usb-phy":
20*c66ec88fSEmmanuel Vadot    - reg: 5 offset and length pairs for CTRL, XHCI_EC, XHCI_GBL,
21*c66ec88fSEmmanuel Vadot           USB_PHY and USB_MDIO registers and an optional pair
22*c66ec88fSEmmanuel Vadot	   for the BDC registers
23*c66ec88fSEmmanuel Vadot    - reg-names: "ctrl", "xhci_ec", "xhci_gbl", "usb_phy", "usb_mdio", "bdc_ec"
24*c66ec88fSEmmanuel Vadot
25*c66ec88fSEmmanuel Vadot- #phy-cells: Shall be 1 as it expects one argument for setting
26*c66ec88fSEmmanuel Vadot	      the type of the PHY. Possible values are:
27*c66ec88fSEmmanuel Vadot	      - PHY_TYPE_USB2 for USB1.1/2.0 PHY
28*c66ec88fSEmmanuel Vadot	      - PHY_TYPE_USB3 for USB3.x PHY
29*c66ec88fSEmmanuel Vadot
30*c66ec88fSEmmanuel VadotOptional Properties:
31*c66ec88fSEmmanuel Vadot- clocks : clock phandles.
32*c66ec88fSEmmanuel Vadot- clock-names: String, clock name.
33*c66ec88fSEmmanuel Vadot- interrupts: wakeup interrupt
34*c66ec88fSEmmanuel Vadot- interrupt-names: "wakeup"
35*c66ec88fSEmmanuel Vadot- brcm,ipp: Boolean, Invert Port Power.
36*c66ec88fSEmmanuel Vadot  Possible values are: 0 (Don't invert), 1 (Invert)
37*c66ec88fSEmmanuel Vadot- brcm,ioc: Boolean, Invert Over Current detection.
38*c66ec88fSEmmanuel Vadot  Possible values are: 0 (Don't invert), 1 (Invert)
39*c66ec88fSEmmanuel Vadot- dr_mode: String, PHY Device mode.
40*c66ec88fSEmmanuel Vadot  Possible values are: "host", "peripheral ", "drd" or "typec-pd"
41*c66ec88fSEmmanuel Vadot  If this property is not defined, the phy will default to "host" mode.
42*c66ec88fSEmmanuel Vadot- brcm,syscon-piarbctl: phandle to syscon for handling config registers
43*c66ec88fSEmmanuel VadotNOTE: one or both of the following two properties must be set
44*c66ec88fSEmmanuel Vadot- brcm,has-xhci: Boolean indicating the phy has an XHCI phy.
45*c66ec88fSEmmanuel Vadot- brcm,has-eohci: Boolean indicating the phy has an EHCI/OHCI phy.
46*c66ec88fSEmmanuel Vadot
47*c66ec88fSEmmanuel Vadot
48*c66ec88fSEmmanuel VadotExample:
49*c66ec88fSEmmanuel Vadot
50*c66ec88fSEmmanuel Vadotusbphy_0: usb-phy@f0470200 {
51*c66ec88fSEmmanuel Vadot	reg = <0xf0470200 0xb8>,
52*c66ec88fSEmmanuel Vadot		<0xf0471940 0x6c0>;
53*c66ec88fSEmmanuel Vadot	compatible = "brcm,brcmstb-usb-phy";
54*c66ec88fSEmmanuel Vadot	#phy-cells = <1>;
55*c66ec88fSEmmanuel Vadot	dr_mode = "host"
56*c66ec88fSEmmanuel Vadot	brcm,ioc = <1>;
57*c66ec88fSEmmanuel Vadot	brcm,ipp = <1>;
58*c66ec88fSEmmanuel Vadot	brcm,has-xhci;
59*c66ec88fSEmmanuel Vadot	brcm,has-eohci;
60*c66ec88fSEmmanuel Vadot	clocks = <&usb20>, <&usb30>;
61*c66ec88fSEmmanuel Vadot	clock-names = "sw_usb", "sw_usb3";
62*c66ec88fSEmmanuel Vadot};
63*c66ec88fSEmmanuel Vadot
64*c66ec88fSEmmanuel Vadotusb-phy@29f0200 {
65*c66ec88fSEmmanuel Vadot	reg = <0x29f0200 0x200>,
66*c66ec88fSEmmanuel Vadot		<0x29c0880 0x30>,
67*c66ec88fSEmmanuel Vadot		<0x29cc100 0x534>,
68*c66ec88fSEmmanuel Vadot		<0x2808000 0x24>,
69*c66ec88fSEmmanuel Vadot		<0x2980080 0x8>;
70*c66ec88fSEmmanuel Vadot	reg-names = "ctrl",
71*c66ec88fSEmmanuel Vadot		"xhci_ec",
72*c66ec88fSEmmanuel Vadot		"xhci_gbl",
73*c66ec88fSEmmanuel Vadot		"usb_phy",
74*c66ec88fSEmmanuel Vadot		"usb_mdio";
75*c66ec88fSEmmanuel Vadot	brcm,ioc = <0x0>;
76*c66ec88fSEmmanuel Vadot	brcm,ipp = <0x0>;
77*c66ec88fSEmmanuel Vadot	compatible = "brcm,bcm7211-usb-phy";
78*c66ec88fSEmmanuel Vadot	interrupts = <0x30>;
79*c66ec88fSEmmanuel Vadot	interrupt-parent = <&vpu_intr1_nosec_intc>;
80*c66ec88fSEmmanuel Vadot	interrupt-names = "wake";
81*c66ec88fSEmmanuel Vadot	#phy-cells = <0x1>;
82*c66ec88fSEmmanuel Vadot	brcm,has-xhci;
83*c66ec88fSEmmanuel Vadot	syscon-piarbctl = <&syscon_piarbctl>;
84*c66ec88fSEmmanuel Vadot	clocks = <&scmi_clk 256>;
85*c66ec88fSEmmanuel Vadot	clock-names = "sw_usb";
86*c66ec88fSEmmanuel Vadot};
87