# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause %YAML 1.2 --- $id: http://devicetree.org/schemas/mfd/brcm,cru.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Broadcom CRU maintainers: - Rafał Miłecki <rafal@milecki.pl> description: | Broadcom CRU ("Clock and Reset Unit" or "Central Resource Unit") is a hardware block grouping smaller blocks. On Broadcom Northstar platform it contains e.g. clocks, pinctrl, USB PHY and thermal. properties: compatible: items: - enum: - brcm,ns-cru - const: simple-mfd reg: description: CRU registers ranges: true "#address-cells": const: 1 "#size-cells": const: 1 patternProperties: '^clock-controller@[a-f0-9]+$': $ref: ../clock/brcm,iproc-clocks.yaml '^phy@[a-f0-9]+$': $ref: ../phy/bcm-ns-usb2-phy.yaml '^pinctrl@[a-f0-9]+$': $ref: ../pinctrl/brcm,ns-pinmux.yaml '^syscon@[a-f0-9]+$': $ref: syscon.yaml '^thermal@[a-f0-9]+$': $ref: ../thermal/brcm,ns-thermal.yaml additionalProperties: false required: - reg examples: - | #include <dt-bindings/clock/bcm-nsp.h> cru-bus@1800c100 { compatible = "brcm,ns-cru", "simple-mfd"; reg = <0x1800c100 0x1d0>; ranges; #address-cells = <1>; #size-cells = <1>; clock-controller@100 { #clock-cells = <1>; compatible = "brcm,nsp-lcpll0"; reg = <0x100 0x14>; clocks = <&osc>; clock-output-names = "lcpll0", "pcie_phy", "sdio", "ddr_phy"; }; clock-controller@140 { #clock-cells = <1>; compatible = "brcm,nsp-genpll"; reg = <0x140 0x24>; clocks = <&osc>; clock-output-names = "genpll", "phy", "ethernetclk", "usbclk", "iprocfast", "sata1", "sata2"; }; phy@164 { compatible = "brcm,ns-usb2-phy"; reg = <0x164 0x4>; brcm,syscon-clkset = <&clkset>; clocks = <&genpll BCM_NSP_GENPLL_USB_PHY_REF_CLK>; clock-names = "phy-ref-clk"; #phy-cells = <0>; }; clkset: syscon@180 { compatible = "brcm,cru-clkset", "syscon"; reg = <0x180 0x4>; }; pinctrl@1c0 { compatible = "brcm,bcm4708-pinmux"; reg = <0x1c0 0x24>; reg-names = "cru_gpio_control"; }; thermal@2c0 { compatible = "brcm,ns-thermal"; reg = <0x2c0 0x10>; #thermal-sensor-cells = <0>; }; };