# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/brcm,iproc-clocks.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Broadcom iProc Family Clocks

maintainers:
  - Ray Jui <rjui@broadcom.com>
  - Scott Branden <sbranden@broadcom.com>

description: |
  The iProc clock controller manages clocks that are common to the iProc family.
  An SoC from the iProc family may have several PLLs, e.g., ARMPLL, GENPLL,
  LCPLL0, MIPIPLL, and etc., all derived from an onboard crystal. Each PLL
  comprises of several leaf clocks

  ASIU clocks are a special case. These clocks are derived directly from the
  reference clock of the onboard crystal.

properties:
  compatible:
    enum:
      - brcm,bcm63138-armpll
      - brcm,cygnus-armpll
      - brcm,cygnus-genpll
      - brcm,cygnus-lcpll0
      - brcm,cygnus-mipipll
      - brcm,cygnus-asiu-clk
      - brcm,cygnus-audiopll
      - brcm,hr2-armpll
      - brcm,nsp-armpll
      - brcm,nsp-genpll
      - brcm,nsp-lcpll0
      - brcm,ns2-genpll-scr
      - brcm,ns2-genpll-sw
      - brcm,ns2-lcpll-ddr
      - brcm,ns2-lcpll-ports
      - brcm,sr-genpll0
      - brcm,sr-genpll1
      - brcm,sr-genpll2
      - brcm,sr-genpll3
      - brcm,sr-genpll4
      - brcm,sr-genpll5
      - brcm,sr-genpll6
      - brcm,sr-lcpll0
      - brcm,sr-lcpll1
      - brcm,sr-lcpll-pcie

  reg:
    minItems: 1
    items:
      - description: base register
      - description: power register
      - description: ASIU or split status register

  clocks:
    description: The input parent clock phandle for the PLL / ASIU clock. For
      most iProc PLLs, this is an onboard crystal with a fixed rate.
    maxItems: 1

  '#clock-cells':
    true

  clock-output-names:
    minItems: 1
    maxItems: 45

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - brcm,cygnus-armpll
              - brcm,nsp-armpll
    then:
      properties:
        '#clock-cells':
          const: 0
    else:
      properties:
        '#clock-cells':
          const: 1
      required:
        - clock-output-names
  - if:
      properties:
        compatible:
          contains:
            enum:
              - brcm,cygnus-armpll
              - brcm,cygnus-genpll
              - brcm,cygnus-lcpll0
              - brcm,cygnus-mipipll
              - brcm,cygnus-asiu-clk
              - brcm,cygnus-audiopll
    then:
      properties:
        clock-output-names:
          description: |
            The following table defines the set of PLL/clock index and ID for Cygnus.
            These clock IDs are defined in:
                "include/dt-bindings/clock/bcm-cygnus.h"

            Clock      	Source (Parent)	Index	ID
            -----	---------------	-----	--
            crystal	N/A		N/A	N/A

            armpll	crystal		N/A	N/A

            keypad	crystal (ASIU)	0	BCM_CYGNUS_ASIU_KEYPAD_CLK
            adc/tsc	crystal (ASIU)	1	BCM_CYGNUS_ASIU_ADC_CLK
            pwm	crystal (ASIU)		2	BCM_CYGNUS_ASIU_PWM_CLK

            genpll	crystal		0	BCM_CYGNUS_GENPLL
            axi21	genpll		1	BCM_CYGNUS_GENPLL_AXI21_CLK
            250mhz	genpll		2	BCM_CYGNUS_GENPLL_250MHZ_CLK
            ihost_sys	genpll		3	BCM_CYGNUS_GENPLL_IHOST_SYS_CLK
            enet_sw	genpll		4	BCM_CYGNUS_GENPLL_ENET_SW_CLK
            audio_125	genpll		5	BCM_CYGNUS_GENPLL_AUDIO_125_CLK
            can		genpll		6	BCM_CYGNUS_GENPLL_CAN_CLK

            lcpll0	crystal		0	BCM_CYGNUS_LCPLL0
            pcie_phy	lcpll0		1	BCM_CYGNUS_LCPLL0_PCIE_PHY_REF_CLK
            ddr_phy	lcpll0		2	BCM_CYGNUS_LCPLL0_DDR_PHY_CLK
            sdio	lcpll0		3	BCM_CYGNUS_LCPLL0_SDIO_CLK
            usb_phy	lcpll0		4	BCM_CYGNUS_LCPLL0_USB_PHY_REF_CLK
            smart_card	lcpll0		5	BCM_CYGNUS_LCPLL0_SMART_CARD_CLK
            ch5_unused	lcpll0		6	BCM_CYGNUS_LCPLL0_CH5_UNUSED

            mipipll	crystal		0	BCM_CYGNUS_MIPIPLL
            ch0_unused	mipipll		1	BCM_CYGNUS_MIPIPLL_CH0_UNUSED
            ch1_lcd	mipipll		2	BCM_CYGNUS_MIPIPLL_CH1_LCD
            ch2_v3d	mipipll		3	BCM_CYGNUS_MIPIPLL_CH2_V3D
            ch3_unused	mipipll		4	BCM_CYGNUS_MIPIPLL_CH3_UNUSED
            ch4_unused	mipipll		5	BCM_CYGNUS_MIPIPLL_CH4_UNUSED
            ch5_unused	mipipll		6	BCM_CYGNUS_MIPIPLL_CH5_UNUSED

            audiopll	crystal		0	BCM_CYGNUS_AUDIOPLL
            ch0_audio	audiopll	1	BCM_CYGNUS_AUDIOPLL_CH0
            ch1_audio	audiopll	2	BCM_CYGNUS_AUDIOPLL_CH1
            ch2_audio	audiopll	3	BCM_CYGNUS_AUDIOPLL_CH2
  - if:
      properties:
        compatible:
          contains:
            enum:
              - brcm,hr2-armpll
    then:
      properties:
        clock-output-names:
          description: |
            The following table defines the set of PLL/clock for Hurricane 2:

            Clock	Source		Index	ID
            -----	------		-----	--
            crystal	N/A		N/A	N/A

            armpll	crystal		N/A	N/A
  - if:
      properties:
        compatible:
          contains:
            enum:
              - brcm,nsp-armpll
              - brcm,nsp-genpll
              - brcm,nsp-lcpll0
    then:
      properties:
        clock-output-names:
          description: |
            The following table defines the set of PLL/clock index and ID for Northstar and
            Northstar Plus.  These clock IDs are defined in:
                "include/dt-bindings/clock/bcm-nsp.h"

            Clock	Source		Index	ID
            -----	------		-----	--
            crystal	N/A		N/A	N/A

            armpll	crystal		N/A	N/A

            genpll	crystal		0	BCM_NSP_GENPLL
            phy		genpll		1	BCM_NSP_GENPLL_PHY_CLK
            ethernetclk	genpll		2	BCM_NSP_GENPLL_ENET_SW_CLK
            usbclk	genpll		3	BCM_NSP_GENPLL_USB_PHY_REF_CLK
            iprocfast	genpll		4	BCM_NSP_GENPLL_IPROCFAST_CLK
            sata1	genpll		5	BCM_NSP_GENPLL_SATA1_CLK
            sata2	genpll		6	BCM_NSP_GENPLL_SATA2_CLK

            lcpll0	crystal		0	BCM_NSP_LCPLL0
            pcie_phy	lcpll0		1	BCM_NSP_LCPLL0_PCIE_PHY_REF_CLK
            sdio	lcpll0		2	BCM_NSP_LCPLL0_SDIO_CLK
            ddr_phy	lcpll0		3	BCM_NSP_LCPLL0_DDR_PHY_CLK
  - if:
      properties:
        compatible:
          contains:
            enum:
              - brcm,ns2-genpll-scr
              - brcm,ns2-genpll-sw
              - brcm,ns2-lcpll-ddr
              - brcm,ns2-lcpll-ports
    then:
      properties:
        clock-output-names:
          description: |
            The following table defines the set of PLL/clock index and ID for Northstar 2.
            These clock IDs are defined in:
                "include/dt-bindings/clock/bcm-ns2.h"

            Clock	Source		Index	ID
            -----	------		-----	--
            crystal	N/A		N/A	N/A

            genpll_scr	crystal		0	BCM_NS2_GENPLL_SCR
            scr		genpll_scr	1	BCM_NS2_GENPLL_SCR_SCR_CLK
            fs		genpll_scr	2	BCM_NS2_GENPLL_SCR_FS_CLK
            audio_ref	genpll_scr	3	BCM_NS2_GENPLL_SCR_AUDIO_CLK
            ch3_unused	genpll_scr	4	BCM_NS2_GENPLL_SCR_CH3_UNUSED
            ch4_unused	genpll_scr	5	BCM_NS2_GENPLL_SCR_CH4_UNUSED
            ch5_unused	genpll_scr	6	BCM_NS2_GENPLL_SCR_CH5_UNUSED

            genpll_sw	crystal		0	BCM_NS2_GENPLL_SW
            rpe		genpll_sw	1	BCM_NS2_GENPLL_SW_RPE_CLK
            250		genpll_sw	2	BCM_NS2_GENPLL_SW_250_CLK
            nic		genpll_sw	3	BCM_NS2_GENPLL_SW_NIC_CLK
            chimp	genpll_sw	4	BCM_NS2_GENPLL_SW_CHIMP_CLK
            port	genpll_sw	5	BCM_NS2_GENPLL_SW_PORT_CLK
            sdio	genpll_sw	6	BCM_NS2_GENPLL_SW_SDIO_CLK

            lcpll_ddr	crystal		0	BCM_NS2_LCPLL_DDR
            pcie_sata_usb lcpll_ddr	1	BCM_NS2_LCPLL_DDR_PCIE_SATA_USB_CLK
            ddr		lcpll_ddr	2	BCM_NS2_LCPLL_DDR_DDR_CLK
            ch2_unused	lcpll_ddr	3	BCM_NS2_LCPLL_DDR_CH2_UNUSED
            ch3_unused	lcpll_ddr	4	BCM_NS2_LCPLL_DDR_CH3_UNUSED
            ch4_unused	lcpll_ddr	5	BCM_NS2_LCPLL_DDR_CH4_UNUSED
            ch5_unused	lcpll_ddr	6	BCM_NS2_LCPLL_DDR_CH5_UNUSED

            lcpll_ports	crystal		0	BCM_NS2_LCPLL_PORTS
            wan		lcpll_ports	1	BCM_NS2_LCPLL_PORTS_WAN_CLK
            rgmii	lcpll_ports	2	BCM_NS2_LCPLL_PORTS_RGMII_CLK
            ch2_unused	lcpll_ports	3	BCM_NS2_LCPLL_PORTS_CH2_UNUSED
            ch3_unused	lcpll_ports	4	BCM_NS2_LCPLL_PORTS_CH3_UNUSED
            ch4_unused	lcpll_ports	5	BCM_NS2_LCPLL_PORTS_CH4_UNUSED
            ch5_unused	lcpll_ports	6	BCM_NS2_LCPLL_PORTS_CH5_UNUSED
  - if:
      properties:
        compatible:
          contains:
            enum:
              - brcm,sr-genpll0
              - brcm,sr-genpll1
              - brcm,sr-genpll2
              - brcm,sr-genpll3
              - brcm,sr-genpll4
              - brcm,sr-genpll5
              - brcm,sr-genpll6
              - brcm,sr-lcpll0
              - brcm,sr-lcpll1
              - brcm,sr-lcpll-pcie
    then:
      properties:
        clock-output-names:
          description: |
            The following table defines the set of PLL/clock index and ID for Stingray.
            These clock IDs are defined in:
                "include/dt-bindings/clock/bcm-sr.h"

            Clock		Source		Index	ID
            -----		------		-----	--
            crystal		N/A		N/A	N/A
            crmu_ref25m		crystal		N/A	N/A

            genpll0		crystal		0	BCM_SR_GENPLL0
            clk_125m		genpll0		1	BCM_SR_GENPLL0_125M_CLK
            clk_scr		genpll0		2	BCM_SR_GENPLL0_SCR_CLK
            clk_250		genpll0		3	BCM_SR_GENPLL0_250M_CLK
            clk_pcie_axi	genpll0		4	BCM_SR_GENPLL0_PCIE_AXI_CLK
            clk_paxc_axi_x2	genpll0		5	BCM_SR_GENPLL0_PAXC_AXI_X2_CLK
            clk_paxc_axi	genpll0		6	BCM_SR_GENPLL0_PAXC_AXI_CLK

            genpll1		crystal		0	BCM_SR_GENPLL1
            clk_pcie_tl		genpll1		1	BCM_SR_GENPLL1_PCIE_TL_CLK
            clk_mhb_apb		genpll1		2	BCM_SR_GENPLL1_MHB_APB_CLK

            genpll2		crystal		0	BCM_SR_GENPLL2
            clk_nic		genpll2		1	BCM_SR_GENPLL2_NIC_CLK
            clk_ts_500_ref	genpll2		2	BCM_SR_GENPLL2_TS_500_REF_CLK
            clk_125_nitro	genpll2		3	BCM_SR_GENPLL2_125_NITRO_CLK
            clk_chimp		genpll2		4	BCM_SR_GENPLL2_CHIMP_CLK
            clk_nic_flash	genpll2		5	BCM_SR_GENPLL2_NIC_FLASH_CLK
            clk_fs		genpll2		6	BCM_SR_GENPLL2_FS_CLK

            genpll3		crystal		0	BCM_SR_GENPLL3
            clk_hsls		genpll3		1	BCM_SR_GENPLL3_HSLS_CLK
            clk_sdio		genpll3		2	BCM_SR_GENPLL3_SDIO_CLK

            genpll4		crystal		0	BCM_SR_GENPLL4
            clk_ccn		genpll4		1	BCM_SR_GENPLL4_CCN_CLK
            clk_tpiu_pll	genpll4		2	BCM_SR_GENPLL4_TPIU_PLL_CLK
            clk_noc		genpll4		3	BCM_SR_GENPLL4_NOC_CLK
            clk_chclk_fs4	genpll4		4	BCM_SR_GENPLL4_CHCLK_FS4_CLK
            clk_bridge_fscpu	genpll4		5	BCM_SR_GENPLL4_BRIDGE_FSCPU_CLK

            genpll5		crystal		0	BCM_SR_GENPLL5
            clk_fs4_hf		genpll5		1	BCM_SR_GENPLL5_FS4_HF_CLK
            clk_crypto_ae	genpll5		2	BCM_SR_GENPLL5_CRYPTO_AE_CLK
            clk_raid_ae		genpll5		3	BCM_SR_GENPLL5_RAID_AE_CLK

            genpll6		crystal		0	BCM_SR_GENPLL6
            clk_48_usb		genpll6		1	BCM_SR_GENPLL6_48_USB_CLK

            lcpll0		crystal		0	BCM_SR_LCPLL0
            clk_sata_refp 	lcpll0		1	BCM_SR_LCPLL0_SATA_REFP_CLK
            clk_sata_refn	lcpll0		2	BCM_SR_LCPLL0_SATA_REFN_CLK
            clk_sata_350	lcpll0		3	BCM_SR_LCPLL0_SATA_350_CLK
            clk_sata_500	lcpll0		4	BCM_SR_LCPLL0_SATA_500_CLK

            lcpll1		crystal		0	BCM_SR_LCPLL1
            clk_wan		lcpll1		1	BCM_SR_LCPLL1_WAN_CLK
            clk_usb_ref		lcpll1		2	BCM_SR_LCPLL1_USB_REF_CLK
            clk_crmu_ts		lcpll1		3	BCM_SR_LCPLL1_CRMU_TS_CLK

            lcpll_pcie		crystal		0	BCM_SR_LCPLL_PCIE
            clk_pcie_phy_ref	lcpll1		1	BCM_SR_LCPLL_PCIE_PHY_REF_CLK
  - if:
      properties:
        compatible:
          contains:
            const: brcm,cygnus-genpll
    then:
      properties:
        clock-output-names:
          items:
            - const: genpll
            - const: axi21
            - const: 250mhz
            - const: ihost_sys
            - const: enet_sw
            - const: audio_125
            - const: can
  - if:
      properties:
        compatible:
          contains:
            const: brcm,nsp-lcpll0
    then:
      properties:
        clock-output-names:
          items:
            - const: lcpll0
            - const: pcie_phy
            - const: sdio
            - const: ddr_phy
  - if:
      properties:
        compatible:
          contains:
            const: brcm,nsp-genpll
    then:
      properties:
        clock-output-names:
          items:
            - const: genpll
            - const: phy
            - const: ethernetclk
            - const: usbclk
            - const: iprocfast
            - const: sata1
            - const: sata2

required:
  - reg
  - clocks
  - '#clock-cells'

additionalProperties: false

examples:
  - |
    osc1: oscillator {
        #clock-cells = <0>;
        compatible = "fixed-clock";
        clock-frequency = <25000000>;
    };

    genpll@301d000 {
        #clock-cells = <1>;
        compatible = "brcm,cygnus-genpll";
        reg = <0x301d000 0x2c>, <0x301c020 0x4>;
        clocks = <&os1c>;
        clock-output-names = "genpll", "axi21", "250mhz", "ihost_sys",
                     "enet_sw", "audio_125", "can";
    };
  - |
    osc2: oscillator {
        #clock-cells = <0>;
        compatible = "fixed-clock";
        clock-frequency = <25000000>;
    };

    asiu_clks@301d048 {
        #clock-cells = <1>;
        compatible = "brcm,cygnus-asiu-clk";
        reg = <0x301d048 0xc>, <0x180aa024 0x4>;
        clocks = <&osc2>;
        clock-output-names = "keypad", "adc/touch", "pwm";
    };
  - |
    arm_clk@0 {
        #clock-cells = <0>;
        compatible = "brcm,nsp-armpll";
        clocks = <&osc>;
        reg = <0x0 0x1000>;
    };
