On Tue, Jan 08, 2019 at 01:39:06PM +0100, Rafał Miłecki wrote: > From: Rafał Miłecki <rafal@xxxxxxxxxx> > > USB 2.0 PHY is a hardware block that happens to use two registers from > the CRU block to setup a single PLL. It's not part of the CRU or DMU > and so its binding shouldn't cover the whole DMU. > > The correct way of handling this is to reference CRU block node using a > syscon. Document that & deprecate the old way. > > Signed-off-by: Rafał Miłecki <rafal@xxxxxxxxxx> > --- > V2: use syscon@ in example (thanks Ray) > --- > .../devicetree/bindings/phy/bcm-ns-usb2-phy.txt | 27 ++++++++++++++++++---- > 1 file changed, 23 insertions(+), 4 deletions(-) > > diff --git a/Documentation/devicetree/bindings/phy/bcm-ns-usb2-phy.txt b/Documentation/devicetree/bindings/phy/bcm-ns-usb2-phy.txt > index a7aee9ea8926..2cafee6b4a8b 100644 > --- a/Documentation/devicetree/bindings/phy/bcm-ns-usb2-phy.txt > +++ b/Documentation/devicetree/bindings/phy/bcm-ns-usb2-phy.txt > @@ -2,19 +2,38 @@ Driver for Broadcom Northstar USB 2.0 PHY > > Required properties: > - compatible: brcm,ns-usb2-phy > -- reg: iomem address range of DMU (Device Management Unit) > -- reg-names: "dmu", the only needed & supported reg right now > +- syscon-cru: phandle to the CRU (Central Resource Unit) syscon > - clocks: USB PHY reference clock > - clock-names: "phy-ref-clk", the only needed & supported clock right now > > +Deprecated: > + > +PHY block should not claim the whole DMU so such a binding has been deprecated. > +It only requires to access few CRU (a DMU subblock) registers and that should be > +handled with a syscon since CRU is a MFD (Multi-Function Device). > + > +- reg: iomem address range of DMU (Device Management Unit) > +- reg-names: "dmu", the only needed & supported reg right now > + > To initialize USB 2.0 PHY driver needs to setup PLL correctly. To do this it > requires passing phandle to the USB PHY reference clock. > > Example: > + dmu@1800c000 { > + compatible = "simple-bus"; DMU sounds like some sort of block, not just a bus. > + ranges = <0 0x1800c000 0x1000>; > + #address-cells = <1>; > + #size-cells = <1>; > + > + cru: syscon@100 { > + compatible = "syscon", "simple-mfd"; Those 2 compatibles alone are not valid. And 'simple-mfd' implies child nodes. Without any knowledge of what else is in the DMU, I can't give any advice as to what this should look like instead. > + reg = <0x100 0x1a4>; > + }; > + }; > + > usb2-phy { > compatible = "brcm,ns-usb2-phy"; > - reg = <0x1800c000 0x1000>; > - reg-names = "dmu"; > + syscon-cru = <&cru>; No need for this. Make it a child of cru node. There's not a contiguous range of phy registers? If there are, keep 'reg' even if Linux doesn't (currently) use it. > #phy-cells = <0>; > clocks = <&genpll BCM_NSP_GENPLL_USB_PHY_REF_CLK>; > clock-names = "phy-ref-clk"; > -- > 2.13.7 >