162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/brcm,cru.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Broadcom CRU
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Rafał Miłecki <rafal@milecki.pl>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  Broadcom CRU ("Clock and Reset Unit" or "Central Resource Unit") is a hardware
1462306a36Sopenharmony_ci  block grouping smaller blocks. On Broadcom Northstar platform it contains e.g.
1562306a36Sopenharmony_ci  clocks, pinctrl, USB PHY and thermal.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciproperties:
1862306a36Sopenharmony_ci  compatible:
1962306a36Sopenharmony_ci    items:
2062306a36Sopenharmony_ci      - enum:
2162306a36Sopenharmony_ci          - brcm,ns-cru
2262306a36Sopenharmony_ci      - const: simple-mfd
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  reg:
2562306a36Sopenharmony_ci    description: CRU registers
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  ranges: true
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  "#address-cells":
3062306a36Sopenharmony_ci    const: 1
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  "#size-cells":
3362306a36Sopenharmony_ci    const: 1
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cipatternProperties:
3662306a36Sopenharmony_ci  '^clock-controller@[a-f0-9]+$':
3762306a36Sopenharmony_ci    $ref: ../clock/brcm,iproc-clocks.yaml
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  '^phy@[a-f0-9]+$':
4062306a36Sopenharmony_ci    $ref: ../phy/bcm-ns-usb2-phy.yaml
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  '^pinctrl@[a-f0-9]+$':
4362306a36Sopenharmony_ci    $ref: ../pinctrl/brcm,ns-pinmux.yaml
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  '^syscon@[a-f0-9]+$':
4662306a36Sopenharmony_ci    $ref: syscon.yaml
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  '^thermal@[a-f0-9]+$':
4962306a36Sopenharmony_ci    $ref: ../thermal/brcm,ns-thermal.yaml
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciadditionalProperties: false
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_cirequired:
5462306a36Sopenharmony_ci  - reg
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ciexamples:
5762306a36Sopenharmony_ci  - |
5862306a36Sopenharmony_ci    #include <dt-bindings/clock/bcm-nsp.h>
5962306a36Sopenharmony_ci    cru-bus@1800c100 {
6062306a36Sopenharmony_ci        compatible = "brcm,ns-cru", "simple-mfd";
6162306a36Sopenharmony_ci        reg = <0x1800c100 0x1d0>;
6262306a36Sopenharmony_ci        ranges;
6362306a36Sopenharmony_ci        #address-cells = <1>;
6462306a36Sopenharmony_ci        #size-cells = <1>;
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci        clock-controller@100 {
6762306a36Sopenharmony_ci            #clock-cells = <1>;
6862306a36Sopenharmony_ci            compatible = "brcm,nsp-lcpll0";
6962306a36Sopenharmony_ci            reg = <0x100 0x14>;
7062306a36Sopenharmony_ci            clocks = <&osc>;
7162306a36Sopenharmony_ci            clock-output-names = "lcpll0", "pcie_phy", "sdio", "ddr_phy";
7262306a36Sopenharmony_ci        };
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci        clock-controller@140 {
7562306a36Sopenharmony_ci            #clock-cells = <1>;
7662306a36Sopenharmony_ci            compatible = "brcm,nsp-genpll";
7762306a36Sopenharmony_ci            reg = <0x140 0x24>;
7862306a36Sopenharmony_ci            clocks = <&osc>;
7962306a36Sopenharmony_ci            clock-output-names = "genpll", "phy", "ethernetclk", "usbclk",
8062306a36Sopenharmony_ci                                 "iprocfast", "sata1", "sata2";
8162306a36Sopenharmony_ci        };
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci        phy@164 {
8462306a36Sopenharmony_ci            compatible = "brcm,ns-usb2-phy";
8562306a36Sopenharmony_ci            reg = <0x164 0x4>;
8662306a36Sopenharmony_ci            brcm,syscon-clkset = <&clkset>;
8762306a36Sopenharmony_ci            clocks = <&genpll BCM_NSP_GENPLL_USB_PHY_REF_CLK>;
8862306a36Sopenharmony_ci            clock-names = "phy-ref-clk";
8962306a36Sopenharmony_ci            #phy-cells = <0>;
9062306a36Sopenharmony_ci        };
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci        clkset: syscon@180 {
9362306a36Sopenharmony_ci            compatible = "brcm,cru-clkset", "syscon";
9462306a36Sopenharmony_ci            reg = <0x180 0x4>;
9562306a36Sopenharmony_ci        };
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci        pinctrl@1c0 {
9862306a36Sopenharmony_ci            compatible = "brcm,bcm4708-pinmux";
9962306a36Sopenharmony_ci            reg = <0x1c0 0x24>;
10062306a36Sopenharmony_ci            reg-names = "cru_gpio_control";
10162306a36Sopenharmony_ci        };
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci        thermal@2c0 {
10462306a36Sopenharmony_ci            compatible = "brcm,ns-thermal";
10562306a36Sopenharmony_ci            reg = <0x2c0 0x10>;
10662306a36Sopenharmony_ci            #thermal-sensor-cells = <0>;
10762306a36Sopenharmony_ci        };
10862306a36Sopenharmony_ci    };
109